Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

DQplcnJvcl9yZXBvcnRpbmcoMCk7DQpkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdBc2lhL2pha2FydGEnKTsNCm..

Decoded Output download

<?  DQplcnJvcl9yZXBvcnRpbmcoMCk7DQpkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdBc2lhL2pha2FydGEnKTsNCmNvbnN0IA0KdGl0bGUgPSAiZmF1Y2V0cGF5IiwNCnZlcnNpID0gIjEuMSIsDQpzdGF0dXMgPSAib25saW5lIiwNCmhvc3QgPSAiZmF1Y2V0cGF5LmlvIiwNCmIgPSAiXDAzM1sxOzM0bSIsDQpjID0gIlwwMzNbMTszNm0iLA0KZCA9ICJcMDMzWzBtIiwNCmggPSAiXDAzM1sxOzMybSIsDQprID0gIlwwMzNbMTszM20iLA0KbSA9ICJcMDMzWzE7MzFtIiwNCm4gPSAiXG4iLA0KcCA9ICJcMDMzWzE7MzdtIiwNCnUgPSAiXDAzM1sxOzM1bSI7DQoNCmZ1bmN0aW9uIEN1cmwoJHUsICRoID0gMCwgJHAgPSAwLCAkeCA9IDApIHsNCgkkY2ggPSBjdXJsX2luaXQoKTsNCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdSk7DQoJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgZmFsc2UpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUUsVFJVRSk7DQoJI2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCJjb29raWUudHh0Iik7DQoJI2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVKQVIsImNvb2tpZS50eHQiKTsNCglpZigkcCkgew0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkcCk7DQoJfQ0KCWlmKCRoKSB7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaCk7DQoJfQ0KCWlmKCR4KXsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTCwgdHJ1ZSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QUk9YWSwgImh0dHA6Ly9zY3JhcGVyYXBpOmU4Mzg5N2U3Y2U2YzI5YWYxZWZjOTFjNzk1ZDIxYTk2QHByb3h5LXNlcnZlci5zY3JhcGVyYXBpLmNvbTo4MDAxIik7DQoJCS8vIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QUk9YWVRZUEUsIENVUkxQUk9YWV9TT0NLUzUpOw0KCX0NCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCB0cnVlKTsNCgkkciA9IGN1cmxfZXhlYygkY2gpOw0KCSRjID0gY3VybF9nZXRpbmZvKCRjaCk7DQoJaWYoISRjKSByZXR1cm4gIkN1cmwgRXJyb3IgOiAiLmN1cmxfZXJyb3IoJGNoKTsgZWxzZXsNCgkJJGhkID0gc3Vic3RyKCRyLCAwLCBjdXJsX2dldGluZm8oJGNoLCBDVVJMSU5GT19IRUFERVJfU0laRSkpOw0KCQkkYmQgPSBzdWJzdHIoJHIsIGN1cmxfZ2V0aW5mbygkY2gsIENVUkxJTkZPX0hFQURFUl9TSVpFKSk7DQoJCWN1cmxfY2xvc2UoJGNoKTsNCgkJcmV0dXJuIGFycmF5KCRoZCwkYmQpOw0KCX0NCn0NCmZ1bmN0aW9uIEFjc3NpX2NhbHZpbigkc3RyaW5nKXsNCgkkYWNzc2kgPSBbDQoJImEiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSA4pSkIiwi4pS0IOKUtCJdLCJiIiA9PiBbIuKUjOKUkCAiLCLilJzilLTilJAiLCLilJTilIDilJgiXSwiYyIgPT4gWyLilIzilIDilJAiLCLilIIgICIsIuKUlOKUgOKUmCJdLCJkIiA9PiBbIuKUjOKUrOKUkCIsIiDilILilIIiLCLilIDilLTilJgiXSwiZSIgPT4gWyLilIzilIDilJAiLCLilJzilKQgIiwi4pSU4pSA4pSYIl0sDQoJImYiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSkICIsIuKUlCAgIl0sImciID0+IFsi4pSM4pSA4pSQIiwi4pSCIOKUrCIsIuKUlOKUgOKUmCJdLCJoIiA9PiBbIuKUrCDilKwiLCLilJzilIDilKQiLCLilLQg4pS0Il0sImkiID0+IFsi4pSsIiwi4pSCIiwi4pS0Il0sImoiID0+IFsiIOKUrCIsIiDilIIiLCLilJTilJgiXSwiayIgPT4gWyLilKzilIzilIAiLCLilJzilLTilJAiLCLilLQg4pS0Il0sDQoJImwiID0+IFsi4pSsICAiLCLilIIgICIsIuKUtOKUgOKUmCJdLCJtIiA9PiBbIuKUjOKUrOKUkCIsIuKUguKUguKUgiIsIuKUtCDilLQiXSwibiIgPT4gWyLilIzilJDilIwiLCLilILilILilIIiLCLilJjilJTilJgiXSwibyIgPT4gWyLilIzilIDilJAiLCLilIIg4pSCIiwi4pSU4pSA4pSYIl0sInAiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSA4pSYIiwi4pS0ICAiXSwNCgkicSIgPT4gWyLilIzilIDilJAgIiwi4pSC4pSA4pS84pSQIiwi4pSU4pSA4pSY4pSUIl0sInIiID0+IFsi4pSs4pSA4pSQIiwi4pSc4pSs4pSYIiwi4pS04pSU4pSAIl0sInMiID0+IFsi4pSM4pSA4pSQIiwi4pSU4pSA4pSQIiwi4pSU4pSA4pSYIl0sInQiID0+IFsi4pSM4pSs4pSQIiwiIOKUgiAiLCIg4pS0ICJdLCJ1IiA9PiBbIuKUrCDilKwiLCLilIIg4pSCIiwi4pSU4pSA4pSYIl0sDQoJInYiID0+IFsi4pSsICDilKwiLCLilJTilJDilIzilJgiLCIg4pSU4pSYICJdLCJ3IiA9PiBbIuKUrCDilKwiLCLilILilILilIIiLCLilJTilLTilJgiXSwieCIgPT4gWyLilIDilJAg4pSsIiwi4pSM4pS04pSs4pSYIiwi4pS0IOKUlOKUgCJdLCJ5IiA9PiBbIuKUrCDilKwiLCLilJTilKzilJgiLCIg4pS0ICJdLCJ6IiA9PiBbIuKUjOKUgOKUkCIsIuKUjOKUgOKUmCIsIuKUlOKUgOKUmCJdLCIgIj0+WyIgIiwiICIsIiAiXQ0KCV07DQoJJHggPSBzdHJfc3BsaXQoJHN0cmluZyk7cHJpbnQgIiAiOw0KCWZvcmVhY2goJHggYXMgJGRhdGEpe3ByaW50IGIuJGFjc3NpWyRkYXRhXVswXTt9DQoJcHJpbnQgay4iIHZlcnNpICIubS4iOiAiLmgudmVyc2kubi4iICI7DQoJZm9yZWFjaCgkeCBhcyAkZGF0YSl7cHJpbnQgYy4kYWNzc2lbJGRhdGFdWzFdO30NCglwcmludCBrLiIgc3RhdHVzIi5tLiI6ICIuaC5zdGF0dXMubi4iICI7DQoJZm9yZWFjaCgkeCBhcyAkZGF0YSl7cHJpbnQgcC4kYWNzc2lbJGRhdGFdWzJdO30NCglwcmludCAiXG4iOw0KfQ0KZnVuY3Rpb24gQm4oKXsNCglzeXN0ZW0oJ2NsZWFyJyk7DQoJJG09IlwwMzNbMTszMW0iOyRwPSJcMDMzWzE7MzdtIjskaz0iXDAzM1sxOzMzbSI7JGg9IlwwMzNbMTszMm0iOyR1PSJcMDMzWzE7MzVtIjskYj0iXDAzM1sxOzM0bSI7JGM9IlwwMzNbMTszNm0iOyRtcD0iXDAzM1sxMDFtXDAzM1sxOzM3bSI7JGNsPSJcMDMzWzBtIjskbW09IlwwMzNbMTAxbVwwMzNbMTszMW0iOyRocD0iXDAzM1sxOzdtIjsNCglwcmludCBwLnN0cl9yZXBlYXQoIuKUgCIsMTYpLm0uIj4gIi5oLiJTY3J5cHQgYnkgIi5wLiJpZXdpbCAiLm0uIjwiLnAuc3RyX3JlcGVhdCgi4pSAIiwxNSkubjsNCglBY3NzaV9jYWx2aW4odGl0bGUpOw0KCXByaW50IExpbmUoKTsNCglwcmludCAieyRtbX1beyRtcH3ilrZ7JG1tfV17JGNsfSB7JGt9aHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9pZXdpbFxueyRjfXskaHB9ID5feyRjbH17JGJ9IFRlYW0tRnVuY3Rpb24tSU5ET1xueyRwfeKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIjsNCglwcmludCBtLiJ7JG1tfVt7JG1wfSF7JG1tfV0iLiRjbC5tLiIgU0NSSVBUIEdSQVRJUyBUSURBSyBVTlRVSyBESSBPQlJBTCEiLm4ucC4i4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiI7DQp9DQpmdW5jdGlvbiBMaW5lKCR4PTApew0KCSRsID0gNTA7DQoJaWYoJHgpew0KCQlyZXR1cm4geCgkeCxiLnN0cl9yZXBlYXQoJ+KUgCcsJGwtMykubik7DQoJfWVsc2V7DQoJCXJldHVybiBiLnN0cl9yZXBlYXQoJ+KUgCcsJGwpLm47DQoJfQ0KfQ0KZnVuY3Rpb24gSGNhcHRjaGEoJHNpdGV1cmwsJHNpdGVrZXksJGFwaWtleSl7DQoJJHVhPVsiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIl07DQoJJGhvc3Q9Imh0dHBzOi8vYXBpLmFueWNhcHRjaGEuY29tIjsNCgkkZGF0YT1qc29uX2VuY29kZShhcnJheSgiY2xpZW50S2V5Ij0+JGFwaWtleSwidGFzayI9PmFycmF5KCJ0eXBlIj0+IkhDYXB0Y2hhVGFza1Byb3h5bGVzcyIsIndlYnNpdGVVUkwiPT4kc2l0ZXVybCwid2Vic2l0ZUtleSI9PiRzaXRla2V5KSkpOw0KCSRDcmVhdGU9anNvbl9kZWNvZGUoY3VybCgkaG9zdC4nL2NyZWF0ZVRhc2snLCR1YSwkZGF0YSlbMV0pOw0KCWlmKCRDcmVhdGUtPmVycm9ySWQgPT0gJzEnKXsNCgkJcHJpbnQgbS4kQ3JlYXRlLT5lcnJvckNvZGUubjsNCgkJZXhpdDsNCgl9ZWxzZXsNCgkJJFRhc2s9JENyZWF0ZS0+dGFza0lkOw0KCQl3aGlsZSh0cnVlKXsNCgkJCWVjaG8gbS4icHJvY2Vzc2luZy4uLiI7DQoJCQkkYmFzZT1qc29uX2VuY29kZShhcnJheSgiY2xpZW50S2V5Ij0+JGFwaWtleSwidGFza0lkIj0+JFRhc2spKTsNCgkJCSRSZXN1bHQ9anNvbl9kZWNvZGUoY3VybCgkaG9zdC4nL2dldFRhc2tSZXN1bHQnLCR1YSwkYmFzZSlbMV0pOw0KCQkJaWYoJFJlc3VsdC0+c3RhdHVzPT0ncHJvY2Vzc2luZycpew0KCQkJCWVjaG8gIlxyICAgICAgICAgICAgIFxyIjsNCgkJCQllY2hvIG0uInByb2Nlc3NpbmcuLi4uLi4iOw0KCQkJCXNsZWVwKDUpOw0KCQkJCWVjaG8gIlxyICAgICAgICAgICAgICAgIFxyIjsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCWVjaG8gIlxyICAgICAgICAgICAgICAgIFxyIjsNCgkJCXJldHVybiAkUmVzdWx0LT5zb2x1dGlvbi0+Z1JlY2FwdGNoYVJlc3BvbnNlOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gc3YoJGRhdGEsJGRhdGFfcG9zdCl7DQogICAgaWYoIWZpbGVfZ2V0X2NvbnRlbnRzKCRkYXRhKSl7DQogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkYXRhLCJbXSIpO30NCiAgICAgICAgJGpzb249anNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGRhdGEpLDEpOw0KICAgICAgICAkYXJyPWFycmF5X21lcmdlKCRqc29uLCRkYXRhX3Bvc3QpOw0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZGF0YSxqc29uX2VuY29kZSgkYXJyLEpTT05fUFJFVFRZX1BSSU5UKSk7DQp9DQpmdW5jdGlvbiB0bXIoJHRtcil7DQoJJHRpbXI9dGltZSgpKyR0bXI7DQoJd2hpbGUodHJ1ZSl7DQoJCXByaW50ICJcciAgICAgICAgICAgICAgICAgICAgICAgXHIiOw0KCQkkcmVzPSR0aW1yLXRpbWUoKTsNCgkJaWYoJHJlcyA8IDEpe2JyZWFrO30NCgkJcHJpbnQgcC5kYXRlKCdpOnMnLCRyZXMpO3NsZWVwKDEpOw0KCX0NCn0NCmZ1bmN0aW9uIGgoKXsNCgkkeCA9IGpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCJha3VuLmpzb24iKSwxKTsNCgkkaFtdID0gInVzZXItYWdlbnQ6ICIuJHhbInVzZXJfYWdlbnQiXTsNCgkkaFtdID0gImNvb2tpZTogIi4keFsiY29va2llIl07DQoJcmV0dXJuICRoOw0KfQ0KZnVuY3Rpb24gcmF0YSgkc3RyLCR4PTAsJHk9MCwkej0wKXsNCglpZigkeSl7DQoJCSRsZW4gPSA1Ow0KCX1lbHNlaWYoJHopew0KCQkkbGVuID0gMjsNCgl9ZWxzZXsNCgkJJGxlbiA9IDEyOw0KCX0NCglpZihzdHJsZW4oJHN0cik+MTIpew0KCQkkc3RyID0gc3Vic3RyKCRzdHIsMCwxMik7DQoJfQ0KCSRsZW5zdHIgPSAkbGVuLXN0cmxlbigkc3RyKTsNCglpZigkeCl7DQoJCXJldHVybiAkc3RyLnN0cl9yZXBlYXQoIiAiLCRsZW5zdHIpOw0KCX1lbHNlew0KCQlyZXR1cm4gJHN0ci5zdHJfcmVwZWF0KCIgIiwkbGVuc3RyKS5iLiJ8IjsNCgl9DQp9DQpmdW5jdGlvbiBQYXNzKCRjaGVjaz0wKXsNCglwYXNzd29yZHVsYW5nOg0KCSRkYXRhYmFzZSA9ICIuLmRhdGEiOw0KCSRwYXNzd29yZCA9ICIuLnBhc3N3b3JkIjsNCgkkc2VjcmV0ID0gZ3pjb21wcmVzcyhkYXRlKCJkbVkiKSk7DQoJaWYoJGNoZWNrKXsNCgkJJGNlayA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXNzd29yZCk7DQoJCWlmKCRjZWsgPT0gJHNlY3JldCl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfWVsc2V7DQoJCQlwcmludCBtLiJQYXNzd29yZCBFeHBpcmVkISIubjsNCgkJCXByaW50IGxpbmUoKTsNCgkJCXVubGluaygkcGFzc3dvcmQpOw0KCQl9DQoJfQ0KCWlmKCFmaWxlX2dldF9jb250ZW50cygkZGF0YWJhc2UpKXsNCgkJJGJhc2UgPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9zaG9ydC0zMC1kZWZhdWx0LXJ0ZGIuZmlyZWJhc2Vpby5jb20vcHJlbWl1bS9zaG9ydC5qc29uIik7DQoJCWZpbGVfcHV0X2NvbnRlbnRzKCRkYXRhYmFzZSxnemNvbXByZXNzKCRiYXNlKSk7DQoJCWdvdG8gcGFzc3dvcmR1bGFuZzsNCgl9ZWxzZXsNCgkJJGRhdGEgPSBqc29uX2RlY29kZShnenVuY29tcHJlc3MoZmlsZV9nZXRfY29udGVudHMoJGRhdGFiYXNlKSksMSlbIlQiLmRhdGUoImRtWSIpXTsNCgkJaWYoISRkYXRhKXsNCgkJCXVubGluaygkZGF0YWJhc2UpOw0KCQkJZ290byBwYXNzd29yZHVsYW5nOw0KCQl9DQoJfQ0KCWlmKCFmaWxlX2dldF9jb250ZW50cygkcGFzc3dvcmQpKXsNCgkJQm4oKTsNCgkJcHJpbnQgaC4iIExpbmsgICAgICIucC4iOiAiLmsuJGRhdGFbInNob3J0bGluayJdLiJcbiI7DQoJCSRwYXMgPSByZWFkbGluZShoLiIgUGFzc3dvcmQgIi5wLiI6ICIuayk7DQoJCWlmKCRwYXMgPT0gJGRhdGFbInBhc3N3b3JkIl0pew0KCQkJZmlsZV9wdXRfY29udGVudHMoJHBhc3N3b3JkLCRzZWNyZXQpOw0KCQkJcHJpbnQgaC4iIC0tLSBUcnVlIFBhc3N3b3JkICIubjsNCgkJCXNsZWVwKDMpOw0KCQl9ZWxzZXsNCgkJCXByaW50IG0uIiAtLS0gSW52YWxpZCBQYXNzd29yZCEiLm47DQoJCQlnb3RvIHBhc3N3b3JkdWxhbmc7DQoJCX0NCgl9ZWxzZXsNCgkJJGNlayA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXNzd29yZCk7DQoJCWlmKCRjZWsgPT0gJHNlY3JldCl7DQoJCQlwcmludCBoLiIgLS0tIFRydWUgUGFzc3dvcmQgIi5uOw0KCQl9ZWxzZXsNCgkJCXVubGluaygkcGFzc3dvcmQpOw0KCQkJZ290byBwYXNzd29yZHVsYW5nOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGF0YSgpew0KCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcGFnZS91c2VyLWFkbWluIjsNCgkkciA9IGN1cmwoJHVybCxoKCkpWzFdOw0KCXByZWdfbWF0Y2hfYWxsKCcjPHNwYW4gY2xhc3M9InR4LWNvbG9yLTAzIHR4LW5vcm1hbCI+KC4qPyk8L3NwYW4+PC9oNj4gPGRpdiBjbGFzcz0iZC1mbGV4IGFsaWduLWl0ZW1zLWJhc2VsaW5lIHR4LXJ1YmlrIj4gPGg1IGNsYXNzPSJ0eC0yMCBtZy1iLTAiPiguKj8pPC9oNT4jaXMnLCRyLCRiYWwpOw0KCXJldHVybiBbJGJhbFsxXSwkYmFsWzJdXTsNCn0NCi8vcGFzcygpOw0KLy9hd2FsDQpibigpOw0KY29raToNCmlmKCFmaWxlX2dldF9jb250ZW50cygiYWt1bi5qc29uIikpew0KCSRhY2NbImNvb2tpZSJdID0gcmVhZGxpbmUoaC4iSW5wdXQgQ29va2llIi5tLiIgPiAiLnApOw0KCSRhY2NbInVzZXJfYWdlbnQiXSA9IHJlYWRsaW5lKG4uaC4iSW5wdXQgVXNlcl9BZ2VudCIubS4iID4gIi5wKTsNCglzdigiYWt1bi5qc29uIiwkYWNjKTsNCn0NCmJuKCk7DQokciA9IGN1cmwoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL2FjY291bnQvc2V0dGluZ3MnLGgoKSlbMV07DQokdW5hbWUgPSBleHBsb2RlKCciJyxleHBsb2RlKCc8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0idGV4dCIgbmFtZT0idGV4dCIgdmFsdWU9IicsJHIpWzFdKVswXTsNCmlmKCEkdW5hbWUpe3VubGluaygnYWt1bi5qc29uJyk7Z290byBjb2tpO30NCnByaW50IGguIlVzZXJuYW1lICIubS4iOiAiLnAuJHVuYW1lLm47DQpwcmludCBsaW5lKCk7DQoNCiRyID0gZGF0YSgpOw0KZm9yKCRpPTA7JGk8Y291bnQoJHJbMV0pOyRpKyspew0KCWlmKCRpICUgMiA9PSAwKXsNCgkJcHJpbnQgay5yYXRhKHN0cl9yZXBsYWNlKFsiKCIsIikiXSxbIiIsIiJdLCRyWzBdWyRpXSksIiIsMSkubS4iIDogIi5wLiRyWzFdWyRpXS5tLiIgfCAiOw0KCX1lbHNlew0KCQlwcmludCBrLnJhdGEoc3RyX3JlcGxhY2UoWyIoIiwiKSJdLFsiIiwiIl0sJHJbMF1bJGldKSwiIiwxKS5tLiIgOiAiLnAuJHJbMV1bJGldLm47DQoJfQ0KfQ0KcHJpbnQgbjsNCnByaW50IGxpbmUoKTsNCg0KcGVzYW46DQpwcmludCBwLiIxICIubS4iPiAiLnAuIlB0Y1xuIjsNCnByaW50IHAuIjIgIi5tLiI+ICIucC4iRGljZVxuIjsNCiRwZXNhbiA9IHJlYWRsaW5lKGguJ0lucHV0IE51bWJlcicubS4nID4gJy5wKTsNCnByaW50IGxpbmUoKTsNCmlmKCRwZXNhbj09MSl7Z290byBwdGM7DQp9ZWxzZWlmKCRwZXNhbj09Mil7Z290byBtZW51Ow0KfWVsc2V7DQoJcHJpbnQgbS4iVE9MT0whXG4iOw0KCWV4aXQ7DQp9DQoNCg0KLy9kaWNlDQptZW51Og0KJGNvbiA9ICIuaGlzdG9yeSI7DQokZGljZSA9ICJkaWNlLmpzb24iOw0KDQpwcmludCBwLiIxICIubS4iPiAiLnAuIkxhc3QgRGF0YVxuIjsNCnByaW50IHAuIjIgIi5tLiI+ICIucC4iTmV3IERhdGFcbiI7DQpwcmludCBwLiIzICIubS4iPiAiLnAuIkhpc3RvcnlcbiI7DQokcGlsID0gcmVhZGxpbmUoaC4nSW5wdXQgTnVtYmVyJy5tLicgPiAnLnApOw0KcHJpbnQgbGluZSgpOw0KaWYoJHBpbD09MSl7Z290byBsYXN0ZGF0YTsNCn1lbHNlaWYoJHBpbD09Mil7Z290byBuZXdkYXRhOw0KfWVsc2VpZigkcGlsPT0zKXtnb3RvIGhpc3Rvcnk7DQp9ZWxzZXsNCglwcmludCBtLiJUT0xPTCFcbiI7DQoJZXhpdDsNCn0NCmxhc3RkYXRhOg0KaWYoZmlsZV9nZXRfY29udGVudHMoJGRpY2UpKXsNCgkkZGMgPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygkZGljZSksMSk7DQoJaWYoJGRjWyJjb2luIl0gJiYgJGRjWyJzaGVlZCJdICYmICRkY1siYmV0Il0gJiYgJGRjWyJyb2xsIl0gJiYgJGRjWyJzdG9wX2xvc3MiXSAmJiAkZGNbInN0b3BfcHJvZml0Il0pew0KCQkkY29pbiA9ICRkY1siY29pbiJdOw0KCQkkc2hlZWQgPSAkZGNbInNoZWVkIl07DQoJCSRiZXRpID0gJGRjWyJiZXQiXTsNCgkJJHJvbGwgPSAkZGNbInJvbGwiXTsNCgkJJHN0b3Bsb3NzID0gJGRjWyJzdG9wX2xvc3MiXTsNCgkJJHN0b3Bwcm9maXQgPSAkZGNbInN0b3BfcHJvZml0Il07DQoJCWdvdG8gZ2FzczsNCgl9ZWxzZXsNCgkJdW5saW5rKCRkaWNlKTsNCgkJZ290byBsYXN0ZGF0YTsNCgl9DQp9ZWxzZXsNCglwcmludCBtLiJFcnJvciAiLnAuIn4+ICIubS4iTG9zdCBkYXRhXG4iOw0KCXByaW50IGxpbmUoKTsNCglnb3RvIG5ld2RhdGE7DQp9DQpuZXdkYXRhOg0KJGNvaW4gPSByZWFkbGluZShoLiJJbnB1dCBjb2luICIubS4iPiAiLnApOw0KJHNoZWVkID0gcmVhZGxpbmUoaC4iSW5wdXQgY2xpZW50IHNoZWVkICIubS4iPiAiLnApOw0KJGJldGkgPSByZWFkbGluZShoLiJCZXQgYW1tb3VudCAiLm0uIj4gIi5wKTsNCiRyb2xsID0gcmVhZGxpbmUoaC4iQW1tb3VudCBSb2xsICIubS4iPiAiLnApOw0KJHN0b3Bsb3NzID0gcmVhZGxpbmUoaC4iU3RvcCBsb3NzICIubS4iPiAiLnApOw0KJHN0b3Bwcm9maXQgPSByZWFkbGluZShoLiJTdG9wIHByb2ZpdCAiLm0uIj4gIi5wKTsNCiRkY1siY29pbiJdID0gJGNvaW47DQokZGNbInNoZWVkIl0gPSAkc2hlZWQ7DQokZGNbImJldCJdID0gJGJldGk7DQokZGNbInJvbGwiXSA9ICRyb2xsOw0KJGRjWyJzdG9wX2xvc3MiXSA9ICRzdG9wbG9zczsNCiRkY1sic3RvcF9wcm9maXQiXSA9ICRzdG9wcHJvZml0Ow0Kc3YoJGRpY2UsJGRjKTsNCg0KZ2FzczoNCiRiZXQgPSAkYmV0aTsNCiRiZXR0ID0gJGJldDsNCmJuKCk7DQoNCiRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZScsaCgpKVsxXTsNCiRpZD0gZXhwbG9kZSgiamF2YXNjcmlwdDp1c2VDb2luKCciLCRyKTsNCiRpZGMgPSBbXTsNCmZvcigkaT0xOyRpPGNvdW50KCRpZCk7JGkrKyl7DQoJJGNvaW5zID0gZXhwbG9kZSgnICcsZXhwbG9kZSgnPC9hPicsZXhwbG9kZSgnOyI+JywkaWRbJGldKVsxXSlbMF0pWzFdOw0KCSRpZHMgPSBleHBsb2RlKCInKTsiLCRpZFskaV0pWzBdOw0KCSRpZGNbJGNvaW5zXSA9ICRpZHM7DQp9DQokY29pbiA9IHN0cnRvdXBwZXIoJGNvaW4pOw0KaWYoJGlkY1skY29pbl0pew0KCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZT9jPSIuJGlkY1skY29pbl07DQp9ZWxzZXsNCglpZigkY29pbiA9PSAiQlRDIil7DQoJCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZSI7DQoJfWVsc2V7DQoJCXByaW50IG0uIlRvbG9sISIubjsNCgkJZXhpdDsNCgl9DQp9DQokZHR4ID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGNvbiksMSlbZGF0ZSgnZC9NL3knKV1bImhpc3RvcnkiXTsNCiR3aW4gPSAkZHR4WyRjb2luXVsid2luIl07DQokbG9zZSA9ICRkdHhbJGNvaW5dWyJsb3NlIl07DQokcHJvZiA9ICRkdHhbJGNvaW5dWyJwcm9maXQiXTsNCg0KJHIgPSBjdXJsKCR1cmwsaCgpKVsxXTsNCiRiYWxhbmNlID0gZXhwbG9kZSgnPC9zcGFuPicsZXhwbG9kZSgnPHNwYW4gaWQ9ImJhbGFuY2UiPicsJHIpWzFdKVswXTsNCnByaW50IGguIkNvaW4gICAgICAgIi5tLiI6ICIuYy4kY29pbi5uOw0KcHJpbnQgaC4iQmFsYW5jZSAgICAiLm0uIjogIi5jLiRiYWxhbmNlLm47DQpwcmludCBsaW5lKCk7DQpwcmludCBoLiJTaGVlZCAgICAgICIubS4iOiAiLmMuc3Vic3RyKCRzaGVlZCwwLDEwKS5wLiIuLi4iLm47DQpwcmludCBoLiJCZXQgICAgICAgICIubS4iOiAiLmMuJGJldC5uOw0KcHJpbnQgaC4iTnVtIFJvbGwgICAiLm0uIjogIi5jLiRyb2xsLm47DQpwcmludCBoLiJTdG9wIExvc3MgICIubS4iOiAiLmMuJHN0b3Bsb3NzLm47DQpwcmludCBoLiJTdG9wIFByb2ZpdCIubS4iOiAiLmMuJHN0b3Bwcm9maXQubjsNCnByaW50IGxpbmUoKTsNCnByaW50IHAucmF0YSgiQmFsYW5jZSIpLnAucmF0YSgiQmV0IikucC5yYXRhKCJITCIsIiIsIiIsMSkucC5yYXRhKCJSb2xsIiwiIiwxKS5wLnJhdGEoIlByb2ZpdCIpLnAucmF0YSgiV1IiLDEsMSkubjsNCnByaW50IGxpbmUoKTsNCg0KZm9yKCRpPSRyb2xsOyRpPjA7JGktLSl7DQoJaWYoIWV4cGxvZGUoJyInLGV4cGxvZGUoJzxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ0ZXh0IiB2YWx1ZT0iJyxjdXJsKCdodHRwczovL2ZhdWNldHBheS5pby9hY2NvdW50L3NldHRpbmdzJyxoKCkpWzFdKVsxXSlbMF0pew0KCQl1bmxpbmsoImFrdW4uanNvbiIpOw0KCQlnb3RvIGNva2k7DQoJfQ0KCSRoaWxvID0gcmFuZCgxLDIpOw0KCSRkYXRhID0gInBsYXk9dHJ1ZSZjb2luPSIuJGNvaW4uIiZjbGllbnRfc2VlZD0iLiRzaGVlZC4iJmJldF9hbXQ9Ii4kYmV0dC4iJnByb2ZpdD0iLiRiZXR0LiImcGF5b3V0PSIuJHBheW91dC4iJndpbm5pbmdfY2hhbmNlPSIuJHdpbl9jaGFuY2UuIiZwcmVkaWN0aW9uPSIuJGhpbG87DQoJJHIgPSBqc29uX2RlY29kZShjdXJsKCJodHRwczovL2ZhdWNldHBheS5pby9kaWNlL3BsYXkiLGgoKSwkZGF0YSlbMV0sMSk7DQoJaWYoJHJbImVycm9yIl0pew0KCQlleGl0KG0uJHJbIm1lc3NhZ2UiXS5uKTsNCgl9DQoJDQoJKCRoaWxvPT0xKT8gJGhpID0gbS5yYXRhKCJIaSIsIiIsIiIsMSk6JGhpPSBoLnJhdGEoIkxvIiwiIiwiIiwxKTsNCglwcmludCBwLnJhdGEoJHJbImJhbGFuY2UiXSk7DQoJaWYoJGJldHQ+JGJldCl7DQoJCXByaW50IGsucmF0YSgkYmV0dCk7DQoJfWVsc2V7DQoJCXByaW50IHAucmF0YSgkYmV0dCk7DQoJfQ0KCXByaW50ICRoaTsNCglwcmludCBwLnJhdGEoJHJbInJvbGwiXSwiIiwxKTsNCglpZigkclsid2luIl0pew0KCQkkcHJvZml0ICA9IHNwcmludGYoJyUuOGYnLGZsb2F0dmFsKCRwcm9maXQrJGJldHQpKTsNCgkJJHByb2ZpdDEgPSBleHBsb2RlKCcuJywkcHJvZml0KVswXTsNCgkJJHByb2ZpdDIgPSBzdWJzdHIoZXhwbG9kZSgnLicsJHByb2ZpdClbMV0sMCw4KTsNCgkJJHByb2ZpdCA9ICRwcm9maXQxLiIuIi4kcHJvZml0MjsNCgkJcHJpbnQgaC5yYXRhKCIrIi4kYmV0dCk7DQoJCSRiZXR0ID0gJGJldDsNCgkJJHdpbis9MTskd2luZGF0Kz0xOw0KCQkkd3IgPSAxMDA7DQoJfWVsc2V7DQoJCSRwcm9maXQgID0gc3ByaW50ZignJS44ZicsZmxvYXR2YWwoJHByb2ZpdC0kYmV0dCkpOw0KCQkkcHJvZml0MSA9IGV4cGxvZGUoJy4nLCRwcm9maXQpWzBdOw0KCQkkcHJvZml0MiA9IHN1YnN0cihleHBsb2RlKCcuJywkcHJvZml0KVsxXSwwLDgpOw0KCQkkcHJvZml0ID0gJHByb2ZpdDEuIi4iLiRwcm9maXQyOw0KCQlwcmludCBtLnJhdGEoIi0iLiRiZXR0KTsNCgkJJGJldHQqPTI7DQoJCSRiZXR0ID0gc3ByaW50ZignJS44ZicsZmxvYXR2YWwoJGJldHQpKTsNCgkJJGxvc2UrPTE7JGxvc2VkYXQrPTE7DQoJCSR3ciA9IDA7DQoJfQ0KCWlmKCR3aW4gJiYgJGxvc2Upew0KCQkkd3IgPSAoJHdpbi8oJHdpbiskbG9zZSkpKjEwMDsNCgkJJHdyID0gc3Vic3RyKCR3ciwwLDQpOw0KCX0NCglwcmludCB1LnJhdGEoJHdyLiIlIiwxLDEpLm47DQoJDQoJJGhpc3RvcnlbIndpbiJdID0gJHdpbjsNCgkkaGlzdG9yeVsibG9zZSJdID0gICRsb3NlOw0KCSRoaXN0b3J5WyJwcm9maXQiXSA9IHNwcmludGYoJyUuOGYnLGZsb2F0dmFsKCRwcm9maXQrJHByb2YpKTsNCglpZigkZHR4KXsNCgkJJHhbZGF0ZSgnZC9NL3knKV0gPSBbImhpc3RvcnkiID0+IGFycmF5X21lcmdlKCRkdHgsWyRjb2luID0+JGhpc3RvcnldKV07DQoJfWVsc2V7DQoJCSR4W2RhdGUoJ2QvTS95JyldID0gWyJoaXN0b3J5IiA9PiBbJGNvaW4gPT4kaGlzdG9yeV1dOw0KCX0NCglzdigkY29uLCR4KTsNCglpZigkYmV0dCA+PSAkc3RvcGxvc3Mpew0KCQlwcmludCBuLm0uIlN0b3AgTG9zc1xuIjsNCgkJZ290byBwb3Rvbmc7DQoJfQ0KCWlmKCRwcm9maXQgPj0gJHN0b3Bwcm9maXQpew0KCQlwcmludCBuLmguIlN0b3AgUHJvZml0XG4iOw0KCQlnb3RvIHBvdG9uZzsNCgl9DQp9DQpwb3Rvbmc6DQpwcmludCBsaW5lKCk7DQpwcmludCBoLiJBd2FsICIubS4iOiAiLmMuJGJhbGFuY2UuIiAiLiRjb2luLmIuIiB8ICI7DQokciA9IGN1cmwoJHVybCxoKCkpWzFdOw0KJGJhbGwgPSBleHBsb2RlKCc8L3NwYW4+JyxleHBsb2RlKCc8c3BhbiBpZD0iYmFsYW5jZSI+JywkcilbMV0pWzBdOw0KcHJpbnQgaC4iQWtoaXIgIi5tLiI6ICIuYy4kYmFsbC4iICIuJGNvaW4ubjsNCnByaW50IGguIldpbiAiLnAuIjogIi5oLiR3aW5kYXQuYi4iIHwgIi5tLiJMb3NlICIucC4iOiAiLm0uJGxvc2VkYXQuYi4iIHwgIi5rLiJQcm9maXQgIi5wLiI6ICIuay4kcHJvZml0LiIgIi4kY29pbi5uOw0KcHJpbnQgbGluZSgpOw0KZ290byBtZW51Ow0KDQpoaXN0b3J5Og0KYm4oKTsNCnByaW50IG0uIklORk8iLnAuIiBUaW1lem9uZSBBc2lhL0pha2FydGFcbiI7DQpwcmludCBsaW5lKCk7DQppZihmaWxlX2dldF9jb250ZW50cygkY29uKSl7DQoJJGRhdGFiYXNlID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGNvbiksMSk7DQoJJGRhdGUgPSBhcnJheV9rZXlzKCRkYXRhYmFzZSk7DQoJZm9yZWFjaCgkZGF0ZSBhcyAkdGFuZ2dhbCl7DQoJCXByaW50IHAuIlRhbmdnYWwgOiAiLmMuJHRhbmdnYWwubjsNCgkJZm9yZWFjaCgkZGF0YWJhc2VbJHRhbmdnYWxdIGFzICRkYXRheCl7DQoJCQkka29pbiA9IGFycmF5X2tleXMoJGRhdGF4KTsNCgkJCWZvcmVhY2goJGtvaW4gYXMgJGNvaW4pew0KCQkJCXByaW50IG0uIi0gIi5jLiRjb2luLiI6ICIuaC4iV2luIi5wLiI6ICIuaC4kZGF0YXhbJGNvaW5dWyJ3aW4iXS4iIHwgIi5tLiJMb3NlIi5wLiI6ICIubS4kZGF0YXhbJGNvaW5dWyJsb3NlIl0uIiB8ICIudS4iUHJvZml0Ii5wLiI6ICIudS4kZGF0YXhbJGNvaW5dWyJwcm9maXQiXS5uOw0KCQkJCXByaW50IGxpbmUoKTsNCgkJCX0NCgkJfQ0KCX0NCglwcmludCBwLiIxICIubS4iPiAiLnAuIkhhcHVzIGhpc3RvcnlcbiI7DQoJcHJpbnQgcC4iMiAiLm0uIj4gIi5wLiJNZW51XG4iOw0KCSRoYXB1cyA9IHJlYWRsaW5lKGguIklucHV0IG51bWJlciIubS4iID4gIi5wKTsNCglwcmludCBsaW5lKCk7DQoJaWYoJGhhcHVzID09IDEpew0KCQl1bmxpbmsoJGNvbik7DQoJCXByaW50IGguIlN1Y2Nlc3MgSGFwdXMgaGlzdG9yeVxuIjsNCgkJcHJpbnQgbGluZSgpOw0KCQlleGl0Ow0KCX0NCglnb3RvIG1lbnU7DQp9ZWxzZXsNCglwcmludCBtLiJCZWx1bSBhZGEgaGlzdG9yeSB0ZXJzaW1wYW4gYmFuZ2tlXG4iOw0KCXByaW50IGxpbmUoKTsNCglnb3RvIG1lbnU7DQp9DQoNCnB0YzoNCiRhcGkgPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygiYWt1bi5qc29uIiksMSk7DQppZighJGFwaVsiYXBpa2V5Il0pew0KCXByaW50IG0uIkFwaWtleSBmcm9tIEFueWNhcHRjaGEgb25seSFcbiI7DQoJJGFwaWtleSA9IHJlYWRsaW5lKGguIklucHV0IEFwaWtleSIubS4iID4gIi5wKTsNCgkkYXBpa2VbImFwaWtleSJdID0gJGFwaWtleTsNCgkkYXBpayA9IGFycmF5X21lcmdlKCRhcGksJGFwaWtlKTsNCglzdigiYWt1bi5qc29uIiwkYXBpayk7DQp9DQokYXBpa2V5ID0gJGFwaVsiYXBpa2V5Il07DQoNCmJuKCk7DQoNCiRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcHRjJyxoKCkpWzFdOw0KJGlkID0gZXhwbG9kZSgncHRjL3ZpZXcvJywkcik7DQpmb3IoJGk9MTskaTxjb3VudCgkaWQpOyRpKyspew0KCSRwYXRjaD1leHBsb2RlKCInIiwkaWRbJGldKVswXTsNCgkkciA9IGN1cmwoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL3B0Yy92aWV3LycuJHBhdGNoLGgoKSlbMV07DQoJJGFkID0gZXhwbG9kZSgnIicsZXhwbG9kZSgnPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9IicsJHIpWzFdKVswXTsNCglwcmludCBiLiJWaXNpdCA6ICIuay4kYWQubjsNCgkkc2l0ZWtleSA9IGV4cGxvZGUoJyInLGV4cGxvZGUoJzxkaXYgY2xhc3M9ImgtY2FwdGNoYSIgZGF0YS1zaXRla2V5PSInLCRyKVsxXSlbMF07DQoJJHRtciA9IGV4cGxvZGUoJzwvc3Bhbj4nLGV4cGxvZGUoJzxzcGFuIGlkPSJkdXJhdGlvbiI+JywkcilbMV0pWzBdOw0KCSR0b2tlbiA9IGV4cGxvZGUoJyInLGV4cGxvZGUoJ25hbWU9InRva2VuIiB2YWx1ZT0iJywkcilbMV0pWzBdOw0KCXRtcigkdG1yKTsNCgkNCgkkY2FwID0gSGNhcHRjaGEoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL3B0Yy92aWV3LycuJHBhdGNoLCRzaXRla2V5LCRhcGlrZXkpOw0KCSRkYXRhID0gImctcmVjYXB0Y2hhLXJlc3BvbnNlPSIuJGNhcC4iJmgtY2FwdGNoYS1yZXNwb25zZT0iLiRjYXAuIiZ0b2tlbj0iLiR0b2tlbi4iJmNvbXBsZXRlPUdldCtDcmVkaXQiOw0KCSRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcHRjJyxoKCksJGRhdGEpWzFdOw0KCSRzcz1leHBsb2RlKCc8L2Rpdj4nLGV4cGxvZGUoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPicsJHIpWzFdKVswXTsvL0dvb2Qgam9iISBZb3UgaGF2ZSBiZWVuIGNyZWRpdGVkIHdpdGggMC4wMDAwMDAwMiBCVEMuDQoJaWYoJHNzKXsNCgkJcHJpbnQgaC4kc3MuIlxuIjsNCgl9ZWxzZXsNCgkJcHJpbnQgbS4iRXJyb3IhXG4iOw0KCX0NCglwcmludCBsaW5lKCk7DQp9DQpwcmludCBtLiJQdGMgaGFiaXNcbiI7DQpwcmludCBsaW5lKCk7DQpnb3RvIHBlc2FuOw0KDQo= 
 ?>

