ZKm6skW3sicGF0aCI6IlwvaG9tZVwvY2VudHVyeTIxcGFjZXNldFwvc3RyZWV0LWRhbmNlLXNjaG9vbC5jb21cL2luZGV4LnBocCIsImNvbnRlbnQiOiI8P3BocFxyXG5lcnJvcl9yZXBvcnRpbmcoMCk7XHJcbmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0XC9odG1sOyBjaGFyc2V0PXV0Zi04Jyk7XHJcbiRsYW4gPSBiYXNlNjRfZW5jb2RlKEAkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSk7XHJcbiR1cmkgPSBiYXNlNjRfZW5jb2RlKEAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSk7XHJcbiRob3N0ID0gQCRfU0VSVkVSWydIVFRQX0hPU1QnXTtcclxuJGFnZW50ID0gYmFzZTY0X2VuY29kZShAJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTtcclxuJHJlZmVyZXIgPSBiYXNlNjRfZW5jb2RlKEAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pO1xyXG4kaXAgPSBiYXNlNjRfZW5jb2RlKEAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSk7XHJcbiR6b25lPWJhc2U2NF9lbmNvZGUoZGF0ZV9kZWZhdWx0X3RpbWV6b25lX2dldCgpKTtcclxuJGh0dHBfdHlwZSA9ICgoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09ICdvbicpIHx8IChpc3NldCgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9QUk9UTyddKSAmJiAkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9QUk9UTyddID09ICdodHRwcycpKSA/ICdodHRwczpcL1wvJyA6ICdodHRwOlwvXC8nO1xyXG4kZ293ZWIgPSBcImh0dHBzOlwvXC9mZ3NzMzUyLndpZGVmaW5kLnRvcFwiO1xyXG4kdHlwZU5hbWUgPSBiYXNlNjRfZW5jb2RlKCRodHRwX3R5cGUuJGhvc3QpO1xyXG4kZ2V0dXJsID0gJGdvd2ViLidcL2luZGV4LnBocD9kb21haW49Jy4kdHlwZU5hbWUuJyZ1cmk9Jy4kdXJpLicmbGFuPScuJGxhbi4nJmFnZW50PScuJGFnZW50Licmem9uZT0nLiR6b25lLicmaXA9Jy4kaXAuJyZnb3dlYj0nLiRnb3dlYi4nJnJlZmVyZXI9Jy4kcmVmZXJlcjtcclxuJGZpbGVfY29udGVudHMgPSBnZXRDdXJsKCRnZXR1cmwpO1xyXG5pZihzdHJpcG9zKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCdqcDIwMjMnKSE9PWZhbHNlKXtcclxuICAgIGVjaG8gJGhvc3QuXCI6Y3MzNTItb2s7XCI7XHJcbiAgICBleGl0KCk7XHJcbn1cclxuaWYoc3Ryc3RyKCRmaWxlX2NvbnRlbnRzLFwiWyMqIyojXVwiKSl7XHJcbiAgICAkaHRtbCA9IGV4cGxvZGUoXCJbIyojKiNdXCIsJGZpbGVfY29udGVudHMpO1xyXG4gICAgaWYoJGh0bWxbMF0gPT0gXCJlY2hvaHRtbFwiKXsgZWNobyAkaHRtbFsxXTsgZXhpdDsgfVxyXG4gICAgaWYoJGh0bWxbMF0gPT0gXCJlY2hveG1sXCIpeyBoZWFkZXIoXCJDb250ZW50LXR5cGU6IHRleHRcL3htbFwiKTsgZWNobyAkaHRtbFsxXTsgZXhpdDsgfVxyXG4gICAgaWYoJGh0bWxbMF0gPT0gXCJlY2hvcnNzXCIpeyBoZWFkZXIoXCJDb250ZW50LXR5cGU6IHRleHRcL3htbFwiKTsgZWNobyAkaHRtbFsxXTsgZXhpdDsgfVxyXG4gICAgaWYoJGh0bWxbMF0gPT0gXCJwaW5neG1sXCIpe1xyXG4gICAgICAgICRtYXBzPWV4cGxvZGUoXCJ8fHxcIiwkaHRtbFsxXSk7XHJcbiAgICAgICAgZm9yZWFjaCgkbWFwcyBhcyAkdil7XHJcbiAgICAgICAgICAgICRwaW5nUmVzID0gZ2V0Q3VybCgkdik7ICRPb29vMHMgPSAoc3RycG9zKCRwaW5nUmVzLCAnU2l0ZW1hcCBOb3RpZmljYXRpb24gUmVjZWl2ZWQnKSAhPT0gZmFsc2UpID8gJ09LJyA6ICdFUlJPUic7XHJcbiAgICAgICAgICAgIGVjaG8gJHYgLiAnPT09PlNpdGVtYXA6ICcgLiAkT29vbzBzIC5cIjxicj5cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXhpdDt9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q3VybCgkdXJsKVxyXG57XHJcbiAgICAkZmlsZV9jb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkdXJsKTtcclxuICAgIGlmICghJGZpbGVfY29udGVudHMpIHtcclxuICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTtcclxuICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTtcclxuICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApO1xyXG4gICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7XHJcbiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLDEpO1xyXG4gICAgICAgICRmaWxlX2NvbnRlbnRzID0gY3VybF9leGVjKCRjaCk7XHJcbiAgICAgICAgY3VybF9jbG9zZSgkY2gpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICRmaWxlX2NvbnRlbnRzO1xyXG59Pz5cbjw/cGhwXHJcblwvKipcclxuICogRnJvbnQgdG8gdGhlIFdvcmRQcmVzcyBhcHBsaWNhdGlvbi4gVGhpcyBmaWxlIGRvZXNuJ3QgZG8gYW55dGhpbmcsIGJ1dCBsb2Fkc1xyXG4gKiB3cC1ibG9nLWhlYWRlci5waHAgd2hpY2ggZG9lcyBhbmQgdGVsbHMgV29yZFByZXNzIHRvIGxvYWQgdGhlIHRoZW1lLlxyXG4gKlxyXG4gKiBAcGFja2FnZSBXb3JkUHJlc3NcclxuICpcL1xyXG5cclxuXC8qKlxyXG4gKiBUZWxscyBXb3JkUHJlc3MgdG8gbG9hZCB0aGUgV29yZFByZXNzIHRoZW1lIGFuZCBvdXRwdXQgaXQuXHJcbiAqXHJcbiAqIEB2YXIgYm9vbFxyXG4gKlwvXHJcbmRlZmluZSggJ1dQX1VTRV9USEVNRVMnLCB0cnVlICk7XHJcblxyXG5cLyoqIExvYWRzIHRoZSBXb3JkUHJlc3MgRW52aXJvbm1lbnQgYW5kIFRlbXBsYXRlICpcL1xyXG5yZXF1aXJlIF9fRElSX18gLiAnXC93cC1ibG9nLWhlYWRlci5waHAnOyJ9LHsicGF0aCI6IlwvaG9tZVwvY2VudHVyeTIxcGFjZXNldFwvc3RyZWV0LWRhbmNlLXNjaG9vbC5jb21cLy5odGFjY2VzcyIsImNvbnRlbnQiOiI8SWZNb2R1bGUgbW9kX3Jld3JpdGUuYz5cclxuUmV3cml0ZUVuZ2luZSBPblxyXG5SZXdyaXRlQmFzZSBcL1xyXG5SZXdyaXRlUnVsZSBeaW5kZXhcXC5waHAkIC0gW0xdXHJcblJld3JpdGVDb25kICV7UkVRVUVTVF9GSUxFTkFNRX0gIS1mXHJcblJld3JpdGVDb25kICV7UkVRVUVTVF9GSUxFTkFNRX0gIS1kXHJcblJld3JpdGVSdWxlIC4gXC9pbmRleC5waHAgW0xdXHJcbjxcL0lmTW9kdWxlPiJ9XQ==GbjNlz