[ruby-dev:45343] Re: 非同期割り込みに対する対処案(日本語版)
From:
NISHIYAMA Tomoaki <tomoakin@...>
Date:
2012-03-11 12:27:43 UTC
List:
ruby-dev #45343
6K2w6KuW44Gr44Gv5Y+C5Yqg44GX44Gm44GE44G+44Gb44KT44GM44CB5qaC6KaB44G+44Gn6Kiz 44GX44Gm44G/44G+44GX44Gf44CCDQoNCkhvdyBjYW4gYXN5bmNocm9ub3VzIGludGVycnVwdCBz dXJ2aXZlDQoNClRlcm1zDQp0cmFwIGhhbmRsZXI6IGEgYmxvY2sgdGhhdCBzaG91bGQgYmUgZXhl Y3V0ZWQgd2hlbiBhIHNpZ25hbCByZWdpc3RlcmVkIHRvIHRyYXANCgl0aGUgY29udGVudCAoLi4u KSBvZiB0cmFwKFNJR0lOVCl7Li4ufQ0KDQphc3luY2hyb25vdXMgaW50ZXJydXB0OiB1bmludGVu ZGVkIGV2ZW50IHN1Y2ggYXMgVGhyZWFkI3JhaXNlIG9yIHRyYXAgaGFuZGxlcg0KDQrmhI/lm7Pj gZfjgarjgYTjgaPjgabjgarjgpPjgYvlpInjgZjjgoPjgYLjgorjgb7jgZvjgpPvvJ8NCg0KSW50 ZXJydXB0IGNoZWNrOiBEZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW55IGFzeW5jaHJvbm91cyBleGNl cHRpb24gKOacquWumue+qSksDQoJYW5kIHJhaXNlIGFuIGVycm9yIG9yIGludm9rZSB0cmFwIGhh bmRsZXIgaWYgdGhlcmUgaXMgYW55IGV4Y2VwdGlvbi4NCg0KQmxvY2tpbmcgcHJvY2VkdXJlOiBh IHByb2NlZHVyZSB0aGF0IG1heSBiZSBibG9ja2VkIGluY2x1ZGluZyBJL08NCg0KU3VtbWFyeQ0K CVJ1Ynkgd2lsbCBwcm92aWRlIGEgcHJpbWl0aXZlIHRvIHJlZ3VsYXRlIHRoZSB0aW1pbmcgdG8g Y2hlY2sNCmZvciB0aGUgYXN5bmNocm9ub3VzIGludGVycnVwdC4gVGhyZWUga2luZHMgb2YgcmVn dWxhdGlvbiBzaG91bGQgYmUNCnByb3ZpZGVkDQoJMC4gY2hlY2sgYXMgZnJlcXVlbnRseSBhcyBw b3NzaWJsZSAodGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvdXIpDQoJMS4gY2hlY2sgYXQgYSBi bG9ja2luZyBwcm9jZWR1cmUuDQoJMi4gZG9uJ3QgY2hlY2sNCk5vdGUgdGhhdCB0aGUgYmVoYXZp b3VyIGNhbiBiZSBzcGVjaWZpZWQgcGVyIGV4Y2VwdGlvbiBjbGFzcy4NClRoZXJlZm9yZSwgU2ln bmFsRXhjZXB0aW9uIGFuZCBpdHMgZGVzY2VuZGFudHMgYXJlIGNoZWNrZWQgZnJlcXVlbnRseS4N ClRoaXMgZW5hYmxlcyB0byB3cml0ZSBhIGNvZGUgdGhhdCBDdHJsLUMgY2F1c2UgaW50ZXJydXB0 IGJ1dCANCmV4Y2VwdGlvbnMgbGlrZSBUaW1lb3V0RXJyb3IgYXJlIGRlbGF5ZWQgdG8gYSBzYWZl IHBvaW50Lg0KDQoNCk9uIDIwMTIvMDMvMTEsIGF0IDIwOjM1LCBTQVNBREEgS29pY2hpIHdyb3Rl Og0KDQo+IOOAgOOBleOBleOBoOOBp+OBme+8jg0KPiANCj4g44CA6ZaL55m65Lya6K2w44Gn5Ye6 44Gf44CM6Z2e5ZCM5pyf5Ymy44KK6L6844G/44GM44GT44Gu5YWI55Sf44GN5q6L44KL44Gr44Gv 44CN44Go44GE44GG6K2w6KuW44KS77yM44Go44KKDQo+IOOBguOBiOOBmuaXpeacrOiqnuOBp+OB vuOBqOOCgeOBvuOBl+OBn++8juOBvuOBoOOBguOBvuOCiuOBvuOBqOOBvuOBo+OBpuOBhOOBquOB hO+8iOOBmeOBv+OBvuOBm+OCk++8ieOBrg0KPiDjgafvvIzjgZnjgb/jgb7jgZvjgpPjgYzml6Xm nKzoqp7jgaflh7rjgZXjgZvjgabkuIvjgZXjgYTvvIbnqoHjgaPovrzjgpPjgafkuIvjgZXjgYTv vI4NCj4gDQo+IOOAgOOBguOBqOOBp+iLseiqnuWMluOBl+OBn+OBhOOBqOaAneOBhOOBvuOBme+8 iOOBl+OBpuOBj+OCjOOCi+OBqOWsieOBl+OBhO+8ie+8juiLseiqnuWMluOBp+OBjeOBn+OCie+8 jOS7ig0KPiDlvozjga/jgZ3jgaPjgaHjgajjgYTjgYbjgZPjgajjgafvvI4NCj4gDQo+IA0KPiAN Cj4g55So6Kqe77yaDQo+IOODu3RyYXAg44OP44Oz44OJ44Op77yadHJhcOOBp+eZu+mMsuOBmeOC i+OCt+OCsOODiuODq+OBjOadpeOBn+OBqOOBjeOBq+ihjOOBhuODluODreODg+OCrw0KPiDjgIDj gIB0cmFwKFNJR0lOVCl7IC4uLiB9IOOBriAuLi4g6YOo5YiGDQo+IA0KPiDjg7vpnZ7lkIzmnJ/l ibLjgorovrzjgb/vvJpUaHJlYWQjcmFpc2Ug44KEIHRyYXAg44OP44Oz44OJ44Op44Gq44Gp77yM 5oSP5Zuz44GX44Gq44GEDQo+IOOAgOOAgOOCpOODmeODs+ODiOOCku+8jOOBk+OBk+OBp+OBr+md nuWQjOacn+WJsuOCiui+vOOBv+OBqOWRvOOBtg0KPiDjgIDvvIjku5bjgavjgoLjgYLjgaPjgZ/j gonmlZnjgYjjgabkuIvjgZXjgYTvvIkNCj4gDQo+IOODu+WJsuOCiui+vOOBv+ODgeOCp+ODg+OC r++8mumdnuWQjOacn+S+i+WkluOBjOOBguOCi+OBi+OBqeOBhuOBi+ODgeOCp+ODg+OCr+OBl++8 jOOCguOBl+OBguOCjOOBsA0KPiDjgIDjgIDkvovlpJbjgpLnmbrnlJ/liLrjgZvjgZ/jgoogdHJh cCDjg4/jg7Pjg4njg6njgpLlrp/ooYzjgZfjgZ/jgorjgZnjgosNCj4gDQo+IOODu+ODluODreOD g+OCreODs+OCsOWHpueQhu+8mkkvTyDjgarjganjgafvvIzjg5bjg63jg4Pjgq/jgZnjgovjgYvj goLjgZfjgozjgarjgYTlh6bnkIbvvI4NCj4gDQo+IA0KPiDmpoLopoHvvJoNCj4g44CA6Z2e5ZCM 5pyf5Ymy44KK6L6844G/44KS44OB44Kn44OD44Kv44GZ44KL44K/44Kk44Of44Oz44Kw44KS5Yi2 5b6h44GZ44KLIHByaW1pdGl2ZSDjgpLmj5DkvpvjgZkNCj4g44KL77yO5Yi25b6h44Gu56iu6aGe 44Gv5qyh44Gu6YCa44KK77yMDQo+IOOAgOOAgDAuIOOBquOCi+OBueOBj+mgu+e5geOBq+ODgeOC p+ODg+OCr+OBmeOCi++8iOOBk+OCjOOBvuOBp+mAmuOCiuOBruWLleS9nO+8iQ0KPiDjgIDjgIAx LiDjg5bjg63jg4Pjgq3jg7PjgrDlh6bnkIbjga7jgr/jgqTjg5/jg7PjgrDjgaDjgZHjg4Hjgqfj g4Pjgq/jgZnjgosNCj4gICAgMi4g44OB44Kn44OD44Kv44GX44Gq44GEDQo+IOOAgOOBn+OBoOOB l++8juODgeOCp+ODg+OCr+OBmeOCi+S+i+WkluOCr+ODqeOCue+8iOOBruelluWFiO+8ieOBr+aM h+WumuOBp+OBjeOCi++8jg0KPiDjgIDjgarjga7jgafvvIxTaWduYWxFeGNlcHRpb24g77yI44KS 57aZ5om/44GX44GfIEludGVycnVwdO+8ieOBr+mgu+e5geOBq+ODgeOCp+ODg+OCr+OBmeOCi++8 jA0KPiDjgZnjgarjgo/jgaEgQ3RybCtDIOOBr+OBoOOBhOOBn+OBhOWKueOBj++8jOOBl+OBi+OB l++8jFRpbWVvdXRFcnJvciDjga7jgojjgYbjgarkvovlpJbjga/lronlhagNCj4g44Gq44Go44GT 44KN44G+44Gn6YGF5bu244GX44Gm5Yem55CG44GZ44KL44Go44GE44Gj44Gf5oyZ5YuV44GM5a65 5piT44Gr6KiY6L+w44Gn44GN44KL77yODQo+IA0KPiANCj4g6IOM5pmv77yaDQo+IOOAgFRocmVh ZCNyYWlzZSDjgpLkvb/jgYbjgajvvIzjgrnjg6zjg4Pjg4njgavlr77jgZfjgabjgYTjgo3jgpPj garjgaHjgofjgaPjgYvjgYTjgpLlh7rjgZnjgZPjgajjgYwNCj4g44Gn44GN44KL77yO44G+44Gf 77yMdHJhcChzaWduYWwpey4uLn0g44Go44GZ44KL44Go77yM5Lu75oSP44Gu44K344Kw44OK44Or 44Gr44Gk44GE44Gm5a++5b+c44GZ44KLDQo+IOOBk+OBqOOBjOOBp+OBjeOCi++8jg0KPiANCj4g ICMg5L6LMQ0KPiAgdGggPSBUaHJlYWQubmV3ew0KPiAgICBiZWdpbg0KPiAgICAgIC4uLg0KPiAg ICByZXNjdWUgTmFudG9rYUVycm9yDQo+ICAgICAgLi4uDQo+ICAgIGVuZA0KPiAgfQ0KPiAgdGgu cmFpc2UoTmFudG9rYUVycm9yKSAjPT4gdGgg44GrIE5hbnRva2FFcnJvciDjgpLlvLfliLbnmoTj gavlvJXjgY3otbfjgZPjgZkNCj4gDQo+IA0KPiAgIyDkvosyDQo+ICBxID0gUXVldWUubmV3DQo+ ICB0aDEgPSBUaHJlYWQubmV3ew0KPiAgICBxIDw8IGNhbGNfaW5fYWxnb3JpdGhtMQ0KPiAgfQ0K PiAgdGgyID0gVGhyZWFkLm5ld3sNCj4gICAgcSA8PCBjYWxjX2luX2FsZ29yaXRobTINCj4gIH0N Cj4gIHJlc3VsdCA9IHEucG9wDQo+ICB0aDEucmFpc2UoVGVybWluYXRlQ2FsY0Vycm9yKQ0KPiAg dGgyLnJhaXNlKFRlcm1pbmF0ZUNhbGNFcnJvcikNCj4gICMg44Ki44Or44K044Oq44K644OgMe+8 jDIg44Gn6KiI566X44GX44Gm77yM44Gp44Gh44KJ44GL5YWI44Gr562U44GI44GM5Ye644Gf44KJ 77yMDQo+ICAjIOOCguOBhjHjgaTjga7jgbvjgYbjgpLmraLjgoHjgosNCj4gDQo+IA0KPiAgIyDk voszDQo+ICB0cmFwKFNJR0lOVCl7DQo+ICAgICMg5L2V44GL5b6M5Yem55CGDQo+ICB9DQo+ICB0 cmFwKFNJR0hVUCl7DQo+ICAgICMg5L2V44GLIHJlbG9hZCDlh6bnkIYNCj4gIH0NCj4gIHNlcnZl cl9leGVjICMg44K144O844OQ44Gu5Yem55CGDQo+IA0KPiDjgIDjgarjgYrvvIznj77lnKjjga7l ibLjgorovrzjgb/jg4Hjgqfjg4Pjgq/jga/vvIxSVUJZX1ZNX0NIRUNLX0lOVFMoKSDjgafooYzj gaPjgabjgYrjgorvvIzjg6ENCj4g44K944OD44OJ44Gu6LW35YuV5pmC77yM44Oq44K/44O844Oz 5pmC77yM5YmN5pa544G444Gu44K444Oj44Oz44OX5pmC77yM44OW44Ot44OD44Kt44Oz44Kw5Yem 55CG44Gu5YmN5b6M44GnDQo+IOihjOOBo+OBpuOBhOOCi++8jg0KPiANCj4gDQo+IOWVj+mhjOeC ue+8mg0KPiANCj4g44CAVGhyZWFkI3JhaXNlIOOBoOOBqOOBi+OBjOS4iuOBjOOBo+OBpuOBj+OC i+OCv+OCpOODn+ODs+OCsOOBr+WItuW+oeOBp+OBjeOBquOBhOOBruOBp++8jOS+i+OBiOOBsA0K PiBlbnN1cmUg5Lit44Gn5b6M5Yem55CG44KS44GX44Gm44GE44Gf5aC05ZCI44Gr5Zuw44KL77yO DQo+IA0KPiDjgIDkvovjgYjjgbDvvIzkvos0IOOBryB0aW1lb3V0IOOBruWun+ijhe+8iOOBruew oeeVpeeJiO+8ieOBp+OBmeOBjO+8jHlpZWxkIOOBp+i1t+WLleOBl+OBn+ODlg0KPiDjg63jg4Pj gq/kuK3jgafvvIxlbnN1cmUg44KS55So44GE44Gm5L2V44GL6LOH5rqQ44Gu5b6M5aeL5pyr44KS 44GX44Gm44GE44Gf44Go44GX44Gm44KC77yM44Gd44Gu5b6M5aeLDQo+IOacq+S4reOBq++8iGVu c3VyZSDnr4Dlrp/ooYzkuK3jgavvvIlUaW1lb3V0RXJyb3Ig44GM55m655Sf44GX44Gm44GX44G+ 44GG5Y+v6IO95oCn44GM44GC44KL77yODQo+IA0KPiAgIyDkvos0DQo+ICBkZWYgdGltZW91dChz ZWMpDQo+ICAgIHRpbWVyX3RocmVhZCA9IFRocmVhZC5uZXcoVGhyZWFkLmN1cnJlbnQpe3xwYXJl bnR8DQo+ICAgICAgc2xlZXAoc2VjKQ0KPiAgICAgIHBhcmVudC5yYWlzZShUaW1lb3V0RXJyb3Ip DQo+ICAgIH0NCj4gICAgYmVnaW4NCj4gICAgICB5aWVsZA0KPiAgICBlbnN1cmUNCj4gICAgICB0 aW1lcl90aHJlYWQuc3RvcCAjIGNsb3NlIHRocmVhZA0KPiAgICBlbmQNCj4gIGVuZA0KPiANCj4g IHRpbWVvdXQoMyl7DQo+ICAgIGJlZ2luDQo+ICAgICAgZiA9IG9wZW4oLi4uKSAgIyBvcGVuKC4u Lil7fGZ8IC4uLn0g44Gn44GE44GE44KT44Gg44GR44Gp77yM44G+44GB5L6L44Go44GX44GmDQo+ ICAgIGVuc3VyZQ0KPiAgICAgIGYuY2xvc2UNCj4gICAgZW5kDQo+ICB9DQo+IA0KPiAg44Gn44Gv 77yMZW5zdXJlIOOBoOOBkeOBp+OBhOOBhOOBruOBi++8jOOBqOOBhOOBhuOBqO+8jOOBneOCjOS7 peWkluOBq+OCguWVj+mhjOOBjOOBguOCi++8juS+i+OBiOOBsA0KPiDmrKHjgavnpLrjgZnkvos1 44Gr44Gk44GE44Gm6ICD44GI44KL77yODQo+IA0KPiAgIyDkvos1DQo+ICBiZWdpbg0KPiAgICBm ID0gb3BlbiguLi4pDQo+ICBlbnN1cmUNCj4gICAgZi5jbG9zZSBpZiBmDQo+ICBlbmQNCj4gDQo+ IOOAgG9wZW4oLi4uKSDjgafplovjgYTjgZ/jgoLjga7jgpLvvIwiZiA9IiDjgafjg63jg7zjgqvj g6vlpInmlbDjgavku6PlhaXjgYzlrozkuobjgZnjgovliY3jgavlibLjgooNCj4g6L6844G+44KM 44Gf44Go44GN77yMZiDjga8gbmlsIOOBruOBvuOBvuOBquOBruOBpyBlbnN1cmUg44GnIGNsb3Nl IOOBleOCjOOBquOBhO+8juOBk+OBruS+i+OBrg0KPiBGaWxlIOOBruWgtOWQiOOBryBHQyDjgafp lonjgZjjgovjgZPjgajjgoLlj6/og73jgaDjgYzvvIzop6PmlL7jgpLlv4XpoIjjgajjgZnjgovo s4fmupDkuIDoiKzjgpLogIPjgYgNCj4g44KL44Go5ZWP6aGM44Gn44GC44KL77yODQo+IA0KPiDj gIDjgZPjga7ngrnjgavjgaTjgYTjgabvvIzkvovjgYjjgbDvvIzooYzmnKvjgb7jgaflibLjgoro vrzjgb/jgpLoqLHjgZXjgarjgYTvvIjooYzmnKvjgaDjgZHjg4Hjgqfjg4Pjgq/jgZkNCj4g44KL 77yJ77yM44Go44GE44Gj44Gf6Kej5rG65qGI44KC5o+Q5qGI44GV44KM44Gf44GM77yMImYgPSIg 44KEICJvcGVuKC4uLikiIOOBjOOCguOBo+OBqOikh+mbkQ0KPiDjgaDjgaPjgZ/loLTlkIjvvIzj gZ3jga7op6Pmsbrjgafjga/nhKHnkIbjgafjgYLjgovvvIjkvovjgYjjgbDvvIwiZm9vLmJhciA9 IiDjga/opIfmlbDooYzjga7jg6Hjgr3jg4MNCj4g44OJ44Gu5aC05ZCI44GM44GC44KL77yJ77yO DQo+IA0KPiANCj4g5o+Q5qGI77yaDQo+IOOAgOmdnuWQjOacn+WJsuOCiui+vOOBv+OCkuODgeOC p+ODg+OCr+OBmeOCi+OCv+OCpOODn+ODs+OCsOOCkuWItuW+oeOBmeOCi+OBn+OCgeOBruS7lee1 hOOBv+OCkuaWsOioreOBmQ0KPiDjgovvvI7ljp/moYjjga8gWzFdIOOBq+OBguOCi+OBqOOBiuOC iu+8juOBn+OBoO+8jOWQjeWJjeOBq+OBpOOBhOOBpuOBr+S7iuW+jOaknOiojuOBmeOCi++8jg0K PiANCj4g44CA5Yi25b6h44Gu56iu6aGe44Gv5qyh44Gu6YCa44KK77yMDQo+IOOAgOOAgDAuIOOB quOCi+OBueOBj+mgu+e5geOBq+ODgeOCp+ODg+OCr+OBmeOCi++8iOOBk+OCjOOBvuOBp+mAmuOC iuOBruWLleS9nO+8iQ0KPiDjgIDjgIAxLiDjg5bjg63jg4Pjgq8gSS9PIOOBruOCv+OCpOODn+OD s+OCsOOBoOOBkeODgeOCp+ODg+OCr+OBmeOCiw0KPiAgICAyLiDjg4Hjgqfjg4Pjgq/jgZfjgarj gYQNCj4gDQo+IOOAgDAg44Gv44GT44KM44G+44Gn6YCa44KK77yODQo+IA0KPiDjgIAxIOOBr++8 jFBPU0lYIHRocmVhZCDjga4gY2FuY2VsbGF0aW9uIHBvaW50IOOCieOBl+OBhO+8jumVt+aZgumW k+ODluODreODg+OCr+OBmeOCi+WHpg0KPiDnkIbjga8gVGhyZWFkI3JhaXNlIOOChOOCt+OCsOOD iuODq+OBp+OCreODo+ODs+OCu+ODq+OBmeOCi+OBk+OBqOOBjOWPr+iDve+8jg0KPiANCj4g44CA MiDjga/vvIzkuIDliIfjg4Hjgqfjg4Pjgq/jgZfjgarjgYTvvI7lrozlhajjgavpnZ7lkIzmnJ/l ibLjgorovrzjgb/jgrvjg7zjg5Xjgavlh6bnkIbjgZnjgovjgZPjgajjgYzlj6/og73vvI4NCj4g DQo+IOOAgOOBn+OBoOOBl++8juODgeOCp+ODg+OCr+OBmeOCi+S+i+WkluOCr+ODqeOCue+8iOOB ruelluWFiO+8ieOBr+aMh+WumuOBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi++8juOBk+OCjOOBqw0K PiDjgojjgorvvIzkvovjgYjjgbAgU2lnbmFsRXhjZXB0aW9uIO+8iOOCkue2meaJv+OBl+OBnyBJ bnRlcnJ1cHTvvInjga/poLvnuYHjgavjg4Hjgqfjg4Pjgq/jgZkNCj4g44KL77yM44GZ44Gq44KP 44GhIEN0cmwrQyDjga/jgaDjgYTjgZ/jgYTlirnjgY/vvIzjgZfjgYvjgZfvvIxUaW1lb3V0RXJy b3Ig44Gu44KI44GG44Gq5L6L5aSW44GvDQo+IOWuieWFqOOBquOBqOOBk+OCjeOBvuOBp+mBheW7 tuOBl+OBpuWHpueQhuOBmeOCi+OBqOOBhOOBo+OBn+aMmeWLleOBjOWuueaYk+OBq+iomOi/sOOB p+OBjeOCi++8jg0KPiANCj4gDQo+IOitsOirlu+8mg0KPiANCj4g44O744OH44OV44Kp44Or44OI 44KS44Gp44Gu44Oi44O844OJ77yI5YmN56+AIDDvvZ4yIOOBruOBk+OBqO+8ieOBq+OBmeOCi+OB i++8nw0KPiDjgIDjg7vjg6Ljg7zjg4kgMSDjgaflm7Djgovkurrjga/jganjgozjgY/jgonjgYTj gYTjgovjgYvvvJ8NCj4g44CA77yI44GE44Gq44GE44Gq44KJ44OH44OV44Kp44Or44OI44GT44KM 44Gn44GE44GE44KT44Gn44Gv77yf77yJDQo+IOOAgOODu+ioiOeul+OCueODrOODg+ODieOBr+at ouOCgeOBpuOCguWbsOOCieOBquOBhOOBruOBp++8jOS+izLjga7jgojjgYbjgarloLTlkIjjga/j gZPjgozjgb7jgacNCj4g44CA44CA6YCa44KK5q2i44KB44Gf44GE77yM44Go44GE44GG77yM44Oi 44O844OJIDAg44KS5pyf5b6F44GZ44KL5L6L44Gv44GC44KL77yODQo+IOODu2Vuc3VyZSDlrp/o oYzmmYLjgavoh6rli5XnmoTjgavjg6Ljg7zjg4njgpLlpInmm7TjgZnjgovjgYvvvJ8NCj4gDQo+ IOKAu+OBiOOBiOOBqO+8jOOBmeOBv+OBvuOBm+OCk++8jOOBhOOCjeOCk+OBquitsOirluOBjOOB guOBo+OBn+OBqOaAneOBhOOBvuOBl+OBn+OBjO+8jOiqsOOBi+ijnOWujOOBl+OBpuS4iw0KPiDj gZXjgYQuLi7vvI4NCj4gDQo+IA0KPiDkvZnoq4fvvIjjgajjgYTjgYbjgYsgVE9ET++8ie+8mg0K PiDjgIByYl9ibG9ja2luZ19yZWdpb24oKSDmmYLjgavlvLfliLbnmoTjgavntYLkuobmmYLjgasg Q0hFQ0tfSU5UUygpIOOBl+OBpuOBhOOCi+OBruOBr+OBkQ0KPiDjgZfjgYvjgonjgpPjga7jgafv vIxDSEVDS19JTlRTKCkg44KS5ZG844Gz5Ye644GX5YG044Gn44GV44Gb44KL44OQ44O844K444On 44Oz44KS5L2c44KL44G544GN44Gn44GC44KL77yODQo+IA0KPiDjgIDkvovjgYjjgbDvvIwNCj4g DQo+ICBibG9ja2luZ19yZWdpb257DQo+ICAgIGRhdGEgPSByZWFkKC4uLikNCj4gIH0NCj4gDQo+ ICDjgajjgYLjgaPjgZ/jgajjgY3vvIxkYXRhIOOBjOWIsOmBlOOBl+OBpuOBhOOCi+OBruOBquOC ieOBsO+8jOWJsuOCiui+vOOCk+OBp+assuOBl+OBj+OBquOBhOOBr+OBmuOBpw0KPiDjgYLjgovv vI7jgZ/jgaDjgZfvvIxkYXRhIOOBjOWIsOmBlOOBmeOCi+WJjeOBq+WJsuOCiui+vOOBv+OBp+S4 reaWreOBl+OBpuOBhOOCjOOBsO+8jENIRUNLX0lOVFMoKQ0KPiDjgavjgojjgorkvovlpJbjgpLn mbrnlJ/jgZXjgZvjgovjgbnjgY3jgafjgYLjgovvvI7jgZPjga7liKTmlq3jga8gcmJfYm9ja2lu Z19yZWdpb24oKSDliKnnlKjogIUNCj4g44GX44GL44Gn44GN44Gq44GE44Gu44Gn77yM44Gd44Gu 5Yik5pat44KS44GV44Gb44KL44G544GN44Gn44GC44KL77yODQo+IA0KPiANCj4g5Y+C6ICD5paH 54yu77yaDQo+IFsxXSBBa2lyYSBUYW5ha2EgIlJlOiBUaHJlYWQjcmFpc2UsIFRocmVhZCNraWxs LCBhbmQgdGltZW91dC5yYiBhcmUNCj4gdW5zYWZlIiBydXR5LXRhbGsgKDIwMDguMykNCj4gaHR0 cDovL2JsYWRlLm5hZ2Fva2F1dC5hYy5qcC9jZ2ktYmluL3NjYXQucmIvcnVieS9ydWJ5LXRhbGsv Mjk0OTE3DQo+IA0KPiANCj4g6Kyd6L6e77yaDQo+IOOAgOOBk+OBruitsOirluOBr++8jDMvMTEg MTA6MDDjgYvjgonplovlgqzjgZXjgozjgZ9SdWJ56ZaL55m66ICF5Lya6K2w44Gn6KGM44KP44KM 44G+44GX44Gf77yO5Y+C5YqgDQo+IOiAheOBr+eUsOS4reOBleOCk++8jG5haGkg44GV44KT77yM 44Gf44KL44GE44GV44KT77yMbXJrbiDjgZXjgpPvvIxza3lwZSDotorjgZfjgavlsI/ltI7jgZXj gpPvvIzkuK0NCj4g55Sw44GV44KT77yMc29yYSDjgZXjgpPvvIzpgaDol6TjgZXjgpPjgafjgZfj gZ/vvI7mnJ3jgoLjga/jgojjgYvjgonjgYLjgorjgYzjgajjgYbjgZTjgZbjgYTjgb7jgZfjgZ/v vI4NCj4gDQo+IC0tIA0KPiAvLyBTQVNBREEgS29pY2hpIGF0IGF0ZG90IGRvdCBuZXQNCj4gDQo+ IA0KDQo=