Did this file decode correctly?

Original Code

DQplcnJvcl9yZXBvcnRpbmcoMCk7DQpkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdBc2lhL2pha2FydGEnKTsNCmNvbnN0IA0KdGl0bGUgPSAiZmF1Y2V0cGF5IiwNCnZlcnNpID0gIjEuMSIsDQpzdGF0dXMgPSAib25saW5lIiwNCmhvc3QgPSAiZmF1Y2V0cGF5LmlvIiwNCmIgPSAiXDAzM1sxOzM0bSIsDQpjID0gIlwwMzNbMTszNm0iLA0KZCA9ICJcMDMzWzBtIiwNCmggPSAiXDAzM1sxOzMybSIsDQprID0gIlwwMzNbMTszM20iLA0KbSA9ICJcMDMzWzE7MzFtIiwNCm4gPSAiXG4iLA0KcCA9ICJcMDMzWzE7MzdtIiwNCnUgPSAiXDAzM1sxOzM1bSI7DQoNCmZ1bmN0aW9uIEN1cmwoJHUsICRoID0gMCwgJHAgPSAwLCAkeCA9IDApIHsNCgkkY2ggPSBjdXJsX2luaXQoKTsNCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdSk7DQoJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgZmFsc2UpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUUsVFJVRSk7DQoJI2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCJjb29raWUudHh0Iik7DQoJI2N1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVKQVIsImNvb2tpZS50eHQiKTsNCglpZigkcCkgew0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkcCk7DQoJfQ0KCWlmKCRoKSB7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkaCk7DQoJfQ0KCWlmKCR4KXsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTCwgdHJ1ZSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QUk9YWSwgImh0dHA6Ly9zY3JhcGVyYXBpOmU4Mzg5N2U3Y2U2YzI5YWYxZWZjOTFjNzk1ZDIxYTk2QHByb3h5LXNlcnZlci5zY3JhcGVyYXBpLmNvbTo4MDAxIik7DQoJCS8vIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QUk9YWVRZUEUsIENVUkxQUk9YWV9TT0NLUzUpOw0KCX0NCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCB0cnVlKTsNCgkkciA9IGN1cmxfZXhlYygkY2gpOw0KCSRjID0gY3VybF9nZXRpbmZvKCRjaCk7DQoJaWYoISRjKSByZXR1cm4gIkN1cmwgRXJyb3IgOiAiLmN1cmxfZXJyb3IoJGNoKTsgZWxzZXsNCgkJJGhkID0gc3Vic3RyKCRyLCAwLCBjdXJsX2dldGluZm8oJGNoLCBDVVJMSU5GT19IRUFERVJfU0laRSkpOw0KCQkkYmQgPSBzdWJzdHIoJHIsIGN1cmxfZ2V0aW5mbygkY2gsIENVUkxJTkZPX0hFQURFUl9TSVpFKSk7DQoJCWN1cmxfY2xvc2UoJGNoKTsNCgkJcmV0dXJuIGFycmF5KCRoZCwkYmQpOw0KCX0NCn0NCmZ1bmN0aW9uIEFjc3NpX2NhbHZpbigkc3RyaW5nKXsNCgkkYWNzc2kgPSBbDQoJImEiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSA4pSkIiwi4pS0IOKUtCJdLCJiIiA9PiBbIuKUjOKUkCAiLCLilJzilLTilJAiLCLilJTilIDilJgiXSwiYyIgPT4gWyLilIzilIDilJAiLCLilIIgICIsIuKUlOKUgOKUmCJdLCJkIiA9PiBbIuKUjOKUrOKUkCIsIiDilILilIIiLCLilIDilLTilJgiXSwiZSIgPT4gWyLilIzilIDilJAiLCLilJzilKQgIiwi4pSU4pSA4pSYIl0sDQoJImYiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSkICIsIuKUlCAgIl0sImciID0+IFsi4pSM4pSA4pSQIiwi4pSCIOKUrCIsIuKUlOKUgOKUmCJdLCJoIiA9PiBbIuKUrCDilKwiLCLilJzilIDilKQiLCLilLQg4pS0Il0sImkiID0+IFsi4pSsIiwi4pSCIiwi4pS0Il0sImoiID0+IFsiIOKUrCIsIiDilIIiLCLilJTilJgiXSwiayIgPT4gWyLilKzilIzilIAiLCLilJzilLTilJAiLCLilLQg4pS0Il0sDQoJImwiID0+IFsi4pSsICAiLCLilIIgICIsIuKUtOKUgOKUmCJdLCJtIiA9PiBbIuKUjOKUrOKUkCIsIuKUguKUguKUgiIsIuKUtCDilLQiXSwibiIgPT4gWyLilIzilJDilIwiLCLilILilILilIIiLCLilJjilJTilJgiXSwibyIgPT4gWyLilIzilIDilJAiLCLilIIg4pSCIiwi4pSU4pSA4pSYIl0sInAiID0+IFsi4pSM4pSA4pSQIiwi4pSc4pSA4pSYIiwi4pS0ICAiXSwNCgkicSIgPT4gWyLilIzilIDilJAgIiwi4pSC4pSA4pS84pSQIiwi4pSU4pSA4pSY4pSUIl0sInIiID0+IFsi4pSs4pSA4pSQIiwi4pSc4pSs4pSYIiwi4pS04pSU4pSAIl0sInMiID0+IFsi4pSM4pSA4pSQIiwi4pSU4pSA4pSQIiwi4pSU4pSA4pSYIl0sInQiID0+IFsi4pSM4pSs4pSQIiwiIOKUgiAiLCIg4pS0ICJdLCJ1IiA9PiBbIuKUrCDilKwiLCLilIIg4pSCIiwi4pSU4pSA4pSYIl0sDQoJInYiID0+IFsi4pSsICDilKwiLCLilJTilJDilIzilJgiLCIg4pSU4pSYICJdLCJ3IiA9PiBbIuKUrCDilKwiLCLilILilILilIIiLCLilJTilLTilJgiXSwieCIgPT4gWyLilIDilJAg4pSsIiwi4pSM4pS04pSs4pSYIiwi4pS0IOKUlOKUgCJdLCJ5IiA9PiBbIuKUrCDilKwiLCLilJTilKzilJgiLCIg4pS0ICJdLCJ6IiA9PiBbIuKUjOKUgOKUkCIsIuKUjOKUgOKUmCIsIuKUlOKUgOKUmCJdLCIgIj0+WyIgIiwiICIsIiAiXQ0KCV07DQoJJHggPSBzdHJfc3BsaXQoJHN0cmluZyk7cHJpbnQgIiAiOw0KCWZvcmVhY2goJHggYXMgJGRhdGEpe3ByaW50IGIuJGFjc3NpWyRkYXRhXVswXTt9DQoJcHJpbnQgay4iIHZlcnNpICIubS4iOiAiLmgudmVyc2kubi4iICI7DQoJZm9yZWFjaCgkeCBhcyAkZGF0YSl7cHJpbnQgYy4kYWNzc2lbJGRhdGFdWzFdO30NCglwcmludCBrLiIgc3RhdHVzIi5tLiI6ICIuaC5zdGF0dXMubi4iICI7DQoJZm9yZWFjaCgkeCBhcyAkZGF0YSl7cHJpbnQgcC4kYWNzc2lbJGRhdGFdWzJdO30NCglwcmludCAiXG4iOw0KfQ0KZnVuY3Rpb24gQm4oKXsNCglzeXN0ZW0oJ2NsZWFyJyk7DQoJJG09IlwwMzNbMTszMW0iOyRwPSJcMDMzWzE7MzdtIjskaz0iXDAzM1sxOzMzbSI7JGg9IlwwMzNbMTszMm0iOyR1PSJcMDMzWzE7MzVtIjskYj0iXDAzM1sxOzM0bSI7JGM9IlwwMzNbMTszNm0iOyRtcD0iXDAzM1sxMDFtXDAzM1sxOzM3bSI7JGNsPSJcMDMzWzBtIjskbW09IlwwMzNbMTAxbVwwMzNbMTszMW0iOyRocD0iXDAzM1sxOzdtIjsNCglwcmludCBwLnN0cl9yZXBlYXQoIuKUgCIsMTYpLm0uIj4gIi5oLiJTY3J5cHQgYnkgIi5wLiJpZXdpbCAiLm0uIjwiLnAuc3RyX3JlcGVhdCgi4pSAIiwxNSkubjsNCglBY3NzaV9jYWx2aW4odGl0bGUpOw0KCXByaW50IExpbmUoKTsNCglwcmludCAieyRtbX1beyRtcH3ilrZ7JG1tfV17JGNsfSB7JGt9aHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9pZXdpbFxueyRjfXskaHB9ID5feyRjbH17JGJ9IFRlYW0tRnVuY3Rpb24tSU5ET1xueyRwfeKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIjsNCglwcmludCBtLiJ7JG1tfVt7JG1wfSF7JG1tfV0iLiRjbC5tLiIgU0NSSVBUIEdSQVRJUyBUSURBSyBVTlRVSyBESSBPQlJBTCEiLm4ucC4i4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiI7DQp9DQpmdW5jdGlvbiBMaW5lKCR4PTApew0KCSRsID0gNTA7DQoJaWYoJHgpew0KCQlyZXR1cm4geCgkeCxiLnN0cl9yZXBlYXQoJ+KUgCcsJGwtMykubik7DQoJfWVsc2V7DQoJCXJldHVybiBiLnN0cl9yZXBlYXQoJ+KUgCcsJGwpLm47DQoJfQ0KfQ0KZnVuY3Rpb24gSGNhcHRjaGEoJHNpdGV1cmwsJHNpdGVrZXksJGFwaWtleSl7DQoJJHVhPVsiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIl07DQoJJGhvc3Q9Imh0dHBzOi8vYXBpLmFueWNhcHRjaGEuY29tIjsNCgkkZGF0YT1qc29uX2VuY29kZShhcnJheSgiY2xpZW50S2V5Ij0+JGFwaWtleSwidGFzayI9PmFycmF5KCJ0eXBlIj0+IkhDYXB0Y2hhVGFza1Byb3h5bGVzcyIsIndlYnNpdGVVUkwiPT4kc2l0ZXVybCwid2Vic2l0ZUtleSI9PiRzaXRla2V5KSkpOw0KCSRDcmVhdGU9anNvbl9kZWNvZGUoY3VybCgkaG9zdC4nL2NyZWF0ZVRhc2snLCR1YSwkZGF0YSlbMV0pOw0KCWlmKCRDcmVhdGUtPmVycm9ySWQgPT0gJzEnKXsNCgkJcHJpbnQgbS4kQ3JlYXRlLT5lcnJvckNvZGUubjsNCgkJZXhpdDsNCgl9ZWxzZXsNCgkJJFRhc2s9JENyZWF0ZS0+dGFza0lkOw0KCQl3aGlsZSh0cnVlKXsNCgkJCWVjaG8gbS4icHJvY2Vzc2luZy4uLiI7DQoJCQkkYmFzZT1qc29uX2VuY29kZShhcnJheSgiY2xpZW50S2V5Ij0+JGFwaWtleSwidGFza0lkIj0+JFRhc2spKTsNCgkJCSRSZXN1bHQ9anNvbl9kZWNvZGUoY3VybCgkaG9zdC4nL2dldFRhc2tSZXN1bHQnLCR1YSwkYmFzZSlbMV0pOw0KCQkJaWYoJFJlc3VsdC0+c3RhdHVzPT0ncHJvY2Vzc2luZycpew0KCQkJCWVjaG8gIlxyICAgICAgICAgICAgIFxyIjsNCgkJCQllY2hvIG0uInByb2Nlc3NpbmcuLi4uLi4iOw0KCQkJCXNsZWVwKDUpOw0KCQkJCWVjaG8gIlxyICAgICAgICAgICAgICAgIFxyIjsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCWVjaG8gIlxyICAgICAgICAgICAgICAgIFxyIjsNCgkJCXJldHVybiAkUmVzdWx0LT5zb2x1dGlvbi0+Z1JlY2FwdGNoYVJlc3BvbnNlOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gc3YoJGRhdGEsJGRhdGFfcG9zdCl7DQogICAgaWYoIWZpbGVfZ2V0X2NvbnRlbnRzKCRkYXRhKSl7DQogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkYXRhLCJbXSIpO30NCiAgICAgICAgJGpzb249anNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGRhdGEpLDEpOw0KICAgICAgICAkYXJyPWFycmF5X21lcmdlKCRqc29uLCRkYXRhX3Bvc3QpOw0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZGF0YSxqc29uX2VuY29kZSgkYXJyLEpTT05fUFJFVFRZX1BSSU5UKSk7DQp9DQpmdW5jdGlvbiB0bXIoJHRtcil7DQoJJHRpbXI9dGltZSgpKyR0bXI7DQoJd2hpbGUodHJ1ZSl7DQoJCXByaW50ICJcciAgICAgICAgICAgICAgICAgICAgICAgXHIiOw0KCQkkcmVzPSR0aW1yLXRpbWUoKTsNCgkJaWYoJHJlcyA8IDEpe2JyZWFrO30NCgkJcHJpbnQgcC5kYXRlKCdpOnMnLCRyZXMpO3NsZWVwKDEpOw0KCX0NCn0NCmZ1bmN0aW9uIGgoKXsNCgkkeCA9IGpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCJha3VuLmpzb24iKSwxKTsNCgkkaFtdID0gInVzZXItYWdlbnQ6ICIuJHhbInVzZXJfYWdlbnQiXTsNCgkkaFtdID0gImNvb2tpZTogIi4keFsiY29va2llIl07DQoJcmV0dXJuICRoOw0KfQ0KZnVuY3Rpb24gcmF0YSgkc3RyLCR4PTAsJHk9MCwkej0wKXsNCglpZigkeSl7DQoJCSRsZW4gPSA1Ow0KCX1lbHNlaWYoJHopew0KCQkkbGVuID0gMjsNCgl9ZWxzZXsNCgkJJGxlbiA9IDEyOw0KCX0NCglpZihzdHJsZW4oJHN0cik+MTIpew0KCQkkc3RyID0gc3Vic3RyKCRzdHIsMCwxMik7DQoJfQ0KCSRsZW5zdHIgPSAkbGVuLXN0cmxlbigkc3RyKTsNCglpZigkeCl7DQoJCXJldHVybiAkc3RyLnN0cl9yZXBlYXQoIiAiLCRsZW5zdHIpOw0KCX1lbHNlew0KCQlyZXR1cm4gJHN0ci5zdHJfcmVwZWF0KCIgIiwkbGVuc3RyKS5iLiJ8IjsNCgl9DQp9DQpmdW5jdGlvbiBQYXNzKCRjaGVjaz0wKXsNCglwYXNzd29yZHVsYW5nOg0KCSRkYXRhYmFzZSA9ICIuLmRhdGEiOw0KCSRwYXNzd29yZCA9ICIuLnBhc3N3b3JkIjsNCgkkc2VjcmV0ID0gZ3pjb21wcmVzcyhkYXRlKCJkbVkiKSk7DQoJaWYoJGNoZWNrKXsNCgkJJGNlayA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXNzd29yZCk7DQoJCWlmKCRjZWsgPT0gJHNlY3JldCl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfWVsc2V7DQoJCQlwcmludCBtLiJQYXNzd29yZCBFeHBpcmVkISIubjsNCgkJCXByaW50IGxpbmUoKTsNCgkJCXVubGluaygkcGFzc3dvcmQpOw0KCQl9DQoJfQ0KCWlmKCFmaWxlX2dldF9jb250ZW50cygkZGF0YWJhc2UpKXsNCgkJJGJhc2UgPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9zaG9ydC0zMC1kZWZhdWx0LXJ0ZGIuZmlyZWJhc2Vpby5jb20vcHJlbWl1bS9zaG9ydC5qc29uIik7DQoJCWZpbGVfcHV0X2NvbnRlbnRzKCRkYXRhYmFzZSxnemNvbXByZXNzKCRiYXNlKSk7DQoJCWdvdG8gcGFzc3dvcmR1bGFuZzsNCgl9ZWxzZXsNCgkJJGRhdGEgPSBqc29uX2RlY29kZShnenVuY29tcHJlc3MoZmlsZV9nZXRfY29udGVudHMoJGRhdGFiYXNlKSksMSlbIlQiLmRhdGUoImRtWSIpXTsNCgkJaWYoISRkYXRhKXsNCgkJCXVubGluaygkZGF0YWJhc2UpOw0KCQkJZ290byBwYXNzd29yZHVsYW5nOw0KCQl9DQoJfQ0KCWlmKCFmaWxlX2dldF9jb250ZW50cygkcGFzc3dvcmQpKXsNCgkJQm4oKTsNCgkJcHJpbnQgaC4iIExpbmsgICAgICIucC4iOiAiLmsuJGRhdGFbInNob3J0bGluayJdLiJcbiI7DQoJCSRwYXMgPSByZWFkbGluZShoLiIgUGFzc3dvcmQgIi5wLiI6ICIuayk7DQoJCWlmKCRwYXMgPT0gJGRhdGFbInBhc3N3b3JkIl0pew0KCQkJZmlsZV9wdXRfY29udGVudHMoJHBhc3N3b3JkLCRzZWNyZXQpOw0KCQkJcHJpbnQgaC4iIC0tLSBUcnVlIFBhc3N3b3JkICIubjsNCgkJCXNsZWVwKDMpOw0KCQl9ZWxzZXsNCgkJCXByaW50IG0uIiAtLS0gSW52YWxpZCBQYXNzd29yZCEiLm47DQoJCQlnb3RvIHBhc3N3b3JkdWxhbmc7DQoJCX0NCgl9ZWxzZXsNCgkJJGNlayA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXNzd29yZCk7DQoJCWlmKCRjZWsgPT0gJHNlY3JldCl7DQoJCQlwcmludCBoLiIgLS0tIFRydWUgUGFzc3dvcmQgIi5uOw0KCQl9ZWxzZXsNCgkJCXVubGluaygkcGFzc3dvcmQpOw0KCQkJZ290byBwYXNzd29yZHVsYW5nOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGF0YSgpew0KCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcGFnZS91c2VyLWFkbWluIjsNCgkkciA9IGN1cmwoJHVybCxoKCkpWzFdOw0KCXByZWdfbWF0Y2hfYWxsKCcjPHNwYW4gY2xhc3M9InR4LWNvbG9yLTAzIHR4LW5vcm1hbCI+KC4qPyk8L3NwYW4+PC9oNj4gPGRpdiBjbGFzcz0iZC1mbGV4IGFsaWduLWl0ZW1zLWJhc2VsaW5lIHR4LXJ1YmlrIj4gPGg1IGNsYXNzPSJ0eC0yMCBtZy1iLTAiPiguKj8pPC9oNT4jaXMnLCRyLCRiYWwpOw0KCXJldHVybiBbJGJhbFsxXSwkYmFsWzJdXTsNCn0NCi8vcGFzcygpOw0KLy9hd2FsDQpibigpOw0KY29raToNCmlmKCFmaWxlX2dldF9jb250ZW50cygiYWt1bi5qc29uIikpew0KCSRhY2NbImNvb2tpZSJdID0gcmVhZGxpbmUoaC4iSW5wdXQgQ29va2llIi5tLiIgPiAiLnApOw0KCSRhY2NbInVzZXJfYWdlbnQiXSA9IHJlYWRsaW5lKG4uaC4iSW5wdXQgVXNlcl9BZ2VudCIubS4iID4gIi5wKTsNCglzdigiYWt1bi5qc29uIiwkYWNjKTsNCn0NCmJuKCk7DQokciA9IGN1cmwoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL2FjY291bnQvc2V0dGluZ3MnLGgoKSlbMV07DQokdW5hbWUgPSBleHBsb2RlKCciJyxleHBsb2RlKCc8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0idGV4dCIgbmFtZT0idGV4dCIgdmFsdWU9IicsJHIpWzFdKVswXTsNCmlmKCEkdW5hbWUpe3VubGluaygnYWt1bi5qc29uJyk7Z290byBjb2tpO30NCnByaW50IGguIlVzZXJuYW1lICIubS4iOiAiLnAuJHVuYW1lLm47DQpwcmludCBsaW5lKCk7DQoNCiRyID0gZGF0YSgpOw0KZm9yKCRpPTA7JGk8Y291bnQoJHJbMV0pOyRpKyspew0KCWlmKCRpICUgMiA9PSAwKXsNCgkJcHJpbnQgay5yYXRhKHN0cl9yZXBsYWNlKFsiKCIsIikiXSxbIiIsIiJdLCRyWzBdWyRpXSksIiIsMSkubS4iIDogIi5wLiRyWzFdWyRpXS5tLiIgfCAiOw0KCX1lbHNlew0KCQlwcmludCBrLnJhdGEoc3RyX3JlcGxhY2UoWyIoIiwiKSJdLFsiIiwiIl0sJHJbMF1bJGldKSwiIiwxKS5tLiIgOiAiLnAuJHJbMV1bJGldLm47DQoJfQ0KfQ0KcHJpbnQgbjsNCnByaW50IGxpbmUoKTsNCg0KcGVzYW46DQpwcmludCBwLiIxICIubS4iPiAiLnAuIlB0Y1xuIjsNCnByaW50IHAuIjIgIi5tLiI+ICIucC4iRGljZVxuIjsNCiRwZXNhbiA9IHJlYWRsaW5lKGguJ0lucHV0IE51bWJlcicubS4nID4gJy5wKTsNCnByaW50IGxpbmUoKTsNCmlmKCRwZXNhbj09MSl7Z290byBwdGM7DQp9ZWxzZWlmKCRwZXNhbj09Mil7Z290byBtZW51Ow0KfWVsc2V7DQoJcHJpbnQgbS4iVE9MT0whXG4iOw0KCWV4aXQ7DQp9DQoNCg0KLy9kaWNlDQptZW51Og0KJGNvbiA9ICIuaGlzdG9yeSI7DQokZGljZSA9ICJkaWNlLmpzb24iOw0KDQpwcmludCBwLiIxICIubS4iPiAiLnAuIkxhc3QgRGF0YVxuIjsNCnByaW50IHAuIjIgIi5tLiI+ICIucC4iTmV3IERhdGFcbiI7DQpwcmludCBwLiIzICIubS4iPiAiLnAuIkhpc3RvcnlcbiI7DQokcGlsID0gcmVhZGxpbmUoaC4nSW5wdXQgTnVtYmVyJy5tLicgPiAnLnApOw0KcHJpbnQgbGluZSgpOw0KaWYoJHBpbD09MSl7Z290byBsYXN0ZGF0YTsNCn1lbHNlaWYoJHBpbD09Mil7Z290byBuZXdkYXRhOw0KfWVsc2VpZigkcGlsPT0zKXtnb3RvIGhpc3Rvcnk7DQp9ZWxzZXsNCglwcmludCBtLiJUT0xPTCFcbiI7DQoJZXhpdDsNCn0NCmxhc3RkYXRhOg0KaWYoZmlsZV9nZXRfY29udGVudHMoJGRpY2UpKXsNCgkkZGMgPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygkZGljZSksMSk7DQoJaWYoJGRjWyJjb2luIl0gJiYgJGRjWyJzaGVlZCJdICYmICRkY1siYmV0Il0gJiYgJGRjWyJyb2xsIl0gJiYgJGRjWyJzdG9wX2xvc3MiXSAmJiAkZGNbInN0b3BfcHJvZml0Il0pew0KCQkkY29pbiA9ICRkY1siY29pbiJdOw0KCQkkc2hlZWQgPSAkZGNbInNoZWVkIl07DQoJCSRiZXRpID0gJGRjWyJiZXQiXTsNCgkJJHJvbGwgPSAkZGNbInJvbGwiXTsNCgkJJHN0b3Bsb3NzID0gJGRjWyJzdG9wX2xvc3MiXTsNCgkJJHN0b3Bwcm9maXQgPSAkZGNbInN0b3BfcHJvZml0Il07DQoJCWdvdG8gZ2FzczsNCgl9ZWxzZXsNCgkJdW5saW5rKCRkaWNlKTsNCgkJZ290byBsYXN0ZGF0YTsNCgl9DQp9ZWxzZXsNCglwcmludCBtLiJFcnJvciAiLnAuIn4+ICIubS4iTG9zdCBkYXRhXG4iOw0KCXByaW50IGxpbmUoKTsNCglnb3RvIG5ld2RhdGE7DQp9DQpuZXdkYXRhOg0KJGNvaW4gPSByZWFkbGluZShoLiJJbnB1dCBjb2luICIubS4iPiAiLnApOw0KJHNoZWVkID0gcmVhZGxpbmUoaC4iSW5wdXQgY2xpZW50IHNoZWVkICIubS4iPiAiLnApOw0KJGJldGkgPSByZWFkbGluZShoLiJCZXQgYW1tb3VudCAiLm0uIj4gIi5wKTsNCiRyb2xsID0gcmVhZGxpbmUoaC4iQW1tb3VudCBSb2xsICIubS4iPiAiLnApOw0KJHN0b3Bsb3NzID0gcmVhZGxpbmUoaC4iU3RvcCBsb3NzICIubS4iPiAiLnApOw0KJHN0b3Bwcm9maXQgPSByZWFkbGluZShoLiJTdG9wIHByb2ZpdCAiLm0uIj4gIi5wKTsNCiRkY1siY29pbiJdID0gJGNvaW47DQokZGNbInNoZWVkIl0gPSAkc2hlZWQ7DQokZGNbImJldCJdID0gJGJldGk7DQokZGNbInJvbGwiXSA9ICRyb2xsOw0KJGRjWyJzdG9wX2xvc3MiXSA9ICRzdG9wbG9zczsNCiRkY1sic3RvcF9wcm9maXQiXSA9ICRzdG9wcHJvZml0Ow0Kc3YoJGRpY2UsJGRjKTsNCg0KZ2FzczoNCiRiZXQgPSAkYmV0aTsNCiRiZXR0ID0gJGJldDsNCmJuKCk7DQoNCiRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZScsaCgpKVsxXTsNCiRpZD0gZXhwbG9kZSgiamF2YXNjcmlwdDp1c2VDb2luKCciLCRyKTsNCiRpZGMgPSBbXTsNCmZvcigkaT0xOyRpPGNvdW50KCRpZCk7JGkrKyl7DQoJJGNvaW5zID0gZXhwbG9kZSgnICcsZXhwbG9kZSgnPC9hPicsZXhwbG9kZSgnOyI+JywkaWRbJGldKVsxXSlbMF0pWzFdOw0KCSRpZHMgPSBleHBsb2RlKCInKTsiLCRpZFskaV0pWzBdOw0KCSRpZGNbJGNvaW5zXSA9ICRpZHM7DQp9DQokY29pbiA9IHN0cnRvdXBwZXIoJGNvaW4pOw0KaWYoJGlkY1skY29pbl0pew0KCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZT9jPSIuJGlkY1skY29pbl07DQp9ZWxzZXsNCglpZigkY29pbiA9PSAiQlRDIil7DQoJCSR1cmwgPSAiaHR0cHM6Ly9mYXVjZXRwYXkuaW8vZGljZSI7DQoJfWVsc2V7DQoJCXByaW50IG0uIlRvbG9sISIubjsNCgkJZXhpdDsNCgl9DQp9DQokZHR4ID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGNvbiksMSlbZGF0ZSgnZC9NL3knKV1bImhpc3RvcnkiXTsNCiR3aW4gPSAkZHR4WyRjb2luXVsid2luIl07DQokbG9zZSA9ICRkdHhbJGNvaW5dWyJsb3NlIl07DQokcHJvZiA9ICRkdHhbJGNvaW5dWyJwcm9maXQiXTsNCg0KJHIgPSBjdXJsKCR1cmwsaCgpKVsxXTsNCiRiYWxhbmNlID0gZXhwbG9kZSgnPC9zcGFuPicsZXhwbG9kZSgnPHNwYW4gaWQ9ImJhbGFuY2UiPicsJHIpWzFdKVswXTsNCnByaW50IGguIkNvaW4gICAgICAgIi5tLiI6ICIuYy4kY29pbi5uOw0KcHJpbnQgaC4iQmFsYW5jZSAgICAiLm0uIjogIi5jLiRiYWxhbmNlLm47DQpwcmludCBsaW5lKCk7DQpwcmludCBoLiJTaGVlZCAgICAgICIubS4iOiAiLmMuc3Vic3RyKCRzaGVlZCwwLDEwKS5wLiIuLi4iLm47DQpwcmludCBoLiJCZXQgICAgICAgICIubS4iOiAiLmMuJGJldC5uOw0KcHJpbnQgaC4iTnVtIFJvbGwgICAiLm0uIjogIi5jLiRyb2xsLm47DQpwcmludCBoLiJTdG9wIExvc3MgICIubS4iOiAiLmMuJHN0b3Bsb3NzLm47DQpwcmludCBoLiJTdG9wIFByb2ZpdCIubS4iOiAiLmMuJHN0b3Bwcm9maXQubjsNCnByaW50IGxpbmUoKTsNCnByaW50IHAucmF0YSgiQmFsYW5jZSIpLnAucmF0YSgiQmV0IikucC5yYXRhKCJITCIsIiIsIiIsMSkucC5yYXRhKCJSb2xsIiwiIiwxKS5wLnJhdGEoIlByb2ZpdCIpLnAucmF0YSgiV1IiLDEsMSkubjsNCnByaW50IGxpbmUoKTsNCg0KZm9yKCRpPSRyb2xsOyRpPjA7JGktLSl7DQoJaWYoIWV4cGxvZGUoJyInLGV4cGxvZGUoJzxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ0ZXh0IiB2YWx1ZT0iJyxjdXJsKCdodHRwczovL2ZhdWNldHBheS5pby9hY2NvdW50L3NldHRpbmdzJyxoKCkpWzFdKVsxXSlbMF0pew0KCQl1bmxpbmsoImFrdW4uanNvbiIpOw0KCQlnb3RvIGNva2k7DQoJfQ0KCSRoaWxvID0gcmFuZCgxLDIpOw0KCSRkYXRhID0gInBsYXk9dHJ1ZSZjb2luPSIuJGNvaW4uIiZjbGllbnRfc2VlZD0iLiRzaGVlZC4iJmJldF9hbXQ9Ii4kYmV0dC4iJnByb2ZpdD0iLiRiZXR0LiImcGF5b3V0PSIuJHBheW91dC4iJndpbm5pbmdfY2hhbmNlPSIuJHdpbl9jaGFuY2UuIiZwcmVkaWN0aW9uPSIuJGhpbG87DQoJJHIgPSBqc29uX2RlY29kZShjdXJsKCJodHRwczovL2ZhdWNldHBheS5pby9kaWNlL3BsYXkiLGgoKSwkZGF0YSlbMV0sMSk7DQoJaWYoJHJbImVycm9yIl0pew0KCQlleGl0KG0uJHJbIm1lc3NhZ2UiXS5uKTsNCgl9DQoJDQoJKCRoaWxvPT0xKT8gJGhpID0gbS5yYXRhKCJIaSIsIiIsIiIsMSk6JGhpPSBoLnJhdGEoIkxvIiwiIiwiIiwxKTsNCglwcmludCBwLnJhdGEoJHJbImJhbGFuY2UiXSk7DQoJaWYoJGJldHQ+JGJldCl7DQoJCXByaW50IGsucmF0YSgkYmV0dCk7DQoJfWVsc2V7DQoJCXByaW50IHAucmF0YSgkYmV0dCk7DQoJfQ0KCXByaW50ICRoaTsNCglwcmludCBwLnJhdGEoJHJbInJvbGwiXSwiIiwxKTsNCglpZigkclsid2luIl0pew0KCQkkcHJvZml0ICA9IHNwcmludGYoJyUuOGYnLGZsb2F0dmFsKCRwcm9maXQrJGJldHQpKTsNCgkJJHByb2ZpdDEgPSBleHBsb2RlKCcuJywkcHJvZml0KVswXTsNCgkJJHByb2ZpdDIgPSBzdWJzdHIoZXhwbG9kZSgnLicsJHByb2ZpdClbMV0sMCw4KTsNCgkJJHByb2ZpdCA9ICRwcm9maXQxLiIuIi4kcHJvZml0MjsNCgkJcHJpbnQgaC5yYXRhKCIrIi4kYmV0dCk7DQoJCSRiZXR0ID0gJGJldDsNCgkJJHdpbis9MTskd2luZGF0Kz0xOw0KCQkkd3IgPSAxMDA7DQoJfWVsc2V7DQoJCSRwcm9maXQgID0gc3ByaW50ZignJS44ZicsZmxvYXR2YWwoJHByb2ZpdC0kYmV0dCkpOw0KCQkkcHJvZml0MSA9IGV4cGxvZGUoJy4nLCRwcm9maXQpWzBdOw0KCQkkcHJvZml0MiA9IHN1YnN0cihleHBsb2RlKCcuJywkcHJvZml0KVsxXSwwLDgpOw0KCQkkcHJvZml0ID0gJHByb2ZpdDEuIi4iLiRwcm9maXQyOw0KCQlwcmludCBtLnJhdGEoIi0iLiRiZXR0KTsNCgkJJGJldHQqPTI7DQoJCSRiZXR0ID0gc3ByaW50ZignJS44ZicsZmxvYXR2YWwoJGJldHQpKTsNCgkJJGxvc2UrPTE7JGxvc2VkYXQrPTE7DQoJCSR3ciA9IDA7DQoJfQ0KCWlmKCR3aW4gJiYgJGxvc2Upew0KCQkkd3IgPSAoJHdpbi8oJHdpbiskbG9zZSkpKjEwMDsNCgkJJHdyID0gc3Vic3RyKCR3ciwwLDQpOw0KCX0NCglwcmludCB1LnJhdGEoJHdyLiIlIiwxLDEpLm47DQoJDQoJJGhpc3RvcnlbIndpbiJdID0gJHdpbjsNCgkkaGlzdG9yeVsibG9zZSJdID0gICRsb3NlOw0KCSRoaXN0b3J5WyJwcm9maXQiXSA9IHNwcmludGYoJyUuOGYnLGZsb2F0dmFsKCRwcm9maXQrJHByb2YpKTsNCglpZigkZHR4KXsNCgkJJHhbZGF0ZSgnZC9NL3knKV0gPSBbImhpc3RvcnkiID0+IGFycmF5X21lcmdlKCRkdHgsWyRjb2luID0+JGhpc3RvcnldKV07DQoJfWVsc2V7DQoJCSR4W2RhdGUoJ2QvTS95JyldID0gWyJoaXN0b3J5IiA9PiBbJGNvaW4gPT4kaGlzdG9yeV1dOw0KCX0NCglzdigkY29uLCR4KTsNCglpZigkYmV0dCA+PSAkc3RvcGxvc3Mpew0KCQlwcmludCBuLm0uIlN0b3AgTG9zc1xuIjsNCgkJZ290byBwb3Rvbmc7DQoJfQ0KCWlmKCRwcm9maXQgPj0gJHN0b3Bwcm9maXQpew0KCQlwcmludCBuLmguIlN0b3AgUHJvZml0XG4iOw0KCQlnb3RvIHBvdG9uZzsNCgl9DQp9DQpwb3Rvbmc6DQpwcmludCBsaW5lKCk7DQpwcmludCBoLiJBd2FsICIubS4iOiAiLmMuJGJhbGFuY2UuIiAiLiRjb2luLmIuIiB8ICI7DQokciA9IGN1cmwoJHVybCxoKCkpWzFdOw0KJGJhbGwgPSBleHBsb2RlKCc8L3NwYW4+JyxleHBsb2RlKCc8c3BhbiBpZD0iYmFsYW5jZSI+JywkcilbMV0pWzBdOw0KcHJpbnQgaC4iQWtoaXIgIi5tLiI6ICIuYy4kYmFsbC4iICIuJGNvaW4ubjsNCnByaW50IGguIldpbiAiLnAuIjogIi5oLiR3aW5kYXQuYi4iIHwgIi5tLiJMb3NlICIucC4iOiAiLm0uJGxvc2VkYXQuYi4iIHwgIi5rLiJQcm9maXQgIi5wLiI6ICIuay4kcHJvZml0LiIgIi4kY29pbi5uOw0KcHJpbnQgbGluZSgpOw0KZ290byBtZW51Ow0KDQpoaXN0b3J5Og0KYm4oKTsNCnByaW50IG0uIklORk8iLnAuIiBUaW1lem9uZSBBc2lhL0pha2FydGFcbiI7DQpwcmludCBsaW5lKCk7DQppZihmaWxlX2dldF9jb250ZW50cygkY29uKSl7DQoJJGRhdGFiYXNlID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGNvbiksMSk7DQoJJGRhdGUgPSBhcnJheV9rZXlzKCRkYXRhYmFzZSk7DQoJZm9yZWFjaCgkZGF0ZSBhcyAkdGFuZ2dhbCl7DQoJCXByaW50IHAuIlRhbmdnYWwgOiAiLmMuJHRhbmdnYWwubjsNCgkJZm9yZWFjaCgkZGF0YWJhc2VbJHRhbmdnYWxdIGFzICRkYXRheCl7DQoJCQkka29pbiA9IGFycmF5X2tleXMoJGRhdGF4KTsNCgkJCWZvcmVhY2goJGtvaW4gYXMgJGNvaW4pew0KCQkJCXByaW50IG0uIi0gIi5jLiRjb2luLiI6ICIuaC4iV2luIi5wLiI6ICIuaC4kZGF0YXhbJGNvaW5dWyJ3aW4iXS4iIHwgIi5tLiJMb3NlIi5wLiI6ICIubS4kZGF0YXhbJGNvaW5dWyJsb3NlIl0uIiB8ICIudS4iUHJvZml0Ii5wLiI6ICIudS4kZGF0YXhbJGNvaW5dWyJwcm9maXQiXS5uOw0KCQkJCXByaW50IGxpbmUoKTsNCgkJCX0NCgkJfQ0KCX0NCglwcmludCBwLiIxICIubS4iPiAiLnAuIkhhcHVzIGhpc3RvcnlcbiI7DQoJcHJpbnQgcC4iMiAiLm0uIj4gIi5wLiJNZW51XG4iOw0KCSRoYXB1cyA9IHJlYWRsaW5lKGguIklucHV0IG51bWJlciIubS4iID4gIi5wKTsNCglwcmludCBsaW5lKCk7DQoJaWYoJGhhcHVzID09IDEpew0KCQl1bmxpbmsoJGNvbik7DQoJCXByaW50IGguIlN1Y2Nlc3MgSGFwdXMgaGlzdG9yeVxuIjsNCgkJcHJpbnQgbGluZSgpOw0KCQlleGl0Ow0KCX0NCglnb3RvIG1lbnU7DQp9ZWxzZXsNCglwcmludCBtLiJCZWx1bSBhZGEgaGlzdG9yeSB0ZXJzaW1wYW4gYmFuZ2tlXG4iOw0KCXByaW50IGxpbmUoKTsNCglnb3RvIG1lbnU7DQp9DQoNCnB0YzoNCiRhcGkgPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygiYWt1bi5qc29uIiksMSk7DQppZighJGFwaVsiYXBpa2V5Il0pew0KCXByaW50IG0uIkFwaWtleSBmcm9tIEFueWNhcHRjaGEgb25seSFcbiI7DQoJJGFwaWtleSA9IHJlYWRsaW5lKGguIklucHV0IEFwaWtleSIubS4iID4gIi5wKTsNCgkkYXBpa2VbImFwaWtleSJdID0gJGFwaWtleTsNCgkkYXBpayA9IGFycmF5X21lcmdlKCRhcGksJGFwaWtlKTsNCglzdigiYWt1bi5qc29uIiwkYXBpayk7DQp9DQokYXBpa2V5ID0gJGFwaVsiYXBpa2V5Il07DQoNCmJuKCk7DQoNCiRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcHRjJyxoKCkpWzFdOw0KJGlkID0gZXhwbG9kZSgncHRjL3ZpZXcvJywkcik7DQpmb3IoJGk9MTskaTxjb3VudCgkaWQpOyRpKyspew0KCSRwYXRjaD1leHBsb2RlKCInIiwkaWRbJGldKVswXTsNCgkkciA9IGN1cmwoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL3B0Yy92aWV3LycuJHBhdGNoLGgoKSlbMV07DQoJJGFkID0gZXhwbG9kZSgnIicsZXhwbG9kZSgnPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9IicsJHIpWzFdKVswXTsNCglwcmludCBiLiJWaXNpdCA6ICIuay4kYWQubjsNCgkkc2l0ZWtleSA9IGV4cGxvZGUoJyInLGV4cGxvZGUoJzxkaXYgY2xhc3M9ImgtY2FwdGNoYSIgZGF0YS1zaXRla2V5PSInLCRyKVsxXSlbMF07DQoJJHRtciA9IGV4cGxvZGUoJzwvc3Bhbj4nLGV4cGxvZGUoJzxzcGFuIGlkPSJkdXJhdGlvbiI+JywkcilbMV0pWzBdOw0KCSR0b2tlbiA9IGV4cGxvZGUoJyInLGV4cGxvZGUoJ25hbWU9InRva2VuIiB2YWx1ZT0iJywkcilbMV0pWzBdOw0KCXRtcigkdG1yKTsNCgkNCgkkY2FwID0gSGNhcHRjaGEoJ2h0dHBzOi8vZmF1Y2V0cGF5LmlvL3B0Yy92aWV3LycuJHBhdGNoLCRzaXRla2V5LCRhcGlrZXkpOw0KCSRkYXRhID0gImctcmVjYXB0Y2hhLXJlc3BvbnNlPSIuJGNhcC4iJmgtY2FwdGNoYS1yZXNwb25zZT0iLiRjYXAuIiZ0b2tlbj0iLiR0b2tlbi4iJmNvbXBsZXRlPUdldCtDcmVkaXQiOw0KCSRyID0gY3VybCgnaHR0cHM6Ly9mYXVjZXRwYXkuaW8vcHRjJyxoKCksJGRhdGEpWzFdOw0KCSRzcz1leHBsb2RlKCc8L2Rpdj4nLGV4cGxvZGUoJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPicsJHIpWzFdKVswXTsvL0dvb2Qgam9iISBZb3UgaGF2ZSBiZWVuIGNyZWRpdGVkIHdpdGggMC4wMDAwMDAwMiBCVEMuDQoJaWYoJHNzKXsNCgkJcHJpbnQgaC4kc3MuIlxuIjsNCgl9ZWxzZXsNCgkJcHJpbnQgbS4iRXJyb3IhXG4iOw0KCX0NCglwcmludCBsaW5lKCk7DQp9DQpwcmludCBtLiJQdGMgaGFiaXNcbiI7DQpwcmludCBsaW5lKCk7DQpnb3RvIHBlc2FuOw0KDQo=

Function Calls

None

Variables

None

Stats

MD5 1e188c4c3fa2089de9c5c34a8daa0892
Eval Count 0
Decode Time 237 ms