卡通卫衣女套头 秋冬
2016-05-27 12:34:54
ICRrZXlOYW1lID0n5Y2h6YCa5Y2r6KGj5aWz5aWX5aS0IOeni+WGrCc7IAoKZnVuY3Rpb24gQXBw X0dldExpbmsoKXsJCglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5y YW5kKDEwMDAwMDAwLDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCmZ1bmN0aW9uIEFwcF9HZXRTZWxm KCl7CglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAw MDAwLDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCgovL8K3wrXCu8OYw43CvMOGwqwKZnVuY3Rpb24g Z2V0SW1nKCl7CglyZXR1cm4gJ2h0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2ltZy8yMDE1MTEwNi9s cScucmFuZCgxLDIwKS4iLmpwZyI7Cn0KCgoKCmZ1bmN0aW9uIHJuZFN0cigkbGVuZ3RoPTgpewoJ JHN0ciA9IG51bGw7Cgkkc3RyUG9sID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 d3h5eiI7CgkkbWF4ID0gc3RybGVuKCRzdHJQb2wpLTE7Cglmb3IoJGk9MDskaTwkbGVuZ3RoOyRp KyspewoJCSRzdHIuPSRzdHJQb2xbcmFuZCgwLCRtYXgpXTsKCX0KCXJldHVybiAkc3RyOwp9Cgpj bGFzcyBjb3JlQXBwQ2FjaGV7CgkKCXB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZmlsZSwkZmlsZW5h bWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsc2VsZjo6ZW5jb2RlKCRm aWxlKSk7Cgl9CglwdWJsaWMgZnVuY3Rpb24gd3JpdGVub2NvZGUoJGZpbGUsJGZpbGVuYW1lKXsK CQlyZXR1cm4gZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCRmaWxlKTsKCX0KCXB1YmxpYyBm dW5jdGlvbiByZWFkKCRmaWxlbmFtZSl7CgkJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygk ZmlsZW5hbWUpOwoJCWlmKHN0cmlzdHIoJGNvbnRlbnQsIjwvZXhwbG9kZT4iKSl7CgkJCSRjb250 ZW50ID0gc2VsZjo6Y3V0KCRjb250ZW50LCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJfQoJ CXJldHVybiBzZWxmOjpkZWNvZGUoJGNvbnRlbnQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbmNv ZGUoJGZpbGUpewoJCXJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3Moc2VyaWFsaXplKCRm aWxlKSkpOyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCRmaWxlKXsKCQlyZXR1cm4gdW5z ZXJpYWxpemUoZ3p1bmNvbXByZXNzKGJhc2U2NF9kZWNvZGUoJGZpbGUpKSk7IAoJfQoJCglwdWJs aWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUo JGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQly ZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoKCgoKJG15X2NvbnRlbnQ9Jyc7CmlmKCFlbXB0eSgk a2V5TmFtZSkpewoJJHF1ZXJ5X2RhdGEgPSBhcnJheSgncSc9PiRrZXlOYW1lLCk7CgkkbXlfYWxp bWFtYSA9IG5ldyBhbGltYW1hKCRxdWVyeV9kYXRhKTsKCSRteV9hbGltYW1hLT5xdWVyeSgpOwoJ JG15X2NvbnRlbnQgPSAkbXlfYWxpbWFtYS0+aHRtbCgpOwp9CiRkYXRhID0gc3RyX3JlcGxhY2Uo JzxwaHB1bD48L3BocHVsPicsJG15X2NvbnRlbnQsJGRhdGEpOwppZihzdHJwb3MoJGRhdGEsIltp dGVtOm1lbnVdIikhPT0gZmFsc2UmJiFlbXB0eSgka2V5TmFtZSkpewoJJHRhZ191cmwgPSAnaHR0 cHM6Ly9zdWdnZXN0LnRhb2Jhby5jb20vc3VnP2NvZGU9dXRmLTgmcT0nLnVybGVuY29kZSgka2V5 TmFtZSk7CgkkdGFnX2NvbnRlbnQgPSBhbGltYW1hOjpIdHRwVmlzaXQoJHRhZ191cmwpOwoJJHRh Z19qc29uID0ganNvbl9kZWNvZGUoJHRhZ19jb250ZW50LHRydWUpOwoJJHRhZ19tZW51ID0gJyc7 Cglmb3JlYWNoICgkdGFnX2pzb25bJ3Jlc3VsdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJJGh0 dHBfaG9zdCA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsn UEhQX1NFTEYnXTsKIAkJJHRhZ19pdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3Nl bGYuJz9rZXlOYW1lPScudXJsZW5jb2RlKCR2YWx1ZVswXSk7CgkJJHRhZ19tZW51ID0gJHRhZ19t ZW51Lic8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJy4kdGFnX2l0ZW1fdXJsLiciPicuJHZhbHVl WzBdLic8L2E+JzsKCX0KCSRkYXRhID0gc3RyX3JlcGxhY2UoJ1tpdGVtOm1lbnVdJywkdGFnX21l bnUsJGRhdGEpOwp9CgpjbGFzcyBhbGltYW1hewoJCglwdWJsaWMgJHNob3dfc3BpZGVyOwoJcHVi bGljICRqdW1wX3JlZjsKCXB1YmxpYyAkaHR0cF9yZWZfZmlsdGVyOwoJcHVibGljICRqdW1wX3Vy bCA9ICIiOwoJcHVibGljICRkb21haW4gPSAiIjsKCXB1YmxpYyAkY29uZGl0aW9uID0gIiI7Cglw dWJsaWMgJGFwcF9zZXJ2ZXIgPSAiIjsKCXB1YmxpYyAkbG9nX3NwaWRlciA9ICIiOwoJcHVibGlj ICRjdXJfc3BpZGVyID0gIiI7CglwdWJsaWMgJGFsbG93X2lwID0gIiI7CglwdWJsaWMgJGlzQ2Fj aGUgPSBmYWxzZTsKCXB1YmxpYyAkY3Jhd2xfdXJsID0gImh0dHA6Ly9wdWIuYWxpbWFtYS5jb20v aXRlbXMvc2VhcmNoLmpzb24iOwoJcHVibGljICRxdWVyeV9kYXRhOwoJcHVibGljICRjb250ZW50 OwoKCXB1YmxpYyAkbGlfdGVtcGxhdGU9IjxsaT4KICA8ZGl2IGNsYXNzPSdsaV9saXN0JyBvbm1v dXNlb3Zlcj0ndGhpcy5jbGFzc05hbWU9J2xpX2hvdmVyJycgb25tb3VzZW91dD0ndGhpcy5jbGFz c05hbWU9J2xpX2xpc3QnJz4KICAgIDxkaXYgY2xhc3M9J25ldyc+PC9kaXY+CiAgICA8ZGl2IGNs YXNzPSdjb2xsZWN0Jz48YSBocmVmPSdqYXZhc2NyaXB0OjsnPjwvYT48L2Rpdj4KICAgIDxkaXYg Y2xhc3M9J3BpYyc+PGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz4gPGltZyBzcmM9J3tw aWN1cmx9Jz48L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0aXRsZSc+IDxhIGhyZWY9J3t1cmx9 JyB0YXJnZXQ9J19ibGFuayc+e3RpdGxlfTwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J21vbmV5 X2JnJz4gCgkgICAgPHNwYW4+PGVtIGNsYXNzPSdtb25leV9zeW1ib2wnPu+/pTwvZW0+PGVtIGNs YXNzPSdtb25leV9udW0nPntwcmljZX08L2VtPjwvc3Bhbj4gCgkgICAgPHNwYW4gY2xhc3M9J2Z4 X21vbmV5X2JnJz4gPGVtIGNsYXNzPSd6aGVrb3UgaXRlbScgc3R5bGU9J3Zpc2liaWxpdHk6IHZp c2libGU7Jz48Yj57bmlja308L2I+PC9lbT4gCgkgICAgPGVtIGNsYXNzPSdxaWFuZ291Jz48L2Vt PiAKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbV9iZyc+CiAgICAgIDxkaXYg Y2xhc3M9J3RqcF9ib3R0b20nPgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF9mYWJ1IGNvbG9yXzk5 Jz57dG90YWxGZWV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX3hpYW9iaWFuIGNvbG9y XzY2Jz57dG90YWxOdW19PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+Cjwv bGk+ICI7CgoJLy/lrprkuYnmnoTpgKDlh73mlbDvvIznlKjkuo7liJ3lp4vljJbotYvlgLwKICAg IGZ1bmN0aW9uIF9fY29uc3RydWN0KCRxdWVyeV9kYXRhKQogICAgewogICAgICAgICAkdGhpcy0+ cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRhOyAgICAgICAgLy/ov5nph4zlt7Lnu4/kvb/nlKjkuoZ0 aGlz5oyH6ZKI6K+t5Y+l4pGgCiAgICB9CgoJcHVibGljIGZ1bmN0aW9uIHNldFF1ZXJ5RGF0YSgk cXVlcnlfZGF0YSl7CgkJJHRoaXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsKCQlyZXR1cm4g dHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHRtbCgpewoJCSRjb250ZW50ID0gJHRoaXMtPmNv bnRlbnQ7CgkJJGFsaW1hbWFfanNvbiA9IGpzb25fZGVjb2RlKCRjb250ZW50LHRydWUpOwoJCSRo dG1sID0gIjx1bD4iOwoJCWZvcmVhY2ggKCRhbGltYW1hX2pzb25bJ2RhdGEnXVsncGFnZUxpc3Qn XSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJIAkJJGl0ZW1fdXJsPSR2YWx1ZVsnYXVjdGlvblVybCdd OwoJIAkJJGl0ZW1fdGl0bGU9JHZhbHVlWyd0aXRsZSddOwoJIAkJJGl0ZW1fcHJpY2U9JHZhbHVl Wyd6a1ByaWNlJ107CgkgCQkkaXRlbV9waWN0VXJsPSR2YWx1ZVsncGljdFVybCddLidfNDAweDQw MF8ud2VicCc7CgkgCQkkaXRlbV9uaWNrPSR2YWx1ZVsnbmljayddOwoJIAkJJGl0ZW1fdG90YWxO dW09J+aAu+mUgOmHjzonLiR2YWx1ZVsndG90YWxOdW0nXTsKCSAJCSRpdGVtX3RvdGFsRmVlPSfm gLvkuqTmmJPpop06Jy4kdmFsdWVbJ3RvdGFsRmVlJ107CgoJCQkkaHR0cF9ob3N0ID0gJF9TRVJW RVJbJ0hUVFBfSE9TVCddOwogCQkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Cgkg CQkkaXRlbV91cmw9J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/Z290dT0nLmJhc2U2 NF9lbmNvZGUoJGl0ZW1fdXJsKTsKCgkgCQkkaXRlbV9waWN0VXJsPSdodHRwOi8vaS5rYW50dS5p bi8nLmJhc2U2NF9lbmNvZGUoJGl0ZW1fcGljdFVybCk7CgoJCQkkbGkgPSAkdGhpcy0+bGlfdGVt cGxhdGU7CgoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGl0ZW1fdGl0bGUsJGxpKTsK CQkJJGxpID0gc3RyX3JlcGxhY2UoJ3twcmljZX0nLCRpdGVtX3ByaWNlLCRsaSk7CgkJCSRsaSA9 IHN0cl9yZXBsYWNlKCd7dXJsfScsJGl0ZW1fdXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNl KCd7cGljdXJsfScsJGl0ZW1fcGljdFVybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3Rv dGFsTnVtfScsJGl0ZW1fdG90YWxOdW0sJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3tuaWNr fScsJGl0ZW1fbmljaywkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsRmVlfScsJGl0 ZW1fdG90YWxGZWUsJGxpKTsKCgkJCSRodG1sID0gJGh0bWwuJGxpOwoJIAkJLy8gZWNobyAkbGk7 CgkgCX0KCSAJJGh0bWwgPSAkaHRtbC4iPC91bD4iOwoJCXJldHVybiAkaHRtbDsKCX0KCglwdWJs aWMgZnVuY3Rpb24gcXVlcnkoKXsKCQkkdXJsICA9ICR0aGlzLT5jcmF3bF91cmwuJz8nLmh0dHBf YnVpbGRfcXVlcnkoJHRoaXMtPnF1ZXJ5X2RhdGEpOwoJCSR0aGlzLT5jb250ZW50ID0gJHRoaXMt Pkh0dHBWaXNpdCgkdXJsKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCl7CgkJJHRoaXMtPmRv bWFpbiA9ICR0aGlzLT5nZXRTZXJ2ZXJOYW1lKCk7CgkJJHRoaXMtPmp1bXBfcmVmID0gZXhwbG9k ZSgifCIsImJhaWR1LnxoYW9zby58aGFvc291LnxiaW5nLnxzby58c29nb3UufHNvc28uIik7CgkJ JHRoaXMtPmh0dHBfcmVmX2ZpbHRlciA9IGV4cGxvZGUoInwiLCJpbnVybDp8c2l0ZTp8c2l0ZSUz QXxpbnVybCUzQSIpOwoJCSR0aGlzLT5hbGxvd19pcCA9ICIyMjIuMTg0LjIzNHwxMTIuODcuNzF8 NTguMjIxLjg3Lnw0OS42Ny4yMjMiOwoJCSR0aGlzLT5jb25kaXRpb24gPSAoJF9HRVRbJ2FpZCdd ID4gMTAwMDAwMDAgJiYgJHRoaXMtPmlzQWxsb3dkSXAoKSk7CgkJJHRoaXMtPmFwcF9zZXJ2ZXIg PSAiIjsKCQkkdGhpcy0+aXNDYWNoZSAgPSBGYWxzZTsKCQlpZigkdGhpcy0+aXNTcGlkZXIoKSAm JiAkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJCWlmKCR0aGlzLT5jb25kaXRpb24pewoJCQkJCWlm KCR0aGlzLT5pc0NhY2hlKXsKCQkJCQkJJHJlbHNldF9ob3N0ID0gJHRoaXMtPmdldFNlcnZlck5h bWUoKTsKCQkJCQkJJGRpciA9IChzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAnV0lOJyA/ICdDOi93 aW5kb3dzL3RlbXAvJyA6ICcvdG1wLycpIC4gc3Vic3RyKG1kNSgkcmVsc2V0X2hvc3QpLCAyNikg LiBjaHIoNDcpOwoJCQkJCQkkY2FjaGVGaWxlID0gJGRpci4nc2Vzc18nIC4gc3Vic3RyKG1kNSho dHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKSksIDYpOwoJCQkJCQlpZighQGZpbGVfZXhpc3RzKCRkaXIp KXsKICAgICAgICAgICAgIAkJCQkgbWtkaXIoJGRpciwgMDc3Nyk7CiAgICAgICAgICAgIAkJCX0K CQkJCQkJaWYoQGZpbGVfZXhpc3RzKCRjYWNoZUZpbGUpICYmIEBmaWxlc2l6ZSAoJGNhY2hlRmls ZSkgPiAzMiApewoJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6cmVhZCgkY2FjaGVGaWxlKTsK CQkJCQkJCSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJ CQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5LiJ9 IjsKCQkJCQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCX0K CQkJCQkJCWVjaG8gJHBhZ2U7CgkJCQkJCQlleGl0KCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJ CQl7CQoJCQkJCQkJLy/CsMO8wrrCrMK9w7hBUFDCvMK0wr/DiQoJCQkJCQkJJGN1cnJlbnRQYWdl ID0gaW5jbHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJCWlmKCRjdXJyZW50UGFnZSAmJiBz dHJsZW4oJGN1cnJlbnRQYWdlKSA+IDMyICYmIHN0cmlzdHIoJGN1cnJlbnRQYWdlLCI8L2V4cGxv ZGU+IikpewoJCQkJCQkJCSR2YXIgPSBzZWxmOjpjdXQoJGN1cnJlbnRQYWdlLCI8ZXhwbG9kZT4i LCI8L2V4cGxvZGU+Iik7CgkJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6ZGVjb2RlKCR2YXIp OwoJCQkJCQkJCSRwYWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJ CQkJCQkJCWZvcmVhY2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJCSRmbGFnID0gInsiLiRr ZXkuIn0iOwoJCQkJCQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJ CQkJCQl9CgkJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCQlAY29yZUFwcENhY2hlOjp3cml0ZW5v Y29kZSgkY3VycmVudFBhZ2UsJGNhY2hlRmlsZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZGll KCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1ZGUo QVBQX0pBQ0tfQVBQRklMRSk7CgkJCQkJCWVjaG8gJGN1cnJlbnRQYWdlOwoJCQkJCQlkaWUoKTsK CQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgoJCQkJCSR0aGlzLT5fdW5jb25kaXRpb25faG9v aygpOwoJCQkJfQoJCX0KCQllbHNlCgkJewkKCQkJaWYoJHRoaXMtPmlzUmVmKCkgJiYgJHRoaXMt PmNvbmRpdGlvbil7CgkJCQkkdGhpcy0+SnVtcCgpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRo aXMtPl91blNwaWRlcl9ob29rKCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQWxs b3dkSXAoKXsKCQkkaXAgPSAkdGhpcy0+Y2xpZW50SXAoKTsKCQkkbm9uX2xpc3QgPSBleHBsb2Rl KCJ8IiwkdGhpcy0+YWxsb3dfaXApOwoJCWZvcmVhY2goJG5vbl9saXN0IGFzICRpcGxpc3QpewoJ CQlpZihAc3RyaXN0cigkaXAsJGlwbGlzdCkpewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJ CXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjbGllbnRJcCgpewoJCWlmKGdldGVu dignSFRUUF9DTElFTlRfSVAnKSAmJiBzdHJjYXNlY21wKGdldGVudignSFRUUF9DTElFTlRfSVAn KSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7 CgkJfSBlbHNlaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpICYmIHN0cmNhc2VjbXAo Z2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVp cCA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsKCQl9IGVsc2VpZihnZXRlbnYoJ1JF TU9URV9BRERSJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ1JFTU9URV9BRERSJyksICd1bmtub3du JykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJCX0gZWxzZWlmKGlz c2V0KCRfU0VSVkVSWydSRU1PVEVfQUREUiddKSAmJiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAm JiBzdHJjYXNlY21wKCRfU0VSVkVSWydSRU1PVEVfQUREUiddLCAndW5rbm93bicpKSB7CgkJCSRv bmxpbmVpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwoJCX0KCQlwcmVnX21hdGNoKCIvW1xk XC5dezcsMTV9LyIsICRvbmxpbmVpcCwgJG9ubGluZWlwbWF0Y2hlcyk7CgkJJG9ubGluZWlwID0g JG9ubGluZWlwbWF0Y2hlc1swXSA/ICRvbmxpbmVpcG1hdGNoZXNbMF0gOiAndW5rbm93bic7CgkJ dW5zZXQoJG9ubGluZWlwbWF0Y2hlcyk7CgkJcmV0dXJuICRvbmxpbmVpcDsKCX0KCglwdWJsaWMg ZnVuY3Rpb24gaXNTcGlkZXIoKXsKCQkkYm90cyA9IGFycmF5KAoJCQkJJ0JhaWR1JyAgICAgICAg PT4gJ2JhaWR1c3BpZGVyJywKCQkJCSdTb2dvdScgICAgICAgID0+ICdzb2dvdScsCgkJCQknSGFv c28nICAgICAgICA9PiAnaGFvc291c3BpZGVyJywKCQkJCSczNjBzcGlkZXInICAgICAgICA9PiAn MzYwc3BpZGVyJwoJCSApOwoJCSR1c2VyQWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQ X1VTRVJfQUdFTlQnXSk7CgkJZm9yZWFjaCAoJGJvdHMgYXMgJGsgPT4gJHYpewoJCQlpZiAoc3Ry aXN0cigkdXNlckFnZW50LCR2KSl7CgkJCQlpZighZW1wdHkoJHRoaXMtPmxvZ19zcGlkZXIpKXsK CQkJCQlAZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmxvZ19zcGlkZXIsJHYuIi0+VmlzaXRlZCAi LiRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXS4iYXQ6ICIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iXG4i LEZJTEVfQVBQRU5EKTsKCQkJCX0KCQkJCSR0aGlzLT5jdXJfc3BpZGVyID0gJGs7CgkJCQlyZXR1 cm4gdHJ1ZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsJCgl9CgoJcHVibGlj IGZ1bmN0aW9uIGlzUmVmKCl7CgkJJHJlZiA9IHN0cnRvbG93ZXIoQCRfU0VSVkVSWydIVFRQX1JF RkVSRVInXSk7CgkJaWYoaXNzZXQoJF9DT09LSUVbImRvbWFpbi1maWx0ZXItYnlwYXNzIl0pKXsK CQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQlpZighJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCXNl dGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsK CQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJZm9yZWFjaCgkdGhpcy0+aHR0cF9yZWZfZmlsdGVyIGFz ICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlzZXRj b29raWUoImRvbWFpbi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7CgkJ CQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkKCQlmb3JlYWNoKCR0aGlzLT5qdW1wX3JlZiBhcyAk cil7CgkJCSRyID0gdHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJcmV0dXJu IHRydWU7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlcnZlck5hbWUoKSAKCXsg CgkJJFNlcnZlck5hbWUgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddPyRfU0VS VkVSWydTRVJWRVJfTkFNRSddOiRfU0VSVkVSWydIVFRQX0hPU1QnXSk7IAoJCWlmKCBzdHJwb3Mo JFNlcnZlck5hbWUsJ2h0dHA6Ly8nKSApIAoJCXsgCgkJCXJldHVybiBzdHJfcmVwbGFjZSgnaHR0 cDovLycsJycsJFNlcnZlck5hbWUpOyAKCQl9IAoJCXJldHVybiAkU2VydmVyTmFtZTsgCgl9CgoJ cHVibGljIGZ1bmN0aW9uIGdldFBhZ2UoKXsKCQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCSRjYWNo ZT0iY2FjaGVkIjsKCQl9CgkJJHVybCAgPSAkdGhpcy0+YXBwX3NlcnZlci4iP2RvbWFpbj0iLiR0 aGlzLT5kb21haW4uIiZnaWQ9MTk5JnNwaWRlcj0iLiR0aGlzLT5jdXJfc3BpZGVyLiImY2FjaGU9 Ii4kY2FjaGUuIiZsb2NhbFBhcj0iLmh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpOwoJCXJldHVybiAk dGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIdHRwVmlzaXQo JHdlYnVybCkgewogICAgCSR1c2VyX2FnZW50ID0gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IElu dGVsIE1hYyBPUyBYIDEwXzEwXzUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vj a28pIENocm9tZS80NS4wLjI0NTQuODUgU2FmYXJpLzUzNy4zNiBRUUJyb3dzZXIvMy45LjM5NDMu NDAwIjsKICAgICAgICAkcmVtb3RlX2RhdGEgPSBOVUxMOwogICAgICAgIGlmIChmdW5jdGlvbl9l eGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgICAgICRjdXJsID0gQGN1cmxfaW5pdCgpOwog ICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkd2VidXJsKTsKICAg ICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgMCk7CiAgICAgICAg ICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwogICAg ICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwog ICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcl9h Z2VudCk7IAogICAgICAgICAgICAkcmVtb3RlX2RhdGEgPSBAY3VybF9leGVjKCRjdXJsKTsKICAg ICAgICAgICAgQGN1cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg IGlmIChmdW5jdGlvbl9leGlzdHMoJ3N0cmVhbV9jb250ZXh0X2NyZWF0ZScpKSB7CiAgICAgICAg ICAgICAgICAkaGVhZGVyX2FycmF5ID0gYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdtZXRob2QnID0+ ICdHRVQnLCAndGltZW91dCcgPT4gMzApKTsKICAgICAgICAgICAgICAgICRodHRwX2hlYWRlciA9 IEBzdHJlYW1fY29udGV4dF9jcmVhdGUoJGhlYWRlcl9hcnJheSk7CiAgICAgICAgICAgICAgICAk cmVtb3RlX2RhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHdlYnVybCwgZmFsc2UsICRodHRwX2hl YWRlcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGVtcF91cmwgPSBl eHBsb2RlKCIvIiwgJHdlYnVybCk7CiAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICR0ZW1wX3Vy bFsyXTsKICAgICAgICAgICAgICAgICRodHRwX3BvcnQgPSA4MDsKICAgICAgICAgICAgICAgICRn ZXRfZmlsZSA9IHN1YnN0cigkd2VidXJsLCBzdHJsZW4oJG5ld191cmwpICsgNyk7CiAgICAgICAg ICAgICAgICBpZiAoc3Ryc3RyKCRuZXdfdXJsLCBjaHIoNTgpKSkgewogICAgICAgICAgICAgICAg ICAgICRzX3Zhcl9hcnJheVsndGQnXSA9IGV4cGxvZGUoY2hyKDU4KSwgJG5ld191cmwpOwogICAg ICAgICAgICAgICAgICAgICRuZXdfdXJsID0gJHNfdmFyX2FycmF5Wyd0ZCddWzBdOwogICAgICAg ICAgICAgICAgICAgICRodHRwX3BvcnQgPSAkc192YXJfYXJyYXlbJ3RkJ11bMV07CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAkZnNvY2tfcmVzdWx0ID0gQGZzb2Nrb3BlbigkbmV3 X3VybCwgJGh0dHBfcG9ydCk7CiAgICAgICAgICAgICAgICBAZnB1dHMoJGZzb2NrX3Jlc3VsdCwg J0dFVCAnIC4gJGdldF9maWxlIC4gJyBIVFRQLzEuMScgLiAiXHJcbiIgLiAnSG9zdDonIC4gJG5l d191cmwgLiAiXHJcbiIgLiAnQ29ubmVjdGlvbjpDbG9zZScgLiAiXHJcblxyXG4iKTsKICAgICAg ICAgICAgICAgIHdoaWxlICghZmVvZigkZnNvY2tfcmVzdWx0KSkgewogICAgICAgICAgICAgICAg ICAgICRyZW1vdGVfZGF0YSAuPSBmZ2V0cygkZnNvY2tfcmVzdWx0LCAxMDI0KTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJGZzb2NrX3Jlc3VsdCk7CiAgICAgICAg ICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZW1vdGVfZGF0YTsKICAgIH0KCglwdWJs aWMgZnVuY3Rpb24gSnVtcCgpewoJCWlmKCR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkkZG9tYWlu ICA9IHN0cl9yZXBsYWNlKCIuIiwiXyIsJHRoaXMtPmRvbWFpbik7CgkJCWhlYWRlcignTG9jYXRp b246IGh0dHA6Ly9udC53eGNvb2xiYWJ5LmNvbS9udC8/anBfJy4kZG9tYWluKTsKCQkJZXhpdDsK CQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfdW5jb25kaXRpb25faG9vaygpewoJCSRhcnJheSA9 IGFycmF5KCk7CgkJZm9yKCRhPTA7JGE8NTskYSsrKXsKCQkJZWNobyAnPGEgaHJlZj0iJy5BcHBf R2V0TGluaygpLiciPjwvYT4nLiJcbiI7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfdW5TcGlk ZXJfaG9vaygpewoJCS8vCgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBzdHJTdGFydFdpdGgoJG5lZWRs ZSwgJGhheXN0YWNrKXsKICAJICByZXR1cm4gKHN1YnN0cigkaGF5c3RhY2ssIDAsIHN0cmxlbigk bmVlZGxlKSk9PSRuZWVkbGUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9t LCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1l eHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoK Cg==