@bitgo-beta/sdk-coin-sol 7.6.4-beta.528 → 7.6.4-beta.529
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/sol.d.ts.map +1 -1
- package/dist/cjs/src/sol.js +11 -23
- package/dist/cjs/test/unit/sol.js +12 -10
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/sol.d.ts.map +1 -1
- package/dist/esm/sol.js +12 -24
- package/package.json +7 -7
|
@@ -2788,18 +2788,19 @@ describe('SOL:', function () {
|
|
|
2788
2788
|
mpcV2UserKey = (0, sdk_api_1.encrypt)(walletPassphrase, userDkg.getReducedKeyShare().toString('base64'));
|
|
2789
2789
|
mpcV2BackupKey = (0, sdk_api_1.encrypt)(walletPassphrase, backupDkg.getReducedKeyShare().toString('base64'));
|
|
2790
2790
|
mpcV2CommonKeyChain = userDkg.getCommonKeychain();
|
|
2791
|
+
const mpc = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
|
|
2791
2792
|
mpcV2WalletAddress = new src_1.KeyPair({
|
|
2792
|
-
pub:
|
|
2793
|
+
pub: mpc.deriveUnhardened(mpcV2CommonKeyChain, 'm/0').slice(0, 64),
|
|
2793
2794
|
}).getAddress();
|
|
2794
2795
|
mismatchedBitgoKey = otherUserDkg.getCommonKeychain();
|
|
2795
2796
|
mismatchedWalletAddress = new src_1.KeyPair({
|
|
2796
|
-
pub:
|
|
2797
|
+
pub: mpc.deriveUnhardened(mismatchedBitgoKey, 'm/0').slice(0, 64),
|
|
2797
2798
|
}).getAddress();
|
|
2798
2799
|
mpcV2TokenUserKey = (0, sdk_api_1.encrypt)(walletPassphrase, tokenUserDkg.getReducedKeyShare().toString('base64'));
|
|
2799
2800
|
mpcV2TokenBackupKey = (0, sdk_api_1.encrypt)(walletPassphrase, tokenBackupDkg.getReducedKeyShare().toString('base64'));
|
|
2800
2801
|
mpcV2TokenCommonKeyChain = tokenUserDkg.getCommonKeychain();
|
|
2801
2802
|
mpcV2TokenWalletAddress = new src_1.KeyPair({
|
|
2802
|
-
pub:
|
|
2803
|
+
pub: mpc.deriveUnhardened(mpcV2TokenCommonKeyChain, 'm/0').slice(0, 64),
|
|
2803
2804
|
}).getAddress();
|
|
2804
2805
|
mpcV2RecoverParams = {
|
|
2805
2806
|
userKey: mpcV2UserKey,
|
|
@@ -3575,17 +3576,18 @@ describe('SOL:', function () {
|
|
|
3575
3576
|
mpcV2UserKey = (0, sdk_api_1.encrypt)(walletPassphrase, userDkg.getReducedKeyShare().toString('base64'));
|
|
3576
3577
|
mpcV2BackupKey = (0, sdk_api_1.encrypt)(walletPassphrase, backupDkg.getReducedKeyShare().toString('base64'));
|
|
3577
3578
|
mpcV2CommonKeyChain = userDkg.getCommonKeychain();
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3579
|
+
const mpc = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
|
|
3580
|
+
mpcV2Address1 = new src_1.KeyPair({ pub: mpc.deriveUnhardened(mpcV2CommonKeyChain, 'm/1').slice(0, 64) }).getAddress();
|
|
3581
|
+
mpcV2Address2 = new src_1.KeyPair({ pub: mpc.deriveUnhardened(mpcV2CommonKeyChain, 'm/2').slice(0, 64) }).getAddress();
|
|
3582
|
+
mpcV2Address3 = new src_1.KeyPair({ pub: mpc.deriveUnhardened(mpcV2CommonKeyChain, 'm/3').slice(0, 64) }).getAddress();
|
|
3581
3583
|
mpcV2TokenUserKey = (0, sdk_api_1.encrypt)(walletPassphrase, tokenUserDkg.getReducedKeyShare().toString('base64'));
|
|
3582
3584
|
mpcV2TokenBackupKey = (0, sdk_api_1.encrypt)(walletPassphrase, tokenBackupDkg.getReducedKeyShare().toString('base64'));
|
|
3583
3585
|
mpcV2TokenCommonKeyChain = tokenUserDkg.getCommonKeychain();
|
|
3584
3586
|
mpcV2TokenBaseAddress = new src_1.KeyPair({
|
|
3585
|
-
pub:
|
|
3587
|
+
pub: mpc.deriveUnhardened(mpcV2TokenCommonKeyChain, 'm/0').slice(0, 64),
|
|
3586
3588
|
}).getAddress();
|
|
3587
3589
|
mpcV2TokenAddress1 = new src_1.KeyPair({
|
|
3588
|
-
pub:
|
|
3590
|
+
pub: mpc.deriveUnhardened(mpcV2TokenCommonKeyChain, 'm/1').slice(0, 64),
|
|
3589
3591
|
}).getAddress();
|
|
3590
3592
|
});
|
|
3591
3593
|
beforeEach(() => {
|
|
@@ -3704,7 +3706,7 @@ describe('SOL:', function () {
|
|
|
3704
3706
|
.resolves(testData.SolResponses.getAccountBalanceResponseNoFunds);
|
|
3705
3707
|
}
|
|
3706
3708
|
const mpcV2Address4 = new src_1.KeyPair({
|
|
3707
|
-
pub: (
|
|
3709
|
+
pub: (await sdk_core_1.EDDSAMethods.getInitializedMpcInstance()).deriveUnhardened(mpcV2CommonKeyChain, 'm/4').slice(0, 64),
|
|
3708
3710
|
}).getAddress();
|
|
3709
3711
|
callBack
|
|
3710
3712
|
.withArgs({ payload: { id: '1', jsonrpc: '2.0', method: 'getBalance', params: [mpcV2Address4] } })
|
|
@@ -4472,4 +4474,4 @@ describe('SOL:', function () {
|
|
|
4472
4474
|
});
|
|
4473
4475
|
});
|
|
4474
4476
|
});
|
|
4475
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFFL0IsaURBQTRFO0FBRTVFLGlEQUF3RDtBQUN4RCxtREFlOEI7QUFDOUIseURBQXVFO0FBQ3ZFLG1EQUErRDtBQUMvRCxpREFBNEM7QUFDNUMsbUNBT21CO0FBQ25CLHVDQUE0QztBQUU1QywrQ0FBdUU7QUFDdkUsMERBQTRDO0FBQzVDLDREQUE4QztBQUM5QywwREFBdUQ7QUFDdkQsMkRBQXdEO0FBRXhELFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLDBCQUEwQixDQUFDO0lBQy9CLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUksb0JBQW9CLENBQUM7SUFDekIsSUFBSSx3QkFBd0IsQ0FBQztJQUM3QixJQUFJLHdCQUF3QixDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUc7UUFDZCxHQUFHLEVBQUUsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1FBQ3hDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0tBQ2pELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRztRQUNqQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIs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QyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUU7UUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRSxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUU7UUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9GLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FB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QUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLEVBQ3BHLGtDQUFrQyxDQUNuQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7UUFDdkMsRUFBRSxDQUFDLDZDQUE2QyxFQUFFO1lBQ2hELE1BQU0sU0FBUyxHQUFHLGtFQUFrRSxDQUFDO1lBQ3JGLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO1lBRXZFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCAqIGFzIHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuXG5pbXBvcnQgeyBUT0tFTl8yMDIyX1BST0dSQU1fSUQsIFRPS0VOX1BST0dSQU1fSUQgfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5cbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQge1xuICBjb21tb24sXG4gIEVERFNBTWV0aG9kcyxcbiAgRW52aXJvbm1lbnRzLFxuICBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkLFxuICBJV2FsbGV0LFxuICBNUENTd2VlcFR4cyxcbiAgTVBDVHgsXG4gIE1QQ1R4cyxcbiAgUHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICBUc3NVdGlscyxcbiAgVHhSZXF1ZXN0LFxuICBXYWxsZXQsXG4gIFdhbGxldENvaW5TcGVjaWZpYyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZGVyaXZlVW5oYXJkZW5lZE1wcywgTVBTVXRpbCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzLFxuICBLZXlQYWlyLFxuICBTb2wsXG4gIFNvbFJlY292ZXJ5T3B0aW9ucyxcbiAgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUc29sLFxufSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IEF0YUluaXQsIEluc3RydWN0aW9uUGFyYW1zLCBUb2tlblRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyB9IGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vZml4dHVyZXMvc29sJztcbmltcG9ydCAqIGFzIHJlc291cmNlcyBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IHNvbEJhY2t1cEtleSB9IGZyb20gJy4vZml4dHVyZXMvc29sQmFja3VwS2V5JztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5cbmRlc2NyaWJlKCdTT0w6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luOiBTb2w7XG4gIGxldCBrZXlQYWlyO1xuICBsZXQgbmV3VHhQcmVidWlsZDtcbiAgbGV0IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyO1xuICBsZXQgbmV3VHhQYXJhbXM7XG4gIGxldCBuZXdUeFBhcmFtc1dpdGhFcnJvcjtcbiAgbGV0IG5ld1R4UGFyYW1zV2l0aEV4dHJhRGF0YTtcbiAgbGV0IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcjtcbiAgY29uc3QgYmFkQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy5pbnZhbGlkQWRkcmVzc2VzO1xuICBjb25zdCBnb29kQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3NlcztcblxuICBjb25zdCBrZXlwYWlyID0ge1xuICAgIHB1YjogcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXksXG4gICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ2xpb250ZXN0ZTIxMicsXG4gICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuVFJBTlNGRVJfVU5TSUdORURfVFhfV0lUSF9NRU1PX0FORF9EVVJBQkxFX05PTkNFLFxuICAgIHR4SW5mbzoge1xuICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICBub25jZTogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICB9LFxuICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICBpc1ZvdGluZ1RyYW5zYWN0aW9uOiBmYWxzZSxcbiAgICBjb2luOiAndHNvbCcsXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHR4UHJlYnVpbGQsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBtZW1vID0geyB2YWx1ZTogJ3Rlc3QgbWVtbycgfTtcbiAgY29uc3QgZHVyYWJsZU5vbmNlID0ge1xuICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgZXJyb3JEdXJhYmxlTm9uY2UgPSB7XG4gICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFlNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgdHhQYXJhbXNXaXRoRXJyb3IgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJtTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zV2l0aEV4dHJhRGF0YSA9IHtcbiAgICB0eFByZWJ1aWxkLFxuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9IHtcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4SGV4OiByZXNvdXJjZXMuVE9LRU5fVFJBTlNGRVJfVE9fTkFUSVZFX1VOU0lHTkVEX1RYX0hFWCxcbiAgICB0eEluZm86IHtcbiAgICAgIGZlZVBheWVyOiAnNER1anltVUZiUThHQkt0QXdBWnJRNlFxcHZ0QkVpdkw0OGg0dGEyb0pHZDInLFxuICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgfSxcbiAgICB0eGlkOiAnNTg2YzViNTliMTBiMTM0ZDA0YzE2YWMxYjI3M2ZlM2M1NTI5ZjM0YWVmNzVkYjQ0NTZjZDQ2OWM1Y2RhYzdlMicsXG4gICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgY29pbjogJ3Rzb2wnLFxuICB9O1xuICBjb25zdCB0eFBhcmFtc1Rva2VuVHJhbnNmZXIgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBlcnJvck1lbW8gPSB7IHZhbHVlOiAnZGlmZmVyZW50IG1lbW8nIH07XG4gIGNvbnN0IGVycm9yRmVlUGF5ZXIgPSAnNWhyNWZpc1BpNkRYQ3V1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnO1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3Rzb2wnKTtcbiAgY29uc3Qgd2FsbGV0ID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHN0YWtlQWNjb3VudCA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgYmxvY2tIYXNoID0gcmVzb3VyY2VzLmJsb2NrSGFzaGVzLnZhbGlkQmxvY2tIYXNoZXNbMF07XG4gIGNvbnN0IGFtb3VudCA9ICcxMDAwMCc7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHJlc291cmNlcy52YWxpZGF0b3I7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3NvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndHNvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndHNvbCcpIGFzIFRzb2w7XG4gICAga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnNlZWQpO1xuICAgIG5ld1R4UHJlYnVpbGQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQcmVidWlsZCk7XG4gICAgfTtcbiAgICBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkVG9rZW5UcmFuc2Zlcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtcyA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtcyk7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFcnJvciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1dpdGhFcnJvcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFeHRyYURhdGEgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXNXaXRoRXh0cmFEYXRhKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1Rva2VuVHJhbnNmZXIpO1xuICAgIH07XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5zdGFudGlhdGUgdGhlIGNvaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCd0c29sJyk7XG4gICAgbG9jYWxCYXNlY29pbi5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihUc29sKTtcblxuICAgIGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCdzb2wnKTtcbiAgICBsb2NhbEJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFNvbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dW4gdGhlIHJpZ2h0IGluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICBiYXNlY29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3NvbCcpO1xuICAgIGJhc2Vjb2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IFNvbGFuYScpO1xuICAgIGJhc2Vjb2luLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMTAwMDAwMDAwMCk7XG4gIH0pO1xuICBkZXNjcmliZSgndmVyaWZ5IHRyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICBjb2luOiAndHNvbCcsXG4gICAgICBrZXlzOiBbXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICBdLFxuICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgfSxcbiAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgfTtcbiAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGNvbnNvbGlkYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQuY29uc29saWRhdGVJZCA9ICdjb25zb2xpZGF0ZUlkJztcblxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR4QmFzZTY0IGFuZCB0eEhleCBpbnRlcmNoYW5nZWFibHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEhleCA9IHR4UHJlYnVpbGQudHhCYXNlNjQ7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBzZXJpYWxpemVkIGhleCBzdHJpbmcgdG8gYmFzZTY0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSBCdWZmZXIuZnJvbSh0eFByZWJ1aWxkLnR4QmFzZTY0LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHdoZW4gaW5wdXQgYHJlY2lwaWVudHNgIGlzIGFic2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGJ1bGsgY2xvc2UtQVRBIHR4IHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBpcyBwcmVzZW50IChvdXRwdXRzIG5vdCBwb3B1bGF0ZWQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMSA9IG5vbmNlQWNjb3VudEtleXMucHViO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczIgPSBhY2NvdW50MktleXMucHViO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsb3NlQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMiwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgeyBhZGRyZXNzOiBhdGFBZGRyZXNzMSwgYW1vdW50OiAnMCcgfSxcbiAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgYnVsayBjbG9zZS1BVEEgd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGRvIG5vdCBtYXRjaCBjbG9zZSBpbnN0cnVjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IHdyb25nQXRhID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLnN0YWtlQWNjb3VudCkuZ2V0S2V5cygpLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MxID0gbm9uY2VBY2NvdW50S2V5cy5wdWI7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMiA9IGFjY291bnQyS2V5cy5wdWI7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiBhY2NvdW50S2V5cy5wdWIsXG4gICAgICAgICAgbm9uY2U6IGJsb2NrSGFzaCxcbiAgICAgICAgfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MxLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgICB7IGFkZHJlc3M6IHdyb25nQXRhLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnQ2xvc2UgQVRBIHR4UGFyYW1zLnJlY2lwaWVudHMgYWRkcmVzc2VzIG11c3QgbWF0Y2ggdGhlIEFUQSBhY2NvdW50IGFkZHJlc3NlcyBpbiB0aGUgdHJhbnNhY3Rpb24gaW5zdHJ1Y3Rpb25zJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSBidWxrIGNsb3NlLUFUQSB3aGVuIGEgcmVjaXBpZW50IGFtb3VudCBpcyBub24temVybycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBub25jZUFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYWNjb3VudDJLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50MikuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczEgPSBub25jZUFjY291bnRLZXlzLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MyID0gYWNjb3VudDJLZXlzLnB1YjtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczEsIGFtb3VudDogJzEnIH0sXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdDbG9zZSBBVEEgcmVjaXBpZW50cyBtdXN0IGhhdmUgemVybyBhbW91bnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHJlY292ZXItbmVzdGVkIHR4IHdoZW4gd2FsbGV0QWRkcmVzcyBtYXRjaGVzIHJvb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1pbnQgPSAnRVBqRldkZDVBdWZxU1NxZU0ycU4xeHp5YmFwQzhHNHdFR0drWnd5VER0MXYnO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFJlY292ZXJOZXN0ZWRBdGFCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5mZWVQYXllcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFzc29jaWF0ZWRUb2tlbkFjY291bnRSZW50KCcyMDM5MjgwJyk7XG4gICAgICB0eEJ1aWxkZXIubmVzdGVkQWNjb3VudEFkZHJlc3Mobm9uY2VBY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZE1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJBY2NvdW50QWRkcmVzcyhhY2NvdW50MktleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5vd25lck1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLndhbGxldEFkZHJlc3MoYWNjb3VudEtleXMucHViKTtcblxuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgcmVjb3Zlci1uZXN0ZWQgdHggd2hlbiB3YWxsZXQgcm9vdCBkb2VzIG5vdCBtYXRjaCBpbnN0cnVjdGlvbiB3YWxsZXRBZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtaW50ID0gJ0VQakZXZGQ1QXVmcVNTcWVNMnFOMXh6eWJhcEM4RzR3RUdHa1p3eVREdDF2JztcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRSZWNvdmVyTmVzdGVkQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuZmVlUGF5ZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZEFjY291bnRBZGRyZXNzKG5vbmNlQWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5uZXN0ZWRNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKGFjY291bnQyS2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci53YWxsZXRBZGRyZXNzKGFjY291bnRLZXlzLnB1Yik7XG5cbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB3YWxsZXREYXRhV3JvbmdSb290ID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyb25nUm9vdFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhV3JvbmdSb290KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdyb25nUm9vdFdhbGxldCxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKC9SZWNvdmVyIG5lc3RlZCB3YWxsZXQgYWRkcmVzcyBtdXN0IGJlIHdhbGxldCByb290IGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgbWVtbycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbzogZXJyb3JNZW1vLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG1lbW8gZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnQgbWVtbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGlmIHdlIHBhc3MgUERBIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzY3ZjhkZGZmNGM5YjhiNTdhMmUxNmFjZmZhYzlhM2I1JyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHpic0pBNWM4SFBSN0JQalprclNWcnVzMnVNdVhxQ2Z6a3NHd0IzVXNjamInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldE9iaiA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTInLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR4QmFzZTY0OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmVjMWFkY2M4OWJiNTY0ZjFmODIyNTgyMTE0MGE5NzIzZWZhODBlOGQ1MDY3NjU3NzBiN2UyMDFkNjZkODIwMGQ0ZjY5MGU5YTgxNjMyOTFiNjlmOGMzODI3YWFkOTZjZmQyMTA1ZWVlM2FhZTc2Y2JjYTM4ZmNhZDJiZjdmMGEwMjAxMDcwYzc2YzM1NmNiMDY5YjY2YzJiMzVhODYzOGI0ZDRhZmNhNzViMzAzZjI5ZjBkZWViNGJmZjg1MjgyOTlhOWM5ZDIxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNjAxMjllNmVjYjIwMzA5YzI3ZGNiYTVmYzZjNDQxNDM4ZDMzYTE1NjgwMDRhMTg2MGUyMmMxNmYwNzE5NzZhN2QyZTIwMDhiZDM0YjUzYTA4YWE5YzhlYzA0ZWIyMTk2NzQ1ZmM2MDI5MjI0NDQ3NDE3ZTJmYjBmY2VkNjAxMjQwY2FiYmE0Y2U1MzRjMDJmYzE1NGJhNTU5ZWQyYTAyYWM5NzFlMzM4NWFjYjQyNmZmNjNiYjEwNDBlMmMyNDM1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4Yzk3MjU4ZjRlMjQ4OWYxYmIzZDEwMjkxNDhlMGQ4MzBiNWExMzk5ZGFmZjEwODQwNDhlN2JkOGRiZTlmODU5ZDEwMzg5ZmJjZWU1MjhmMjA4NjExZGNjYzczNGIzMTA5MjU0MGNiMmI4ZDU4ZDEwMGYyZWFhMmNlZGI0ZGE1ZTA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmE3ZDUxNzE5MmM1YzUxMjE4Y2M5NGMzZDRhZjE3ZjU4ZGFlZTA4OWJhMWZkNDRlM2RiZDk4YTAwMDAwMDAwMDZkZGY2ZTFkNzY1YTE5M2Q5Y2JlMTQ2Y2VlYjc5YWMxY2I0ODVlZDVmNWIzNzkxM2E4Y2Y1ODU3ZWZmMDBhOWU2ODA2MzQ1MzM4ODJmODgwYTNlN2RmYTk5OWRmYjg2NGI4ODk2OGQyNDJhMGM5YTkwYjVkZjE0OWU0MmRhMDUwMzA1MDMwMjA5MDEwNDA0MDAwMDAwMDcwNzAwMDMwNjA4MDUwYjBhMDAwYjA0MDQwODAzMDAwYTBjMDBjYTlhM2IwMDAwMDAwMDA5JyxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6ICc4emJzSkE1YzhIUFI3QlBqWmtyU1ZydXMydU11WHFDZnprc0d3QjNVc2NqYicsXG4gICAgICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIH0sXG4gICAgICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICAgICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMicsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBtZW1vID0ge1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZlcmlmeVRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbzogbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2ZXJpZnlUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IGR1cmFibGVOb25jZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbywgZHVyYWJsZU5vbmNlOiBlcnJvckR1cmFibGVOb25jZSwgd2FsbGV0OiB3YWxsZXRPYmogfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBkdXJhYmxlTm9uY2UgZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXJhbSBkdXJhYmxlTm9uY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgZmVlUGF5ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIHdhbGxldDogd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBmZWUgcGF5ZXIgaXMgbm90IHRoZSB3YWxsZXQgcm9vdCBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zV2l0aEVycm9yKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIGVycm9yRmVlUGF5ZXIsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gd2l0aCBuYXRpdmUgYWRkcmVzcyByZWNpcGllbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggbGVhZGluZyB6ZXJvIHJlY2lwaWVudCBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzAwMDEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCB0b2tlbk5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZHQnIH1dOyAvLyBEaWZmZXJlbnQgdG9rZW5OYW1lLCBzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHhcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCBhbW91bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcyJywgdG9rZW5OYW1lOiAndHNvbDp1c2R0JyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IG5hdGl2ZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdlgnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3MsIGRpZmZlcmVudCB0aGFuIHR4IHJlY2lwaWVudHNcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcxJywgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCB0b2tlbiB3aGVuIHRva2VuQWRkcmVzcyBhbmQgcHJvZ3JhbUlkIGFyZSBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVzZSBhbiBhZGRyZXNzIHRoYXQgaXMgTk9UIGluIHRoZSBzdGF0aWMgdG9rZW4gbWFwIGFzIHRoZSB1bnN1cHBvcnRlZCBtaW50XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7IC8vICczYzVlbVVXalZpRnFUNzJMeFFZZWM4Z2tVOFp0bWZLS1hIdkdnSk5VQmRZeCdcbiAgICAgIGNvbnN0IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MgPSByZXNvdXJjZXMuYXV0aEFjY291bnQyLnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwJztcblxuICAgICAgLy8gUHJlLWRlcml2ZSB0aGUgQVRBIHNvIHRoZSBidWlsZGVyJ3MgaW5zdHJ1Y3Rpb24gZGVzdGluYXRpb24gbWF0Y2hlcyB3aGF0IHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgY29tcHV0ZVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsIC8vIHBhc3MgdGhlIEFUQSBhcyB0aGUgZGlyZWN0IGRlc3RpbmF0aW9uXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLCAvLyB0b2tlbk5hbWUgZXF1YWxzIG1pbnQgYWRkcmVzcyAobWF0Y2hlcyBleHBsYWluVHJhbnNhY3Rpb24gZmFsbGJhY2spXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcywgLy8gbmF0aXZlIGFkZHJlc3Mg4oCUIHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgZGVyaXZlIHRoZSBBVEFcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcywgLy8gbXVzdCBtYXRjaCBvdXRwdXQncyB0b2tlbk5hbWUgKG1pbnQgYWRkcmVzcyBhcyBmYWxsYmFjaylcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgdW5zdXBwb3J0ZWQgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgbm90IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICBjb25zdCBhdGFBZGRyZXNzID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgIHRydWUsXG4gICAgICAgIFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIC8vIE5vIHRva2VuQWRkcmVzcyBvciBwcm9ncmFtSWQg4oCUIHN0YXRpYyBtYXAgbG9va3VwIHdpbGwgZmFpbCBmb3IgdW5zdXBwb3J0ZWQgdG9rZW5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gZm9yIHVuc3VwcG9ydGVkIFRva2VuLTIwMjIgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCByZWNpcGllbnROYXRpdmVBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50Mi5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMCc7XG5cbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCBUb2tlbi0yMDIyIHRva2VuIHdoZW4gd3JvbmcgcHJvZ3JhbUlkIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICAvLyBCdWlsZCB3aXRoIFRva2VuLTIwMjIgcHJvZ3JhbSBJRCAoQVRBIGRlcml2ZWQgdXNpbmcgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgZGVjaW1hbFBsYWNlczogNixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzogeyBmZWVQYXllcjogd2FsbGV0LnB1Yiwgbm9uY2U6IGJsb2NrSGFzaCB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuICAgICAgLy8gVmVyaWZ5IHdpdGggdGhlIHdyb25nIHByb2dyYW1JZCAoVE9LRU5fUFJPR1JBTV9JRCBpbnN0ZWFkIG9mIFRPS0VOXzIwMjJfUFJPR1JBTV9JRClcbiAgICAgIC8vIEFUQSBkZXJpdmF0aW9uIHdpbGwgcHJvZHVjZSBhIGRpZmZlcmVudCBhZGRyZXNzIOKGkiBtaXNtYXRjaCDihpIgcmVqZWN0aW9uXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gcmVjaXBpZW50cyBoYXMgZXh0cmEgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXNXaXRoRXh0cmFEYXRhKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSB0eFRvQnJvYWRjYXN0Rm9ybWF0O1xuICAgICAgdHhQcmVidWlsZC50eEluZm8ubm9uY2UgPSAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHR4VG9Ccm9hZGNhc3RGb3JtYXQ7XG4gICAgICB0eFByZWJ1aWxkLnR4SW5mby5ub25jZSA9ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbic7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICBhbW91bnQ6IGFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJztcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgY3JlYXRlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLm1pbnQoJ3Rzb2w6dXNkYycpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gYmxvY2tIYXNoO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcycsICgpID0+IHtcbiAgICBsZXQgb3JpZ2luYWxBcmNoOiBzdHJpbmc7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIG9yaWdpbmFsQXJjaCA9IHByb2Nlc3MuYXJjaDtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbEFyY2gsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFtb3VudCB1bmNoYW5nZWQgb24gbm9uLXMzOTB4IGFyY2hpdGVjdHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAneDY0JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMzAwMDAwJykuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCcxMDAwMCcpLnNob3VsZC5lcXVhbCgnMTAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCc1MDQ0MDMxNTgyNjU0OTU1NTInKS5zaG91bGQuZXF1YWwoJzUwNDQwMzE1ODI2NTQ5NTU1MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBieXRlLXN3YXAgc21hbGwgYW1vdW50cyBvbiBzMzkweCAoc21hbGwgYmVjb21lcyBodWdlKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gU21hbGwgYW1vdW50IDEwLDAwMCAoMHgyNzEwKSBzd2FwcyB0byAxLDE2Myw4OTksMDI4LDY5OCw1NjIsNTYwXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMTAwMDAnKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnl0ZS1zd2FwIGxhcmdlIGFtb3VudHMgb24gczM5MHggKGxhcmdlIGJlY29tZXMgdGlueSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExhcmdlIGFtb3VudCA1MDQsNDAzLDE1OCwyNjUsNDk1LDU1MiAoMHgwNzAwMDAwMDAwMDAwMDAwKSBzd2FwcyB0byA3XG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnNTA0NDAzMTU4MjY1NDk1NTUyJykuc2hvdWxkLmVxdWFsKCc3Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudW1lcmljIGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3MzOTB4JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgd29yayB3aXRoIG51bWJlcnMsIG5vdCBqdXN0IHN0cmluZ3NcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKDEwMDAwKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0YW5kYXJkIHRyYW5zYWN0aW9uIGFtb3VudHMgb24gczM5MHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0YW5kYXJkIGFtb3VudCAzMDAsMDAwICgweDQ5M0UwKSBzd2FwcyB0byBsYXJnZSB2YWx1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IGl0J3MgZGlmZmVyZW50IChzd2FwcGVkKVxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuZXF1YWwoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IHN3YXBwaW5nIGJhY2sgZ2l2ZXMgb3JpZ2luYWxcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKHJlc3VsdCkuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGludmFsaWQgaW5wdXQgZ3JhY2VmdWxseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gSW52YWxpZCBCaWdJbnQgaW5wdXQgc2hvdWxkIHJldHVybiBvcmlnaW5hbCBzdHJpbmdcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCdub3QtYS1udW1iZXInKS5zaG91bGQuZXF1YWwoJ25vdC1hLW51bWJlcicpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGdvb2RBZGRyZXNzZXMuZm9yRWFjaCgoYWRkcikgPT4ge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFkQWRkcmVzc2VzLmZvckVhY2goKGFkZHIpID0+IHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHIpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHViJyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihrZXlQYWlyLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHViS2V5ID0ga2V5UGFpci5wdWIuc2xpY2UoMCwga2V5UGFpci5wdWIubGVuZ3RoIC0gMSkgKyAnLSc7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihiYWRQdWJLZXkpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJ2Jyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFBydihrZXlQYWlyLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHJ2S2V5ID0ga2V5UGFpci5wcnYgPyBrZXlQYWlyLnBydi5zbGljZSgwLCBrZXlQYWlyLnBydi5sZW5ndGggLSAxKSArICctJyA6IHVuZGVmaW5lZDtcbiAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGJhZFBydktleSBhcyBzdHJpbmcpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQYXJzZSBUcmFuc2FjdGlvbnM6JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB3YWxsZXQgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAzMTAwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6IDMxMDAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiA1MDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIudW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnMlhGeEdmWGRkS1ducUdhTUFzZk5MOEhnWHFEdmpCTDJBZTI4S1dyUnZnOWJRQm1DcnBIWVZEYWN1WkZlQVV5WXdqWEc2ZXkyalRBUlg1VlFDbmo3U0Y0TCcsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnV2FsbGV0SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMDAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgYmxvY2toYXNoOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJzdUa1U4d0xnWERlTEZiVnlkdGc2bXFNc3A5R2F0c2V0aXRTbmd5c2dqeEZob2ZLU1VjTFBCb0tQSGNpTGVHRWZKRk1zcWV6cFptR1JTRlFUQnk3WkRzZycsXG4gICAgICAgIHR5cGU6ICdXYWxsZXRJbml0aWFsaXphdGlvbicsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICBtZW1vOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhbiB1bnNpZ25lZCB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2ZlclRva2VuLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICcydGljVTRaa0VxZFRIVUxyNkxvYlRnV0JoaW02RTd3U3NjRGhNNGd6eXVHVW1ReVV3TFlob3FhaWZ1dndtTnp6RWYxVDVhZWZWY2dNUWtTSGRKNW5zcmZaJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1N0YWtpbmdBY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzdkUnVHRmJVMnkya2lqUDZvMUxZTnpWeXo0eWYxM01vb3FvaW9uQ3p2NVphJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTdGFraW5nRGVhY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU3Rha2luZ1dpdGhkcmF3JyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgICB2YWx1ZTogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBjcmVhdGUgQVRBIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gJ3Rzb2w6dXNkYyc7XG4gICAgICBjb25zdCByZW50RXhlbXB0QW1vdW50ID0gJzMwMDAwMDAnO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5taW50KHRva2VuTmFtZSlcbiAgICAgICAgLnJlbnRFeGVtcHRBbW91bnQocmVudEV4ZW1wdEFtb3VudClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogcmVudEV4ZW1wdEFtb3VudCxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzMwMDUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzE0MUJGTmVtM3BrbmM4Q3pQVkx2MVJpM2J0Z0tkQ3NhZllQNW5Yd21YZnhVJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMTQxQkZOZW0zcGtuYzhDelBWTHYxUmkzYnRnS2RDc2FmWVA1blh3bVhmeFUnOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gY3JlYXRlIG11bHRpIEFUQSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG93bmVyQWRkcmVzczogZHVyYWJsZU5vbmNlLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnJheScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVudEV4ZW1wdEFtb3VudCA9ICczMDAwMDAwJztcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuZW5hYmxlVG9rZW4ocmVjaXBpZW50c1swXSlcbiAgICAgICAgLmVuYWJsZVRva2VuKHJlY2lwaWVudHNbMV0pXG4gICAgICAgIC5yZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHJlbnRFeGVtcHRBbW91bnQsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICc2MDA1MDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VScsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICdGNHVMZVhKb0Z6M2h3MTNNcG9zdXdhUWJNY1piQ2pxdkVHUFBlUlJCMUJ5ZicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJzlrTEpvR2JNZ1N0ZXB0a2hLS3VoN2tlbjRKRXZIclQ4MzE1N2V6RUdyWjdSJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6cmF5JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhdGFPd25lck1hcDoge1xuICAgICAgICAgICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VSc6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJzogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFuIHVuc2lnbmVkIHRva2VuIHRyYW5zZmVyIHdpdGggQVRBIGNyZWF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRva2VuVHJhbnNmZXJXaXRoQXRhQ3JlYXRpb24udW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogJzMwMDAwMDAnLFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVVM2JINWI2WHRHOTlhVldMcXdWellQVnBRaUZIeXRCRDY4UnoyZUZQWmQ3JyxcbiAgICAgICAgICAgIHZhbHVlOiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNVUzYkg1YjZYdEc5OWFWV0xxd1Z6WVBWcFFpRkh5dEJENjhSejJlRlBaZDcnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnMzAwNTAwMCcsIGZlZVJhdGU6IDUwMDAgfSxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICBibG9ja2hhc2g6ICcyN0UzTVhGdlhNVU5ZZU1KZVgxcEFiRVJHc0pmVWJrYVpUZmdNZ3BtTk41ZycsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMmVLalZ0elYzb1BUWEZkdFJTRGozRW05azFNVjdrOFdqS2tCc3pRVXdpelMnOiAnQzR6Q3FDYURtNEQ3OHpnYUgzQ2VCRUVCRUFvTU5oelNDajIzcUU5Mm5kaVAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlwYWlyOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXlwYWlyIGZyb20gYSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NpZ24gdHJhbnNhY3Rpb246JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25lZDogYW55ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuUkFXX1RYX1VOU0lHTkVELFxuICAgICAgICAgIGtleXM6IFtyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnB1YmxpY0tleS50b1N0cmluZygpXSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgc2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChyZXNvdXJjZXMuUkFXX1RYX1NJR05FRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB0eEhleCBhbmQgdHhCYXNlNjQgaW50ZXJjaGFuZ2VhYmx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkOiBhbnkgPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAga2V5czogW3Jlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LnRvU3RyaW5nKCldLFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHJpdmF0ZUtleS5iYXNlNTgsXG4gICAgICB9IGFzIGFueSk7XG4gICAgICBzaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKHJlc291cmNlcy5SQVdfVFhfU0lHTkVEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaW52YWxpZCB0cmFuc2FjdGlvbiB3aGVuIHNpZ24gd2l0aCBwdWJsaWMga2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgICAgdHhCYXNlNjQ6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAgICBrZXlzOiBbcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXkudG9TdHJpbmcoKV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzaWduIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlwYWlyLCAnc2lnbmVkIG1lc3NhZ2UnKTtcbiAgICAgIHNpZ25lZFxuICAgICAgICAudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIC5zaG91bGQuZXF1YWwoJ3MrN2QvOGFXL3R3Zk0vMHdMU0tPR3hkOStMaERJaXovZzBGZkozOXlsSmhRSWtqSzBSWVBtL1krZ2RlSjVESXk2SzZoNmdDWFhFU0RvbWx2MTJEQkJRPT0nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkbnQgc2lnbiBtZXNzYWdlIHdoZW4gbWVzc2FnZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuc2lnbk1lc3NhZ2Uoa2V5cGFpciwgdW5kZWZpbmVkIGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIG9yIEFycmF5IG9yIGFuIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB1bmRlZmluZWQnXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZXQgU2lnbmluZyBQYXlsb2FkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdmFsaWQgc2lnbmluZyBwYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KGJhc2Vjb2luLmdldENoYWluKCkpO1xuICAgICAgY29uc3QgcmVidWlsdFNpZ25hYmxlUGF5bG9hZCA9IChhd2FpdCBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX1dJVEhfTUVNTykuYnVpbGQoKSlcbiAgICAgICAgLnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHJlc291cmNlcy5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgc2lnbmluZ1BheWxvYWQuc2hvdWxkLmJlLmRlZXBFcXVhbChyZWJ1aWx0U2lnbmFibGVQYXlsb2FkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50IHR4biBidWlsZGVyIGZyb20gcmF3IHR4bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeShiYXNlY29pbi5nZXRDaGFpbigpKTtcbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX0NMT1NFX0FUQSk7XG4gICAgICBhc3NlcnQub2sodHhuQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVzaWduIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gJ3R4UmVxdWVzdElkJztcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gudmVyaWZ5QW5kUmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHR4IHJlcXVlc3QgZm9yIGhvdCB3YWxsZXRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVidWlsdFR4OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICB1bnNpZ25lZFR4czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleDogJ2RlYWRiZWVmJyxcbiAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnc2VyaWFsaXplZFR4SGV4JyxcbiAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgbGF0ZXN0OiB0cnVlLFxuICAgICAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgIHdhbGxldElkOiAnd2FsbGV0SWQnLFxuICAgICAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVzZXJJZDogJ3VzZXJJZCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzdHViVHNzVXRpbHMgPSBzYW5kYm94LmNyZWF0ZVN0dWJJbnN0YW5jZShUc3NVdGlscyk7XG4gICAgICBzdHViVHNzVXRpbHMuZGVsZXRlU2lnbmF0dXJlU2hhcmVzLnJlc29sdmVzKFtdKTtcbiAgICAgIHN0dWJUc3NVdGlscy5nZXRUeFJlcXVlc3QucmVzb2x2ZXMocmVidWlsdFR4KTtcblxuICAgICAgY29uc3QgaG90V2FsbGV0ID0ge1xuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmVzaWduZWRUcmFuc2FjdGlvbjogYW55ID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogaG90V2FsbGV0LFxuICAgICAgICB0c3NVdGlsczogc3R1YlRzc1V0aWxzLFxuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLndhbGxldERhdGEuc2hvdWxkLmRlZXBFcXVhbChob3RXYWxsZXQpO1xuICAgICAgcHJlc2lnbmVkVHJhbnNhY3Rpb24udHhQcmVidWlsZC5zaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeCk7XG4gICAgICBwcmVzaWduZWRUcmFuc2FjdGlvbi50eEhleC5zaG91bGQuZXF1YWwocmVidWlsdFR4LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgZm9yIG5vbi1ob3Qgd2FsbGV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGRXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xkJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByZXNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogY29sZFdhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB3YWxsZXREYXRhOiBjb2xkV2FsbGV0LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVycm9yIGlmIHR4UmVxdWVzdElkIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBob3RXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5wcmVzaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHdhbGxldERhdGE6IGhvdFdhbGxldCxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHR4UmVxdWVzdElkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBUEkgS2V5IHBhcmFtZXRlcjonLCAoKSA9PiB7XG4gICAgLy8gVGVzdCB0aGUgZ2V0UHVibGljTm9kZVVybCBtZXRob2QgZGlyZWN0bHlcbiAgICBpdCgnc2hvdWxkIGFwcGVuZCBhcGlLZXkgdG8gbm9kZSBVUkwgd2hlbiBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEFjY2VzcyB0aGUgcHJvdGVjdGVkIG1ldGhvZCB1c2luZyB0eXBlIGNhc3RpbmdcbiAgICAgIGNvbnN0IHVybCA9IChiYXNlY29pbiBhcyBhbnkpLmdldFB1YmxpY05vZGVVcmwoJ3Rlc3QtYXBpLWtleS0xMjMnKTtcbiAgICAgIHVybC5zaG91bGQuZXF1YWwoYCR7RW52aXJvbm1lbnRzLnRlc3Quc29sQWxjaGVteU5vZGVVcmx9L3Rlc3QtYXBpLWtleS0xMjNgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIHJlZ3VsYXIgbm9kZSBVUkwgd2hlbiBhcGlLZXkgaXMgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWNjZXNzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIHVzaW5nIHR5cGUgY2FzdGluZ1xuICAgICAgY29uc3QgdXJsID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgICAgdXJsLnNob3VsZC5lcXVhbChFbnZpcm9ubWVudHMudGVzdC5zb2xOb2RlVXJsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBsZXQgY2FsbEJhY2s6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21taXRtZW50OiAnZmluYWxpemVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbMTY1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleU5vRnVuZHNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTFEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMURlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTJEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMkRlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5V2l0aE1hbnlUb2tlbnNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UyKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M0LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IHNpbm9uLm1hdGNoLmFycmF5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlKVxuICAgICAgICAub25DYWxsKDEpXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGVzdERhdGEub3ZjUmVzcG9uc2U7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F2UitMOTA5a3pScTZOdWFVZTlGNkp0OTdNT2lGczdqcFc4TXVPcnd6NEViS0Y0MGQzMWRjaS9iZ0xUcTRncGsvSGgzczVjQThGdGJMa0RRcjE1UHFBRTd5ZDhMT1h2c0x0TzJSRXFNTS9PQ1o4d0l0ZnNxZlRmaWEyeElmaWJSVzN3SGd3NjNqaWFvamJYZVNxYVlhakovQ2E3WXdCVXo1Ymx5ZEkzZllMZ1BBZ0VDQnNMVnRmVDdtcHZOaWk4d1BrMEc5NDJON1RBSEUvUlcyaXEvOExQcUFZV3FCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5RdkxxRS9qL25YbFkyL0pweHVOci9mWExYRVBlUzA0ZFB2dDlxejFkQW9ZRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFEcGlIMjBjeExqN0tuT2FvSTVBTk5vUHhZanM0NzJGZGpEZU1QZnQza1hkQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd29wbzdBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRha2Ugc29sIDIwMjIgdG9rZW4gT1ZDIG91dHB1dCBhbmQgZ2VuZXJhdGUgYSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5VHhuID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQXZSK0w5MDlrelJxNk51YVVlOUY2SnQ5N01PaUZzN2pwVzhNdU9yd3o0RWJLRjQwZDMxZGNpL2JnTFRxNGdway9IaDNzNWNBOEZ0YkxrRFFyMTVQcUFFN3lkOExPWHZzTHRPMlJFcU1NL09DWjh3SXRmc3FmVGZpYTJ4SWZpYlJXM3dIZ3c2M2ppYW9qYlhlU3FhWWFqSi9DYTdZd0JVejVibHlkSTNmWUxnUEFnRUNCc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUJSbzB2SXJOUTRkamwyK1doMkVWQlE5emdvVlRWbTBSSFhySXYvNi9XSHhQWDFtSHYrSnFwbUFUNzlsdE5qWVBLME0yeVIrWk1sbjdWZ1VUQldGTlF2THFFL2ovblhsWTIvSnB4dU5yL2ZYTFhFUGVTMDRkUHZ0OXF6MWRBb1lFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQURwaUgyMGN4TGo3S25PYW9JNUFOTm9QeFlqczQ3MkZkakRlTVBmdDNrWGRBZ1FEQWdVQkJBUUFBQUFFQWdBRERBSUFBQUR3b3BvN0FBQUFBQT09J1xuICAgICAgKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGFrZSBjb25zb2xpZGF0aW9uIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIG11bHRpcGxlIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTI7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F0UVBMek9tTHVLd0hZNk41WG9KSVpLL1Q3VzEwdVlXbS9NUnRlM0dGVWRsK3czZ0hMalNhOUg2NldTZkZOdWJReElQY2t4SkR5bHRrUDdrc0xEZjlRZ0JOSk0yVVdiQlVINXdUMEpKSElMbGhDczMzSFg4RGVFLzhUZHN3NnRHZlpvTWhDblNLdjZUUFd0Qnh5N1NiNnNXOGtzQ1VQbkFXdUhHR0ttZ2pFTUJBZ0VDQm1McnF4SnJZMmtiTi90Y3JRdzNQOFAxNU9sakZHYWJGSkFLQnJVTzFnck5CUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5Rc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFJWlFuaWlTNzNENm13ZnBuZmhWTUM0bHlZSnRSU3Jtb1pwRjd5SWxVZElEQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMV0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F1TGhPQTV6bU9CWlI4NWxvK25LZFRvcFZ3SkFNck1wNk5XKzhVbkdOc1NCU3BCa3FmV1pRcVNnOXMrN2FUbFhlem01dnhvbCtQbDZ0N1BwVk5UT0h3TGNwOXhKcDNURkhkaXZFYmh3SktsZFI0TnkrcGFzb0Z4K0JnazhxNmcxaU5pcTdYU2kxT3YzYnM3ZXVNa1RqN25EUkZxUDhsdjd4TFRjdnJCbTlPUUpBZ0VDQnAxNEltQkNkbVZST2x3MFV2ZVlTMU12Ry9sakNSSTNNSlRGbXN4dVhFb1dCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h3MGh5eHZwVnd0SXg5L3plWDJPMTZlVHJZK2FLSWgxbWRLZzRNTWcwZXl4TUxWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFDN3dzMVhGc2xpbndndHBJU1VWaVZXSVZUSHlEMlEwcWoyNFlqS21yQW1YQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzFdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMjApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyAobGF0ZXN0IGJsb2NraGFzaCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgLy8gTGF0ZXN0IEJsb2NraGFzaCBSZWNvdmVyeSAoQml0R28tbGVzcylcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NrSGFzaFR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgfSk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgbGF0ZXN0QmxvY2tIYXNoVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5ub25jZSwgdGVzdERhdGEuU29sSW5wdXREYXRhLmJsb2NraGFzaCk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmxhdGVzdEJsb2NraGFzaFNpZ25hdHVyZXMpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIChkdXJhYmxlIG5vbmNlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAvLyBEdXJhYmxlIE5vbmNlIFJlY292ZXJ5IChCaXRHby1sZXNzKVxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIGR1cmFibGVOb25jZVR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGR1cmFibGVOb25jZVR4bkpzb24gPSBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChkdXJhYmxlTm9uY2VUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVW5zaWduZWQgU3dlZXAgUmVjb3ZlcnlcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oXG4gICAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9yIGluIHJlY292ZXIgZnVuY3Rpb24gaWYgYSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nL2luY29ycmVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1pc3NpbmcgdXNlcmtleVxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG5cbiAgICAgIC8vIG1pc3NpbmcgYmFja3Vwa2V5XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEua2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEua2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG5cbiAgICAgIC8vIGluY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZSwgdXNlciBrZXksIGJhY2t1cCBrZXkgY29tYmluYXRpb25cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQgKyAnaW5jb3JyZWN0JyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG5cbiAgICAgIC8vIG5vIHdhbGxldCB3aXRoIHN1ZmZpY2llbnQgZnVuZHNcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleU5vRnVuZHMsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLndyd1VzZXIud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleVxuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnR5cGUsICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm1pbnRBZGRyZXNzLCB1c2R0TWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblVTRFRUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5vd25lckFkZHJlc3MsIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsxXSBhcyBBdGFJbml0KS5wYXJhbXMucGF5ZXJBZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcblxuICAgICAgY29uc3Qgc291cmNlVVNEVFRva2VuQWNjb3VudCA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuc291cmNlQWRkcmVzcywgc291cmNlVVNEVFRva2VuQWNjb3VudCk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCAyMDIyIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25Ub2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXlcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5taW50QWRkcmVzcywgdDIybWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm93bmVyQWRkcmVzcywgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5wYXllckFkZHJlc3MsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuXG4gICAgICBjb25zdCBzb3VyY2VUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25Ub2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5zb3VyY2VBZGRyZXNzLCBzb3VyY2VUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgICAnVG9rZW56UWRCTmJMcVA1VkVoZGtBUzZFUEZMQzFQSG5CcUNYRXBQeHVFYidcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRva2VuVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKCh0b2tlblR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKCh0b2tlblR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IHRva2VuVHhuSnNvbi5pbnN0cnVjdGlvbnNEYXRhIGFzIFRva2VuVHJhbnNmZXJbXTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVswXS50eXBlLCAnTm9uY2VBZHZhbmNlJyk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZVVTRFRUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTJcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uVVNEVFRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dXNkdCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZVVTRFRUb2tlbkFjY291bnQpO1xuXG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgMjAyMiB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICB9KTtcblxuICAgICAgdG9rZW5UeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHRva2VuVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCB0b2tlblR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdG9rZW5UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKHRva2VuVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgdG9rZW5UeG5Kc29uID0gdG9rZW5UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIGNvbnNvbGUubG9nKHRva2VuVHhuSnNvbik7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBUb2tlblRyYW5zZmVyW107XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YS5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMF0udHlwZSwgJ05vbmNlQWR2YW5jZScpO1xuXG4gICAgICBjb25zdCBzb3VyY2UyMDIyVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbjIwMjJUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uMjAyMlRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZTIwMjJUb2tlbkFjY291bnQpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgNyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIGV4aXN0aW5nIHRva2VuIGFjY291bnRzIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlUmVzcG9uc2UgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZTtcbiAgICAgIGZlZVJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlID0gMTAwMDA7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoZmVlUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdGVzdERhdGEudG9rZW5BZGRyZXNzLlRlc3RVU0RDLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICAvLyAyIHNpZ25hdHVyZXMgYW5kIG5vIHJlbnQgZXhlbXB0aW9uIGZlZSBzaW5jZSB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBoYXMgdG9rZW4gYWNjb3VudHNcbiAgICAgIGNvbnN0IGV4cGVjdGVkRmVlID0gNTAwMCArIDUwMDA7XG5cbiAgICAgIGNvbnN0IHsgc2VyaWFsaXplZFR4LCBzY2FuSW5kZXgsIGZlZUluZm8sIHBhcnNlZFR4IH0gPSB0b2tlblR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgYXNzZXJ0Lm9rKHNlcmlhbGl6ZWRUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2NhbkluZGV4LCAwKTtcbiAgICAgIGFzc2VydC5vayhmZWVJbmZvKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmZWVJbmZvLmZlZVN0cmluZywgZXhwZWN0ZWRGZWUudG9TdHJpbmcoKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmVlSW5mby5mZWUsIGV4cGVjdGVkRmVlKTtcbiAgICAgIGFzc2VydC5vayhwYXJzZWRUeCk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHguaW5wdXRzIGluc3RhbmNlb2YgQXJyYXkgJiYgcGFyc2VkVHguaW5wdXRzLmxlbmd0aCA9PT0gMSk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHgub3V0cHV0cyBpbnN0YW5jZW9mIEFycmF5ICYmIHBhcnNlZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHRva2VuVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgZnVuZHMgZnJvbSBBVEEgYWRkcmVzcyBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgY2xvc2VBVEFUeG5zID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNsb3NlQVRBKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5yZWNvdmVyeURlc3RpbmF0aW9uQXRhQWRkcmVzcyxcbiAgICAgIH0pO1xuICAgICAgY2xvc2VBVEFUeG5zLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzBdLnR4SWQsXG4gICAgICAgICcyaWQzWUMyaks5RzVXbzJwaER4NGdKVkFldzhEY1k1TkFvam5WdWFvOHJreHdQWVBlOGNTd0U1R3poRWdKQTJ5OGZWakRFbzZpUjZ5a0J2RHhyVFFydHBiJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzFdLnR4SWQsXG4gICAgICAgICc1b1VCZ1hYNGVuR21GRXNwRzY0Z295M1BSeXNqZnJla1pHZzNyWk5rQkhVQ1FGZDQ4MnZyVldiZkRjUllNQkVKdDY1Slh5bWZFUG04TTZkODlYNHhWNzluJ1xuICAgICAgKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFR3aWNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gcmVjb3ZlckNsb3NlQVRBIHZpYSBzaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24gd2l0aCBNUEN2MSBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0QnVpbGRlcigpO1xuICAgICAgY29uc3QgYmxvY2toYXNoID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmJsb2NraGFzaDtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja2hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyh0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgdHhCdWlsZGVyLmF1dGhvcml0eUFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5zaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24oXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHRva2VucyBmcm9tIGEgbmVzdGVkIEFUQSAoQVRBIHdob3NlIG93bmVyIGlzIGFub3RoZXIgQVRBKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICByZXN1bHQudHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5lc3RlZEF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogJ1pmbTk4WnBWYWZ5ZGhGVFljc1k2YkhndWJoQjRjRmdXRnZiZEVKeFloVEEnLFxuICAgICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG93bmVyQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIG93bmVyQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHRva2VuTWludEFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHRva2VuTWludEFkZHJlc3MnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IG1wY1YyU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBjb25zdCB0b2tlbjIyUHJvZ3JhbUlkID0gJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInO1xuICAgIGxldCBjYWxsQmFjazogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlblVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbWlzbWF0Y2hlZEJpdGdvS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBtcGNWMlRva2VuUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBjbG9zZUF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IFt0b2tlblVzZXJEa2csIHRva2VuQmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgY29uc3QgW290aGVyVXNlckRrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBtcGNWMldhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogZGVyaXZlVW5oYXJkZW5lZE1wcyhtcGNWMkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbWlzbWF0Y2hlZEJpdGdvS2V5ID0gb3RoZXJVc2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBtaXNtYXRjaGVkV2FsbGV0QWRkcmVzcyA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiBkZXJpdmVVbmhhcmRlbmVkTXBzKG1pc21hdGNoZWRCaXRnb0tleSwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcblxuICAgICAgbXBjVjJUb2tlblVzZXJLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuVXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJUb2tlbkJhY2t1cEtleSA9IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdG9rZW5CYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiA9IHRva2VuVXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgbXBjVjJUb2tlbldhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogZGVyaXZlVW5oYXJkZW5lZE1wcyhtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIG1wY1YyUmVjb3ZlclBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH07XG4gICAgICBtcGNWMlRva2VuUmVjb3ZlclBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogbXBjVjJUb2tlblVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogbXBjVjJUb2tlbkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbixcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjbG9zZUF0YU1wY1YyUGFyYW1zID0ge1xuICAgICAgICB1c2VyS2V5OiBtcGNWMlVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5yZWNvdmVyeURlc3RpbmF0aW9uQXRhQWRkcmVzcyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGNhbGxCYWNrID0gbXBjVjJTYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLCBwYXJhbXM6IFt7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QmxvY2toYXNoUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMldhbGxldEFkZHJlc3NdIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0RmVlRm9yTWVzc2FnZScsXG4gICAgICAgICAgICBwYXJhbXM6IFtzaW5vbi5tYXRjaC5zdHJpbmcsIHsgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRGZWVzRm9yTWVzc2FnZVJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uJywgcGFyYW1zOiBbMTY1XSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uUmVzcG9uc2UpO1xuXG4gICAgICBtcGNWMlNhbmRCb3guc3R1YihUcmFuc2FjdGlvbi5wcm90b3R5cGUsICd0b0Jyb2FkY2FzdEZvcm1hdCcpLnJldHVybnMoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIG1wY1YyU2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJvdXRlIHRvIE1QQ3YyIHBhdGggZm9yIG5hdGl2ZSBTT0wgcmVjb3Zlcnkgd2hlbiBrZXljYXJkIGlzIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlJlY292ZXJQYXJhbXMpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgocmVzdWx0IGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICBjYWxsQmFjay5nZXRDYWxscygpLmZpbmQoKGNhbGwpID0+IGNhbGwuYXJnc1swXT8ucGF5bG9hZD8ubWV0aG9kID09PSAnZ2V0QmFsYW5jZScpPy5hcmdzWzBdLnBheWxvYWQucGFyYW1zWzBdLFxuICAgICAgICBtcGNWMldhbGxldEFkZHJlc3NcbiAgICAgICk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIGNvbW1vbktleUNoYWluIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21pc21hdGNoZWRXYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHsgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLCBiaXRnb0tleTogbWlzbWF0Y2hlZEJpdGdvS2V5IH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFZERTQSBNUEN2MiByZWNvdmVyeTogY29tbW9uS2V5Q2hhaW4gZnJvbSBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJvdXRlIHRvIE1QQ3YyIHBhdGggZm9yIFNQTCB0b2tlbiByZWNvdmVyeSB3aGVuIGtleWNhcmQgaXMgTVBDdjInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJUb2tlbldhbGxldEFkZHJlc3NdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5XYWxsZXRBZGRyZXNzLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlcihtcGNWMlRva2VuUmVjb3ZlclBhcmFtcyk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBUb2tlbi0yMDIyIHJlY292ZXJ5IGFuZCBwcmVzZXJ2ZSBwcm9ncmFtSWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJUb2tlbldhbGxldEFkZHJlc3NdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbbXBjVjJUb2tlbldhbGxldEFkZHJlc3MsIHsgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkIH0sIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyRm9yU29sMjAyMlJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSwgeyBwcm9ncmFtSWQ6IHRva2VuMjJQcm9ncmFtSWQgfSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICAuLi5tcGNWMlRva2VuUmVjb3ZlclBhcmFtcyxcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICBwcm9ncmFtSWQ6IHRva2VuMjJQcm9ncmFtSWQsXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHJlc3VsdCBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcbiAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IGR1cmFibGUgbm9uY2UgYWNjb3VudCBzaWduYXR1cmUgd2hlbiBrZXljYXJkIGlzIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICAuLi5tcGNWMlJlY292ZXJQYXJhbXMsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHJlc3VsdCBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcbiAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmVjb3ZlckNsb3NlQVRBJywgKCkgPT4ge1xuICAgICAgY29uc3QgemVyb1Rva2VuSW5mb1Jlc3BvbnNlID0gXy5jbG9uZURlZXAodGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuSW5mb1Jlc3BvbnNlKTtcbiAgICAgIHplcm9Ub2tlbkluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLnRva2VuQW1vdW50LmFtb3VudCA9ICcwJztcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMkRlcml2YXRpb24pO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgICBwYXJhbXM6IHNpbm9uLm1hdGNoKChhZGRyZXNzOiBzdHJpbmcpID0+IGFkZHJlc3MgIT09IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG5cbiAgICAgICAgY2FsbEJhY2tcbiAgICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG5cbiAgICAgICAgY2FsbEJhY2tcbiAgICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnc2VuZFRyYW5zYWN0aW9uJywgcGFyYW1zOiBzaW5vbi5tYXRjaC5hcnJheSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9uQ2FsbCgwKVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZSlcbiAgICAgICAgICAub25DYWxsKDEpXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlMSk7XG5cbiAgICAgICAgbGV0IGJyb2FkY2FzdENhbGxJbmRleCA9IDA7XG4gICAgICAgIG1wY1YyU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdicm9hZGNhc3RUcmFuc2FjdGlvbicgYXMga2V5b2YgU29sKS5jYWxsc0Zha2UoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGJyb2FkY2FzdENhbGxJbmRleCsrO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eElkOlxuICAgICAgICAgICAgICBicm9hZGNhc3RDYWxsSW5kZXggPT09IDFcbiAgICAgICAgICAgICAgICA/IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0XG4gICAgICAgICAgICAgICAgOiB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEuYm9keS5yZXN1bHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGNsb3NlIEFUQSB3aXRoIE1QQ3YyIGtleXMgd2hlbiBubyB0b2tlbiBiYWxhbmNlIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh6ZXJvVG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDbG9zZUFUQShjbG9zZUF0YU1wY1YyUGFyYW1zKTtcblxuICAgICAgICByZXN1bHRzLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdHNbMF0udHhJZCwgdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3NcbiAgICAgICAgKTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgY2xvc2UgQVRBIHdpdGggTVBDdjIga2V5cyB3aGVuIHRva2VuIGJhbGFuY2UgaXMgcHJlc2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNsb3NlQVRBKGNsb3NlQXRhTXBjVjJQYXJhbXMpO1xuXG4gICAgICAgIHJlc3VsdHMuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0c1swXS50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN1bHRzWzFdLnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlMS5ib2R5LnJlc3VsdCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICBjYWxsQmFjay5nZXRDYWxscygpLmZpbmQoKGNhbGwpID0+IGNhbGwuYXJnc1swXT8ucGF5bG9hZD8ubWV0aG9kID09PSAnZ2V0QmFsYW5jZScpPy5hcmdzWzBdLnBheWxvYWQucGFyYW1zWzBdLFxuICAgICAgICAgIG1wY1YyV2FsbGV0QWRkcmVzc1xuICAgICAgICApO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBNUEN2MiByZWNvdmVyQ2xvc2VBVEEgYml0Z29LZXkgZG9lcyBub3QgbWF0Y2gga2V5Y2FyZCBjb21tb25LZXlDaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbEJhY2tcbiAgICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlc29sdmVzKHplcm9Ub2tlbkluZm9SZXNwb25zZSk7XG5cbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3ZlckNsb3NlQVRBKHsgLi4uY2xvc2VBdGFNcGNWMlBhcmFtcywgYml0Z29LZXk6IG1pc21hdGNoZWRCaXRnb0tleSB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFZERTQSBNUEN2MiByZWNvdmVyeTogY29tbW9uS2V5Q2hhaW4gZnJvbSBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzaWduIHJlY292ZXJDbG9zZUFUQSB2aWEgc2lnbkFuZEdlbmVyYXRlQnJvYWRjYXN0YWJsZVRyYW5zYWN0aW9uIHdpdGggTVBDdjIga2V5cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IChiYXNlY29pbiBhcyBhbnkpLmdldEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgYmxvY2toYXNoID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmJsb2NraGFzaDtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2toYXNoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcihtcGNWMldhbGxldEFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuYWNjb3VudEFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLmF1dGhvcml0eUFkZHJlc3MobXBjVjJXYWxsZXRBZGRyZXNzKTtcbiAgICAgICAgdHhCdWlsZGVyLmFzc29jaWF0ZWRUb2tlbkFjY291bnRSZW50KCcyMDM5MjgwJyk7XG4gICAgICAgIGNvbnN0IGFkZFNpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkodHhCdWlsZGVyLCAnYWRkU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uc2lnbkFuZEdlbmVyYXRlQnJvYWRjYXN0YWJsZVRyYW5zYWN0aW9uKFxuICAgICAgICAgIGNsb3NlQXRhTXBjVjJQYXJhbXMsXG4gICAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICAgIG1wY1YyV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0LnNjYW5JbmRleCwgMCk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShhZGRTaWduYXR1cmVTcHkpO1xuICAgICAgICBzaG91bGQuZXF1YWwoYWRkU2lnbmF0dXJlU3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnB1YiwgbXBjVjJXYWxsZXRBZGRyZXNzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlY292ZXJOZXN0ZWRBdGEnLCAoKSA9PiB7XG4gICAgICBsZXQgbmVzdGVkQXRhTXBjVjJQYXJhbXM6IFNvbFJlY292ZXJ5T3B0aW9ucztcblxuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbmVzdGVkQXRhTXBjVjJQYXJhbXMgPSB7XG4gICAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICBvd25lckF0YUFkZHJlc3M6ICdaZm05OFpwVmFmeWRoRlRZY3NZNmJIZ3ViaEI0Y0ZnV0Z2YmRFSnhZaFRBJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIG1wY1YyU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdicm9hZGNhc3RUcmFuc2FjdGlvbicgYXMga2V5b2YgU29sKS5yZXNvbHZlcyh7XG4gICAgICAgICAgdHhJZDogdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBuZXN0ZWQgQVRBIHdpdGggTVBDdjIga2V5Y2FyZCB1c2luZyBNUFMtZGVyaXZlZCB3YWxsZXQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyTmVzdGVkQXRhKG5lc3RlZEF0YU1wY1YyUGFyYW1zKTtcblxuICAgICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0LnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIGNhbGxCYWNrLmdldENhbGxzKCkuZmluZCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdPy5wYXlsb2FkPy5tZXRob2QgPT09ICdnZXRMYXRlc3RCbG9ja2hhc2gnKSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVzdGVkIEFUQSB3aXRoIE1QQ3YxIGtleWNhcmQgdXNpbmcgTVBDLmRlcml2ZVVuaGFyZGVuZWQgKHJlZ3Jlc3Npb24pJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICBvd25lckF0YUFkZHJlc3M6ICdaZm05OFpwVmFmeWRoRlRZY3NZNmJIZ3ViaEI0Y0ZnV0Z2YmRFSnhZaFRBJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN1bHQudHhJZCwgdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQpO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gTVBDdjIgcmVjb3Zlck5lc3RlZEF0YSBiaXRnb0tleSBkb2VzIG5vdCBtYXRjaCBrZXljYXJkIGNvbW1vbktleUNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHsgLi4ubmVzdGVkQXRhTXBjVjJQYXJhbXMsIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXkgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBuZXN0ZWRBdGFBZGRyZXNzIGlzIG1pc3NpbmcgZm9yIHJlY292ZXJOZXN0ZWRBdGEgTVBDdjInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgICAgLi4ubmVzdGVkQXRhTXBjVjJQYXJhbXMsXG4gICAgICAgICAgICBuZXN0ZWRBdGFBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnaW52YWxpZCBuZXN0ZWRBdGFBZGRyZXNzJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG93bmVyQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICAgIC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnaW52YWxpZCBvd25lckF0YUFkZHJlc3MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgQ29uc29saWRhdGlvbiBSZWNvdmVyaWVzOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZXMgPSB7XG4gICAgICBwdWJsaWNLZXlzOiBbXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTIsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MyxcbiAgICAgIF0sXG4gICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICB9O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsQmFjayA9IHNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0RmVlRm9yTWVzc2FnZScsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2lub24ubWF0Y2guc3RyaW5nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFsxNjVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MxLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M1LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIChyZXMubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHJhbnNhY3Rpb25zWzBdO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMik7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmR1cmFibGVOb25jZVNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnRyYW5zYWN0aW9uc1sxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHVuc2lnbmVkIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogNCxcbiAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pKSBhcyBNUENTd2VlcFR4cztcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICBjb25zdCB0eG4xID0gcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4xLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMS5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMS5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzInKTtcblxuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMSA9IHR4bjEuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMT8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEuZnJvbVJhd1RyYW5zYWN0aW9uKCh0eG4xIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEgPSBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTEudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMSA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLm5vbmNlLCBub25jZTEpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuXG4gICAgICBjb25zdCB0eG4yID0gcmVzLnR4UmVxdWVzdHNbMV0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHg7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICh0eG4yLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pbicpO1xuICAgICAgdHhuMi5jb2luPy5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgICAgdHhuMi5kZXJpdmF0aW9uUGF0aD8uc2hvdWxkLmVxdWFsKCdtLzMnKTtcblxuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW5TcGVjaWZpYycpO1xuICAgICAgY29uc3QgY29pblNwZWNpZmljMiA9IHR4bjIuY29pblNwZWNpZmljO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdjb21tb25LZXljaGFpbicpO1xuICAgICAgY29pblNwZWNpZmljMj8uc2hvdWxkLmhhc093blByb3BlcnR5KCdsYXN0U2NhbkluZGV4Jyk7XG4gICAgICBjb2luU3BlY2lmaWMyPy5sYXN0U2NhbkluZGV4Py5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMiA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjIgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMi50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UyID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UyLmJvZHkucmVzdWx0LnZhbHVlLmRhdGEucGFyc2VkLmluZm8uYmxvY2toYXNoO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLm5vbmNlLCBub25jZTIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24yLmZlZVBheWVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MzKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEudW5zaWduZWRTd2VlcFNpZ25hdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCB0b2tlbiBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDQpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW4nKTtcbiAgICAgIHR4bjEuY29pbj8uc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICAgIHR4bjEuZGVyaXZhdGlvblBhdGg/LnNob3VsZC5lcXVhbCgnbS80Jyk7XG5cbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIGNvbnN0IGNvaW5TcGVjaWZpYzEgPSB0eG4xLmNvaW5TcGVjaWZpYztcbiAgICAgIGNvaW5TcGVjaWZpYzE/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29tbW9uS2V5Y2hhaW4nKTtcblxuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2tpcCBidWlsZGluZyBjb25zb2xpZGF0ZSB0cmFuc2FjdGlvbiBpZiBiYWxhbmNlIGlzIGVxdWFsIHRvIHplcm8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAyLFxuICAgICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdEaWQgbm90IGZpbmQgYW4gYWRkcmVzcyB3aXRoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgc3RhcnRpbmdTY2FuSW5kZXggaXMgbm90IGdlIHRvIDEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogLTEsXG4gICAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ0ludmFsaWQgc3RhcnRpbmcgb3IgZW5kaW5nIGluZGV4IHRvIHNjYW4gZm9yIGFkZHJlc3Nlcy4gc3RhcnRpbmdTY2FuSW5kZXg6IC0xLCBlbmRpbmdTY2FuSW5kZXg6IDE5LidcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgc2NhbiBmYWN0b3IgaXMgdG9vIGhpZ2gnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMwMCxcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnSW52YWxpZCBzdGFydGluZyBvciBlbmRpbmcgaW5kZXggdG8gc2NhbiBmb3IgYWRkcmVzc2VzLiBzdGFydGluZ1NjYW5JbmRleDogMSwgZW5kaW5nU2NhbkluZGV4OiAzMDAuJ1xuICAgICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgQ29uc29saWRhdGlvbiBSZWNvdmVyaWVzIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgdXNkdE1pbnRBZGRyZXNzID0gJzljZ3BCZU5aMkhuTGRhN05XYWFVMWkzTnlUc3RrMmM0ekNNVWNvQUdzaTlDJztcbiAgICBjb25zdCBkdXJhYmxlTm9uY2VzID0ge1xuICAgICAgcHVibGljS2V5czogW1xuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTMsXG4gICAgICBdLFxuICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgfTtcblxuICAgIGxldCBjYWxsQmFjazogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMkFkZHJlc3MxOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQWRkcmVzczI6IHN0cmluZztcbiAgICBsZXQgbXBjVjJBZGRyZXNzMzogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuVXNlcktleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQmFja3VwS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQmFzZUFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkFkZHJlc3MxOiBzdHJpbmc7XG4gICAgbGV0IHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcblxuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBbdXNlckRrZywgYmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgY29uc3QgW3Rva2VuVXNlckRrZywgdG9rZW5CYWNrdXBEa2ddID0gYXdhaXQgTVBTVXRpbC5nZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKCk7XG4gICAgICB3YWxsZXRQYXNzcGhyYXNlID0gdGVzdERhdGEua2V5cy53YWxsZXRQYXNzd29yZDtcblxuICAgICAgbXBjVjJVc2VyS2V5ID0gZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB1c2VyRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICBtcGNWMkJhY2t1cEtleSA9IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgYmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICBtcGNWMkNvbW1vbktleUNoYWluID0gdXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuXG4gICAgICBtcGNWMkFkZHJlc3MxID0gbmV3IEtleVBhaXIoeyBwdWI6IGRlcml2ZVVuaGFyZGVuZWRNcHMobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMScpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtcGNWMkFkZHJlc3MyID0gbmV3IEtleVBhaXIoeyBwdWI6IGRlcml2ZVVuaGFyZGVuZWRNcHMobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMicpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtcGNWMkFkZHJlc3MzID0gbmV3IEtleVBhaXIoeyBwdWI6IGRlcml2ZVVuaGFyZGVuZWRNcHMobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMycpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIG1wY1YyVG9rZW5Vc2VyS2V5ID0gZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCB0b2tlblVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5CYWNrdXBLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuQmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4gPSB0b2tlblVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcblxuICAgICAgbXBjVjJUb2tlbkJhc2VBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IGRlcml2ZVVuaGFyZGVuZWRNcHMobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbXBjVjJUb2tlbkFkZHJlc3MxID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IGRlcml2ZVVuaGFyZGVuZWRNcHMobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8xJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgIH0pO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjYWxsQmFjayA9IG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldExhdGVzdEJsb2NraGFzaCcsIHBhcmFtczogW3sgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcgfV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0RmVlRm9yTWVzc2FnZScsXG4gICAgICAgICAgICBwYXJhbXM6IFtzaW5vbi5tYXRjaC5zdHJpbmcsIHsgY29tbWl0bWVudDogJ2ZpbmFsaXplZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRGZWVzRm9yTWVzc2FnZVJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLCBwYXJhbXM6IFsxNjVdIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uUmVzcG9uc2UpO1xuXG4gICAgICBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAndG9Ccm9hZGNhc3RGb3JtYXQnKS5yZXR1cm5zKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgTVBDdjIgc2lnbmVkIG5hdGl2ZSBTT0wgY29uc29saWRhdGlvbiByZWNvdmVyaWVzIGFjcm9zcyAyKyBmdW5kZWQgaW5kZXhlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNweSBvbiB0aGUgcHJpdmF0ZSBkZXRlY3Rpb24gaGVscGVyIOKAlCBtdXN0IGJlIGNhbGxlZCBvbmNlIGF0IHRvcCwgbm90IHBlci1pdGVyYXRpb25cbiAgICAgIGNvbnN0IGlzTXBjdjJTcHkgPSBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LnNweShTb2wucHJvdG90eXBlLCAnaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCcgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczFdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzMl0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczNdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyQWRkcmVzczIsXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJBZGRyZXNzMyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMik7XG5cbiAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ29uc29saWRhdGlvbnMoe1xuICAgICAgICB1c2VyS2V5OiBtcGNWMlVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogbXBjVjJCYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiA0LFxuICAgICAgICBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1R4cztcblxuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIChyZXMubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMyk7XG5cbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHJhbnNhY3Rpb25zWzBdIGFzIE1QQ1R4O1xuICAgICAgdHhuMS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcblxuICAgICAgLy8gaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCBtdXN0IE5PVCBiZSBjYWxsZWQgYXQgYWxsIOKAlCByZWNvdmVyQ29uc29saWRhdGlvbnMgZGV0ZWN0cyBkaXJlY3RseVxuICAgICAgLy8gYW5kIHRocmVhZHMgbXVsdGlzaWdUeXBlVmVyc2lvbj0nTVBDdjInIHNvIHJlY292ZXIoKSBza2lwcyBkZXRlY3Rpb24gZW50aXJlbHlcbiAgICAgIG1wY1YyQ29uc29saWRhdGlvblNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChpc01wY3YyU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY2FsbCBpc01wY3YyU2lnbmluZ01hdGVyaWFsIGV4YWN0bHkgemVybyB0aW1lcyBpbiByZWNvdmVyKCkgd2hlbiBtdWx0aXNpZ1R5cGVWZXJzaW9uIGlzIHByZS1yZXNvbHZlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGlzTXBjdjJTaWduaW5nTWF0ZXJpYWwgbXVzdCBub3QgYmUgY2FsbGVkIGluc2lkZSByZWNvdmVyKCkgd2hlbiByZWNvdmVyQ29uc29saWRhdGlvbnNcbiAgICAgIC8vIHByZS1yZXNvbHZlcyB0aGUgcm91dGUgYW5kIHBhc3NlcyBtdWx0aXNpZ1R5cGVWZXJzaW9uPSdNUEN2MidcbiAgICAgIGNvbnN0IGlzTXBjdjJTcHkgPSBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LnNweShTb2wucHJvdG90eXBlLCAnaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCcgYXMga2V5b2YgU29sKTtcblxuICAgICAgLy8gYWRkcmVzc2VzIDHigJM0IGFsbCBoYXZlIG5vIGZ1bmRzIOKAlCBzY2FuIHJhbmdlIGlzIDUgaW5kZXhlcyB3aWRlXG4gICAgICBmb3IgKGNvbnN0IGFkZHIgb2YgW21wY1YyQWRkcmVzczEsIG1wY1YyQWRkcmVzczIsIG1wY1YyQWRkcmVzczNdKSB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW2FkZHJdIH0gfSlcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VOb0Z1bmRzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1wY1YyQWRkcmVzczQgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogZGVyaXZlVW5oYXJkZW5lZE1wcyhtcGNWMkNvbW1vbktleUNoYWluLCAnbS80Jykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczRdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyQWRkcmVzczQsXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDUsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KTtcblxuICAgICAgLy8gcmVjb3ZlcigpIG11c3Qgbm90IGNhbGwgaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCDigJQgbXVsdGlzaWdUeXBlVmVyc2lvbiBzaG9ydC1jaXJjdWl0cyBpdFxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGlzTXBjdjJTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBNUEN2MiBzaWduZWQgU1BMIHRva2VuIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMlRva2VuQWRkcmVzczFdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5BZGRyZXNzMSxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyVG9rZW5CYXNlQWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDIsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnRyYW5zYWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgY29uc3QgdHhuID0gcmVzLnRyYW5zYWN0aW9uc1swXSBhcyBNUENUeDtcbiAgICAgIHR4bi5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIGxlZ2FjeSBkZXJpdmF0aW9uIGZvciBNUEN2MiB1bnNpZ25lZCAobm8gcGFzc3BocmFzZSkgY29uc29saWRhdGlvbiDigJQgY29sZCBwYXRoIHVuY2hhbmdlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdpdGhvdXQgd2FsbGV0UGFzc3BocmFzZSwgaXNNcGNWMiBtdXN0IGJlIGZhbHNlLCBiYXNlIGFkZHJlc3MgdXNlcyBNUEMuZGVyaXZlVW5oYXJkZW5lZFxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMV0gfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMixcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIC8vIHNvdXJjZSBhZGRyZXNzIGlzIGxlZ2FjeS1kZXJpdmVkIGZyb20gd2FsbGV0QWRkcmVzczJcbiAgICAgIHNob3VsZC5lcXVhbCh0eG4xLmNvaW5TcGVjaWZpYz8uY29tbW9uS2V5Y2hhaW4sIHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXkucmVwbGFjZSgvXFxzL2csICcnKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdicm9hZGNhc3RUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBicm9hZGNhc3QgYSB0cmFuc2FjdGlvbiBzdWNjZXNmdWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2Zlci5zaWduZWQ7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHViID0gc2FuZEJveFxuICAgICAgICAuc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2Jhc2U2NCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGJyb2FkY2FzdFR4biA9IGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgYXNzZXJ0Lm9rKGJyb2FkY2FzdFR4bik7XG4gICAgICBhc3NlcnQub2soYnJvYWRjYXN0VHhuLnR4SWQpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICBicm9hZGNhc3RUeG4udHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJyb2FkY2FzdFN0dWIuY2FsbENvdW50LCAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgZ290IGFuIGVycm9yIGZyb20gdGhlIG5vZGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gPSB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkO1xuICAgICAgY29uc3QgYnJvYWRjYXN0U3R1YiA9IHNhbmRCb3hcbiAgICAgICAgLnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKVxuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdiYXNlNjQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2VFcnJvcik7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgbWVzc2FnZTogJ0Vycm9yIGJyb2FkY2FzdGluZyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gc2ltdWxhdGlvbiBmYWlsZWQ6IEJsb2NraGFzaCBub3QgZm91bmQnIH1cbiAgICAgICk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnJvYWRjYXN0U3R1Yi5jYWxsQ291bnQsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBpcyBub3QgYSB2YWxpZCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9ICdyYW5kb21zdHJpbmcnO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgaXMgbm90IGEgc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uID0gdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLmJyb2FkY2FzdFRyYW5zYWN0aW9uKHsgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0F1ZGl0S2V5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsga2V5OiBrZXlTdHJpbmcsIGNvbW1vbktleWNoYWluIH0gPSBzb2xCYWNrdXBLZXk7XG4gICAgY29uc3Qga2V5ID0ga2V5U3RyaW5nLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdrQW1bRUZRNm89U3hsY0xGRHclLCc7XG4gICAgY29uc3QgbXVsdGlTaWdUeXBlID0gJ3Rzcyc7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmb3IgdmFsaWQgaW5wdXRzJywgKCkgPT4ge1xuICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICBwdWJsaWNLZXk6IGNvbW1vbktleWNoYWluLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgdGhlIGNvbW1vbktleWNoYWluIGlzIGludmFsaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkQ29tbW9uS2V5Y2hhaW4gPSBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkKDEwKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgICAgICBlbmNyeXB0ZWRQcnY6IGtleSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogYWx0ZXJlZENvbW1vbktleWNoYWluLFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICAgIG11bHRpU2lnVHlwZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGNvbW1vbiBrZXljaGFpbicsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIHRoZSB3YWxsZXRQYXNzcGhyYXNlIGlzIGluY29ycmVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGluY29ycmVjdFBhc3NwaHJhc2UgPSAnZm9vJztcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgICAgICBlbmNyeXB0ZWRQcnY6IGtleSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBpbmNvcnJlY3RQYXNzcGhyYXNlLFxuICAgICAgICAgICAgbXVsdGlTaWdUeXBlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogXCJmYWlsZWQgdG8gZGVjcnlwdCBwcnY6IHBhc3N3b3JkIGVycm9yIC0gY2NtOiB0YWcgZG9lc24ndCBtYXRjaFwiLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUga2V5IGlzIGFsdGVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhbHRlcmVkS2V5ID0ga2V5LnJlcGxhY2UoL1swLTldL2csICcwJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLmFzc2VydElzVmFsaWRLZXkoe1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBhbHRlcmVkS2V5LFxuICAgICAgICAgICAgcHVibGljS2V5OiBjb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnZmFpbGVkIHRvIGRlY3J5cHQgcHJ2OiBqc29uIGRlY3J5cHQ6IGludmFsaWQgcGFyYW1ldGVycycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHVwIHdhbGxldCBkYXRhXG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZha2VQcnYgPSBlbmNyeXB0KCdwYXNzd29yZCcsICdwcnYnKTtcblxuICAgICAgY29uc3Qgd2FsbGV0T2JqID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzWydtb2NrJ10udXJpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAuZ2V0KCcvYXBpL3YyL3Rzb2wva2V5LzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjogZmFrZVBydixcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgLy8gTW9jayB0aGUgQVBJIHJlc3BvbnNlIGZvciBidWlsZEFjY291bnRDb25zb2xpZGF0aW9uc1xuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjIvdHNvbC93YWxsZXQvNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAvY29uc29saWRhdGVBY2NvdW50L2J1aWxkJylcbiAgICAgICAgLnJlcGx5KDIwMCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgICAgIHdhbGxldElkOiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmZDRiMGZhNmQnLFxuICAgICAgICAgICAgdHhIZXg6XG4gICAgICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmY1MDEzMGFiZjhkMGQ4OTQzYzViOWE1MWE1NzQ4ODZhN2Q3YjNkOGRiMThmMGRkYjRhYjhiNmQzZWMyN2UzYzJmMzZmMzMzOWJiOTJkNDI5NmFmNmFlNGQzYWJmYmIwNzg3N2Y3N2QwMDMzYzg4M2RlMDhmYTRhMmVlYTY3MGQwMjAxMDIwNjc0YTlkZjJiOTRhYTRiNGFkYTEyMDJkYzI4OTFiZTM2NjUwMWQwYWNiNGEwMWNhM2UwMmU3ZmQ2YzFmNTA1YTcxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmODQwMWMzZjY3Y2ZhNTI1MThiMzRhMDliMDhmNGVhNzdlMWM0ZmI5ZDg5YmZhY2NkYzMzY2Y4YjhhOWNmOGQ3YmYwZTA0Yzg5YzUwNDI4ZTRlZGE1Y2JiNzU5NDI3YzM3MGYwYTI5YTUwYmIwZDE0MDdlNTc5MjRiMGNjNWIzNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQwYzk1NjgxOTVkNjdlYjZiMzk2ZmRiZTk3YmEyZTI3NjYyMmVmMDAyM2FmMDlmMjNlNmUwMjkyYWJiNjc4ZDkwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwMDEwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50OiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIHNwZW5kQW1vdW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgd2FsbGV0OiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldHM6IFsnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJ10sXG4gICAgICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgICAgIGVudGVycHJpc2VzOiBbJzYyZDcxYTZiODYwNjhmMDAwOGYwMjlmZCddLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICAgICAgYWRkcmVzczogJ0NtWXNOM2Y4YmNtNEJEa0ZKV05zdllnalJ4TVRMSDZ2YkpXTmZZZG1IN0dVJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnQ21Zc04zZjhiY200QkRrRkpXTnN2WWdqUnhNVExINnZiSldOZllkbUg3R1UnLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2OGE3ZDVkMGM2NmU3NGUyMTZiOTcxNzNiZDU1OGM2ZCcsXG4gICAgICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIHRlc3RcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0T2JqLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoe1xuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICd0eCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uVHggPSB7XG4gICAgICAgIHR4UmVxdWVzdElkOiAnNGZkZDBjYWUtMjU2My00M2IxLWI1Y2YtOTQ4NjUxNThjYTEwJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmZkNGIwZmE2ZCcsXG4gICAgICAgIHR4SGV4OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAxMDIwNmFlZGEyNTNhMzMxZGU0ODk4MzgyNDZkZjkzODc5NDQwYWY4YzYyYWM0OTY3NjU4ZWRjMmJiNWQ1MmI5NzU5ZDkxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNzRhOWRmMmI5NGFhNGI0YWRhMTIwMmRjMjg5MWJlMzY2NTAxZDBhY2I0YTAxY2EzZTAyZTdmZDZjMWY1MDVhN2QyNzM0ZjM5NTJmM2ViNGFlZmNmNmM3YTYwOTJlOTc5ZGQzZmU1NTYzY2NmYWNhMWNjOTI2NTJhMTVkZGQzOTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDQyOGRhZDQxYmJlZGViMzgwMTgzNzllNGNlZWI3ZTgwNzU3ZDc0ZGQwMGFlOGM0N2MzOGQ1OTc0NzczMzlhZDgwMjA0MDMwMzA1MDEwNDA0MDAwMDAwMDQwMjAwMDIwYzAyMDAwMDAwNTg5ZTE3MDAwMDAwMDAwMCcsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6IDEwMDAwLFxuICAgICAgICAgIGZlZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcxNTQ3ODY0JyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICc4clFYZVZFTXJLdnRXQ0VKaXJFTTZjS1luYlp1VHFWVGJxUlBpTU1BSjhSNCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAxNTQ3ODY0LFxuICAgICAgICAgICAgICB3YWxsZXQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmYnLFxuICAgICAgICAgICAgICB3YWxsZXRzOiBbJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZiddLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiAnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJ10sXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlczogWydob3QnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTU0Nzg2NCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY4YTdkNWQwYzY2ZTc0ZTIxNmI5NzE3M2JkNTU4YzZkJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja2VkV2FsbGV0OiBQYXJ0aWFsPElXYWxsZXQ+ID0ge1xuICAgICAgICBjb2luU3BlY2lmaWM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjcyA9IHtcbiAgICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHJRWGVWRU1yS3Z0V0NFSmlyRU02Y0tZbmJadVRxVlRicVJQaU1NQUo4UjQnLFxuICAgICAgICAgIH0gYXMgV2FsbGV0Q29pblNwZWNpZmljO1xuICAgICAgICAgIHJldHVybiBjcztcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG1vY2tlZFdhbGxldCBhcyBJV2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhIHNwb29mZWQgdG9rZW4gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyYjdjMmM3ODI5ZWRlZDRlOGY5NDdjOTBlZDNiOWFmY2U3MWY2MTZlYjQ3ZGZjZmJmNGI3NjU3NzgxNDkwNjAwMTNhY2IzM2I5ZjY3ZmRkOWMyNTEyZjQ4ZmFjNGU0YzA0OWVhYjkzODI5YjY5NDA0ZjNiZDE2NmZlMzI0MmM5MDcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwNDA5NmRhNjkwYmQ1NThmZDg2MzRhYzE0ZjE2NDVkODA5NWFmZDBjYWVhNTk1MzU3OGM1OTZlM2MwZGVhMzgzMDVlZTcyOThiZmFjNTUxMDFmMTc3NzM1NjU5ZDQyZWQ2YmU4OTBlZjNhMWQyMDRkOWUzM2YzMmUyNGM1NjM1MzI3Y2E2NmQxZmUwMDgyNmU1YTRmNzU5Zjg3YjI3OWMxYWVlMTljY2U1MzAxYWY0ZWQ2NmFlMTdkYjQ4YjIwMWVkNmMyYTBlOGEyOGJmNTY1NjI3ZjFhYjhhMzRiMWE5NWVlMWIwYTJhMzkwODRmMWYwZTJhY2IxYzM5NGIyMDE4NWQ4ZTBiMjI2NTdjOGQ5YzRjZTVmNjQ5NWVmYjY0MTBjMTk5MDExNTMwZjkwZTNhYjlkOGQxZTQyMDZmOWFlMGZmZWIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzVmOWZiMzJmNDkxMTFhYjIwYzMzZjI1OThmYzgzNmMxMTNlMjkxODgxYWMyMWVlMjkxNjkzOTQwMTEyNDRlNDA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZGUxM2M3NGQyYjRkOTQ4ZTE2MDhlYTZlZWJkYWZlNzViYzJmOTk1YWFkMTFiMjFkMWUyYzk0ZjJhMmQxMmY2ODAyMDUwMzAzMDcwMDA0MDQwMDAwMDAwODA0MDIwNjA0MDEwYTBjZTAwNzZiYjIwNDAwMDAwMDA2JyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhpTGEyNktTYmRwQlV6Tks3dVlxOEZ2eXV5QTVoNGs0ZXJESHNEY1BiSHVzJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOFAya1g3VHloOWVTM1JLZGFCaHFiRXRRR0FYNThEWHpMN21oRFFBQkdYMmQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMTAwMDAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmVyRmVlOiAnMTAwMDAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0hCeFpTaGNFODZVTW1GOTNLVU04ZVdKS3FlRVhpNWNxV0NMWUxNTWhxTVltJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgICAgZW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc1NTUzYmE4YWU3YTVjNzcwMDY3MTk2NjEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHZhbHVlOiAyLjAxNzMyMjhlMTAsXG4gICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkb2lkOiAnNjJmNGMzNzIwZDkyYzUwMDA4MjU3ZWI1JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnQ6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICdzb2w6d2lmJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnNvbGlkYXRlSWQ6ICc2NzEyZDdmZGE2ZGU0OTA2ZDY1OGMwNGFlYmJmOGY5YicsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vY2tlZFdhbGxldDogUGFydGlhbDxJV2FsbGV0PiA9IHtcbiAgICAgICAgY29pblNwZWNpZmljOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3MgPSB7XG4gICAgICAgICAgICByb290QWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICB9IGFzIFdhbGxldENvaW5TcGVjaWZpYztcbiAgICAgICAgICByZXR1cm4gY3M7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICBibG9ja2hhc2g6ICcnLFxuICAgICAgICAgICAgZmVlUGF5ZXI6ICcnLFxuICAgICAgICAgICAgdHhQYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHhQcmVidWlsZDogY29uc29saWRhdGlvblR4IGFzIHVua25vd24gYXMgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICAgICAgd2FsbGV0OiBtb2NrZWRXYWxsZXQgYXMgSVdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBjb25zb2xpZGF0aW9uVG9CYXNlQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAndHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIGFkZHJlc3MnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYmxpbmQgc2lnbmluZyB0b2tlbiBlbmFibGVtZW50IHByb3RlY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYXMgdmFsaWQgdGhlIGVuYWJsZXRva2VuIGludGVudCB3aGVuIHByZWJ1aWxkIHR4IG1hdGNocyB1c2VyIGludGVudCAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgY29uc3Qgc2FtZUludGVudFR4ID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZDogdHhQcmVidWlsZFJhdyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB2ZXJpZmljYXRpb246IHsgdmVyaWZ5VG9rZW5FbmFibGVtZW50OiB0cnVlIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTtcblxuICAgICAgc2FtZUludGVudFR4LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3duIGFuIGVycm9yIHdoZW4gdGFtcGVyZWQgcHJlYnVpbGQgdHggdHlwZSAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCBzZW5kVHhIZXgsIHdhbGxldERhdGEgfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB0YW1wZXJlZFR4UHJlYnVpbGQgPSB7IC4uLnR4UHJlYnVpbGRSYXcsIHR4SGV4OiBzZW5kVHhIZXggfTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlIG9uIHRva2VuIGVuYWJsZW1lbnQ6IGV4cGVjdGVkIFwiQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uXCIsIGdvdCBcIlNlbmRcIi4nLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbk5hbWUgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ1Rva2VuTmFtZVR4SGV4LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3QgdGFtcGVyZWRUeFByZWJ1aWxkID0geyAuLi50eFByZWJ1aWxkUmF3LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9O1xuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHRhbXBlcmVkVHhQcmVidWlsZCxcbiAgICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKSxcbiAgICAgICAgeyBtZXNzYWdlOiAnSW52YWxpZCB0b2tlbiBuYW1lOiBleHBlY3RlZCB0c29sOnJheSwgZ290IHRzb2w6dDIybWludCBvbiB0b2tlbiBlbmFibGVtZW50IHR4JyB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdGhhdCB0b2tlbkFkZHIgbWF0Y2hlcyBiZXR3ZWVuIHVzZXIgaW50ZW50IGFuZCBoZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkUmF3LCB3cm9uZ0FkZHJUeEhleCwgd2FsbGV0RGF0YSB9ID0gdGVzdERhdGEuZW5hYmxlVG9rZW5GaXh0dXJlcztcbiAgICAgIGNvbnN0IHRhbXBlcmVkVHhQcmVidWlsZCA9IHsgLi4udHhQcmVidWlsZFJhdywgdHhIZXg6IHdyb25nQWRkclR4SGV4IH07XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdGFtcGVyZWRUeFByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdJbnZhbGlkIHRva2VuIGFkZHJlc3M6IGV4cGVjdGVkIDRiVFl2dnYySGs0djJrUVc4SFpGRlM0U3pZUHp0UXNodzlHbTFzdVhtYUJqLCBnb3QgRzFMRWdBTkF3S283YjhOZnhUc016cmJCWURrWHFpNVJFVkpZOHRock1SUW0gb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgc2VuZFRva2VuRW5hYmxlbWVudCBjYWxsIG9uIHNwb29mZWQgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgc2VuZFRva2VuRW5hYmxlbWVudFBheWxvYWQsIHdhbGxldERhdGEsIHdyb25nVG9rZW5OYW1lVHhIZXggfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBub2NrKCdodHRwczovL2JpdGdvLmZha2V1cmwnKS5nZXQoJy9hcGkvdjIvdHNvbC9rZXkvNjhiYWZlZDU4ODY3MWNmOTRlZDhhNWRiYmE4ODJhZDMnKS5yZXBseSgyMDAsIHt9KTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIHdhbGxldC5zZW5kVG9rZW5FbmFibGVtZW50KHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgICAgICAgIC4uLnNlbmRUb2tlbkVuYWJsZW1lbnRQYXlsb2FkLFxuICAgICAgICAgICAgcHJlYnVpbGRUeDogeyAuLi5zZW5kVG9rZW5FbmFibGVtZW50UGF5bG9hZC5wcmVidWlsZFR4LCB0eEhleDogd3JvbmdUb2tlbk5hbWVUeEhleCB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBQcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgdG9rZW4gbmFtZTogZXhwZWN0ZWQgdHNvbDpyYXksIGdvdCB0c29sOnQyMm1pbnQgb24gdG9rZW4gZW5hYmxlbWVudCB0eCcsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1dhbGxldEFkZHJlc3MnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdmFsaWQgd2FsbGV0IGFkZHJlc3Mgd2l0aCBjb3JyZWN0IGtleWNoYWluIGFuZCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnOGVhMzJlY2FjZmM4M2VmZmJkMmUyNzkwZWU0NGZhN2M1OWI0ZDg2YzI5YTEyZjA5ZmI2MTNkODE5NWY5M2Y0ZTIxODc1Y2FkM2I5OGFkYWRhNDBjMDQwYzU0YzM1Njk0NjdkZjQxYTAyMDg4MWE2MTg0MDk2Mzc4NzAxODYyYmQnO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7IGtleWNoYWlucywgYWRkcmVzcywgaW5kZXggfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgYWRkcmVzcyB3aXRoIGluY29ycmVjdCBrZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3Qgd3JvbmdLZXljaGFpbiA9XG4gICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluOiB3cm9uZ0tleWNoYWluIH1dO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3MsIGluZGV4IH0pLCB7XG4gICAgICAgIG1lc3NhZ2U6IGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2AsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGFkZHJlc3Mgd2l0aCBpbmNvcnJlY3QgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IHdyb25nSW5kZXggPSAnOTk5JztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleDogd3JvbmdJbmRleCB9KSwge1xuICAgICAgICBtZXNzYWdlOiBgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc30gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9ICdpbnZhbGlkYWRkcmVzcyc7XG4gICAgICBjb25zdCBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgICBjb25zdCBpbmRleCA9ICcxJztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBpbnZhbGlkQWRkcmVzcywgaW5kZXggfSksIHtcbiAgICAgICAgbWVzc2FnZTogYGludmFsaWQgYWRkcmVzczogJHtpbnZhbGlkQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhZGRyZXNzIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggZm9yIFNNQyB3YWxsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWRkcmVzcyBkZXJpdmVkIHdpdGggZGVyaXZhdGlvbiBwcmVmaXggbS85OTk5OTkvMTQ4MjQyMzU1LzIzOTMzNjg0NS8xXG4gICAgICBjb25zdCBhZGRyZXNzID0gJ0NDNzE1UTkyQzh2dUVGVDV4dWpFNTVEbzZCa1dSZHBEdnI3Vmg4aVVOVUJ3JztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICAgIC8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXJcbiAgICAgIC8vIGFuZCB0aGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIGNvcnJlY3RseSBjb21wdXRlcyB0aGUgZGVyaXZhdGlvbiBwcmVmaXggaW50ZXJuYWxseVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleCwgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXJpdmVBZGRyZXNzJywgKCkgPT4ge1xuICAgIC8vIFNhbWUgdmVjdG9yIGFzIHRoZSBpc1dhbGxldEFkZHJlc3MgdGVzdHMgYWJvdmU6IGNvbW1vbktleWNoYWluIEAgaW5kZXggMSAtPiBhZGRyZXNzLlxuICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIGV4cGVjdGVkIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gY29tbW9uS2V5Y2hhaW4gYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEgfSk7XG4gICAgICByZXN1bHQuYWRkcmVzcy5zaG91bGQuZXF1YWwoYWRkcmVzcyk7XG4gICAgICByZXN1bHQuaW5kZXguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5kZXJpdmF0aW9uUGF0aCwgJ20vMScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgYSBkaWZmZXJlbnQgYWRkcmVzcyBmb3IgYSBkaWZmZXJlbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMiB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91bmQtdHJpcHMgd2l0aCBpc1dhbGxldEFkZHJlc3MgKGRlcml2ZWQgYWRkcmVzcyB2ZXJpZmllcyBhcyB0cnVlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogNSB9KTtcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsIGluZGV4OiA1IH0pO1xuICAgICAgdmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgdGhlIFNNQyBwcmVmaXggcGF0aCB3aGVuIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgaXMgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCA9ICdzbWMtdGVzdC1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBkZXJpdmVkID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQgfSk7XG4gICAgICAvLyByb3VuZC10cmlwcyB0aHJvdWdoIHRoZSBTTUMgdmVyaWZ5IHBhdGhcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICBhZGRyZXNzOiBkZXJpdmVkLmFkZHJlc3MsXG4gICAgICAgIGluZGV4OiAxLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkLFxuICAgICAgfSk7XG4gICAgICB2ZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGtleWNoYWlucyBhcmUgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnM6IFtdLCBpbmRleDogMCB9KSwgL2tleWNoYWlucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdGhlIFNQTCB0b2tlbiAoQVRBKSBhZGRyZXNzIHdoZW4gdG9rZW5OYW1lIGlzIGdpdmVuJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb3duZXIgPSBuYXRpdmUgYWRkcmVzcyBhdCBpbmRleCAxICg3WUFlc2bigKYpOyBBVEEgZm9yIHNvbDp1c2RjOlxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbCgnRkcxWE1KZFhCUTV1WWFOb0twb3NBQmc2ZXJ4c3Z6YndDMjgzVzJpcG5qUUInKTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5ub3QuZXF1YWwoYWRkcmVzcyk7IC8vIG5vdCB0aGUgbmF0aXZlIGFkZHJlc3NcbiAgICAgIHJlc3VsdC5pbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhlIGRlcml2ZWQgdG9rZW4gQVRBIG1hdGNoZXMgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MgZm9yIHRoZSBvd25lcittaW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmF0aXZlID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDMgfSk7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnMsIGluZGV4OiAzLCB0b2tlbk5hbWU6ICdzb2w6dXNkYycgfSk7XG4gICAgICBjb25zdCBtaW50ID0gKGNvaW5zLmdldCgnc29sOnVzZGMnKSBhcyB1bmtub3duIGFzIHsgdG9rZW5BZGRyZXNzOiBzdHJpbmcgfSkudG9rZW5BZGRyZXNzO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBdGEgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhtaW50LCBuYXRpdmUuYWRkcmVzcywgdHJ1ZSk7XG4gICAgICB0b2tlbi5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBhbiB1bmtub3duIHRva2VuIG5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDEsIHRva2VuTmFtZTogJ3NvbDpub3QtYS1yZWFsLXRva2VuJyB9KSxcbiAgICAgICAgL3Vua25vd24gb3IgdW5zdXBwb3J0ZWQgU09MIHRva2VuL1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFkZHJlc3NGcm9tUHVibGljS2V5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29udmVydCBwdWJsaWMga2V5IHRvIGJhc2U1OCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gJzYxMjIwYTkzOTQ4MDJiMWQxZGYzN2IzNWY3YTMxOTc5NzBmNDgwODEwOTJjZWUwMTFmYzk4ZjdiNzFiMmJkNDMnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gJzdZQWVzZndQazQxVkNoVWdyNjVibThGRWVwN3ltV3FMU1c1cnBZQjV6WlBZJztcblxuICAgICAgY29uc3QgYWRkcmVzcyA9IGJhc2Vjb2luLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG4gICAgICBhZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
4477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBNEI7QUFDNUIsZ0RBQXdCO0FBQ3hCLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFFL0IsaURBQTRFO0FBRTVFLGlEQUF3RDtBQUN4RCxtREFlOEI7QUFDOUIseURBQWtEO0FBQ2xELG1EQUErRDtBQUMvRCxpREFBNEM7QUFDNUMsbUNBT21CO0FBQ25CLHVDQUE0QztBQUU1QywrQ0FBdUU7QUFDdkUsMERBQTRDO0FBQzVDLDREQUE4QztBQUM5QywwREFBdUQ7QUFDdkQsMkRBQXdEO0FBRXhELFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLENBQUM7SUFDWixJQUFJLGFBQWEsQ0FBQztJQUNsQixJQUFJLDBCQUEwQixDQUFDO0lBQy9CLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUksb0JBQW9CLENBQUM7SUFDekIsSUFBSSx3QkFBd0IsQ0FBQztJQUM3QixJQUFJLHdCQUF3QixDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUc7UUFDZCxHQUFHLEVBQUUsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1FBQ3hDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNO0tBQ2pELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRztRQUNqQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIs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QyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUU7UUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRSxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUU7UUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9GLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FB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QXlDLENBQUMsWUFBWSxDQUFDO1lBQ3pGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSx3Q0FBZ0MsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLEVBQ3BHLGtDQUFrQyxDQUNuQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7UUFDdkMsRUFBRSxDQUFDLDZDQUE2QyxFQUFFO1lBQ2hELE1BQU0sU0FBUyxHQUFHLGtFQUFrRSxDQUFDO1lBQ3JGLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO1lBRXZFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCAqIGFzIHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuXG5pbXBvcnQgeyBUT0tFTl8yMDIyX1BST0dSQU1fSUQsIFRPS0VOX1BST0dSQU1fSUQgfSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5cbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQge1xuICBjb21tb24sXG4gIEVERFNBTWV0aG9kcyxcbiAgRW52aXJvbm1lbnRzLFxuICBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkLFxuICBJV2FsbGV0LFxuICBNUENTd2VlcFR4cyxcbiAgTVBDVHgsXG4gIE1QQ1R4cyxcbiAgUHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICBUc3NVdGlscyxcbiAgVHhSZXF1ZXN0LFxuICBXYWxsZXQsXG4gIFdhbGxldENvaW5TcGVjaWZpYyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgTVBTVXRpbCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzLFxuICBLZXlQYWlyLFxuICBTb2wsXG4gIFNvbFJlY292ZXJ5T3B0aW9ucyxcbiAgU29sVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUc29sLFxufSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IEF0YUluaXQsIEluc3RydWN0aW9uUGFyYW1zLCBUb2tlblRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyB9IGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vZml4dHVyZXMvc29sJztcbmltcG9ydCAqIGFzIHJlc291cmNlcyBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IHNvbEJhY2t1cEtleSB9IGZyb20gJy4vZml4dHVyZXMvc29sQmFja3VwS2V5JztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5cbmRlc2NyaWJlKCdTT0w6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luOiBTb2w7XG4gIGxldCBrZXlQYWlyO1xuICBsZXQgbmV3VHhQcmVidWlsZDtcbiAgbGV0IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyO1xuICBsZXQgbmV3VHhQYXJhbXM7XG4gIGxldCBuZXdUeFBhcmFtc1dpdGhFcnJvcjtcbiAgbGV0IG5ld1R4UGFyYW1zV2l0aEV4dHJhRGF0YTtcbiAgbGV0IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcjtcbiAgY29uc3QgYmFkQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy5pbnZhbGlkQWRkcmVzc2VzO1xuICBjb25zdCBnb29kQWRkcmVzc2VzID0gcmVzb3VyY2VzLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3NlcztcblxuICBjb25zdCBrZXlwYWlyID0ge1xuICAgIHB1YjogcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXksXG4gICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ2xpb250ZXN0ZTIxMicsXG4gICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuVFJBTlNGRVJfVU5TSUdORURfVFhfV0lUSF9NRU1PX0FORF9EVVJBQkxFX05PTkNFLFxuICAgIHR4SW5mbzoge1xuICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICBub25jZTogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICB9LFxuICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICBpc1ZvdGluZ1RyYW5zYWN0aW9uOiBmYWxzZSxcbiAgICBjb2luOiAndHNvbCcsXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgIHR4UHJlYnVpbGQsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBtZW1vID0geyB2YWx1ZTogJ3Rlc3QgbWVtbycgfTtcbiAgY29uc3QgZHVyYWJsZU5vbmNlID0ge1xuICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgZXJyb3JEdXJhYmxlTm9uY2UgPSB7XG4gICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFlNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICBhdXRoV2FsbGV0QWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgfTtcbiAgY29uc3QgdHhQYXJhbXNXaXRoRXJyb3IgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJtTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIGNvbnN0IHR4UGFyYW1zV2l0aEV4dHJhRGF0YSA9IHtcbiAgICB0eFByZWJ1aWxkLFxuICAgIHJlY2lwaWVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCB0eFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9IHtcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR4SGV4OiByZXNvdXJjZXMuVE9LRU5fVFJBTlNGRVJfVE9fTkFUSVZFX1VOU0lHTkVEX1RYX0hFWCxcbiAgICB0eEluZm86IHtcbiAgICAgIGZlZVBheWVyOiAnNER1anltVUZiUThHQkt0QXdBWnJRNlFxcHZ0QkVpdkw0OGg0dGEyb0pHZDInLFxuICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgfSxcbiAgICB0eGlkOiAnNTg2YzViNTliMTBiMTM0ZDA0YzE2YWMxYjI3M2ZlM2M1NTI5ZjM0YWVmNzVkYjQ0NTZjZDQ2OWM1Y2RhYzdlMicsXG4gICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgY29pbjogJ3Rzb2wnLFxuICB9O1xuICBjb25zdCB0eFBhcmFtc1Rva2VuVHJhbnNmZXIgPSB7XG4gICAgdHhQcmVidWlsZCxcbiAgICByZWNpcGllbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12ZycsXG4gICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBlcnJvck1lbW8gPSB7IHZhbHVlOiAnZGlmZmVyZW50IG1lbW8nIH07XG4gIGNvbnN0IGVycm9yRmVlUGF5ZXIgPSAnNWhyNWZpc1BpNkRYQ3V1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnO1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0QnVpbGRlckZhY3RvcnkoJ3Rzb2wnKTtcbiAgY29uc3Qgd2FsbGV0ID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHN0YWtlQWNjb3VudCA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgYmxvY2tIYXNoID0gcmVzb3VyY2VzLmJsb2NrSGFzaGVzLnZhbGlkQmxvY2tIYXNoZXNbMF07XG4gIGNvbnN0IGFtb3VudCA9ICcxMDAwMCc7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHJlc291cmNlcy52YWxpZGF0b3I7XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3NvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndHNvbCcsIFRzb2wuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndHNvbCcpIGFzIFRzb2w7XG4gICAga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnNlZWQpO1xuICAgIG5ld1R4UHJlYnVpbGQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQcmVidWlsZCk7XG4gICAgfTtcbiAgICBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFByZWJ1aWxkVG9rZW5UcmFuc2Zlcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtcyA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtcyk7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFcnJvciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1dpdGhFcnJvcik7XG4gICAgfTtcbiAgICBuZXdUeFBhcmFtc1dpdGhFeHRyYURhdGEgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gXy5jbG9uZURlZXAodHhQYXJhbXNXaXRoRXh0cmFEYXRhKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlciA9ICgpID0+IHtcbiAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0eFBhcmFtc1Rva2VuVHJhbnNmZXIpO1xuICAgIH07XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5zdGFudGlhdGUgdGhlIGNvaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCd0c29sJyk7XG4gICAgbG9jYWxCYXNlY29pbi5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihUc29sKTtcblxuICAgIGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKCdzb2wnKTtcbiAgICBsb2NhbEJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFNvbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dW4gdGhlIHJpZ2h0IGluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3Rzb2wnKTtcbiAgICBiYXNlY29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3NvbCcpO1xuICAgIGJhc2Vjb2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IFNvbGFuYScpO1xuICAgIGJhc2Vjb2luLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMTAwMDAwMDAwMCk7XG4gIH0pO1xuICBkZXNjcmliZSgndmVyaWZ5IHRyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICBjb2luOiAndHNvbCcsXG4gICAgICBrZXlzOiBbXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICBdLFxuICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgIHJvb3RBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgfSxcbiAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgfTtcbiAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGNvbnNvbGlkYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQuY29uc29saWRhdGVJZCA9ICdjb25zb2xpZGF0ZUlkJztcblxuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR4QmFzZTY0IGFuZCB0eEhleCBpbnRlcmNoYW5nZWFibHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEhleCA9IHR4UHJlYnVpbGQudHhCYXNlNjQ7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBzZXJpYWxpemVkIGhleCBzdHJpbmcgdG8gYmFzZTY0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSBCdWZmZXIuZnJvbSh0eFByZWJ1aWxkLnR4QmFzZTY0LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHdoZW4gaW5wdXQgYHJlY2lwaWVudHNgIGlzIGFic2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGJ1bGsgY2xvc2UtQVRBIHR4IHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBpcyBwcmVzZW50IChvdXRwdXRzIG5vdCBwb3B1bGF0ZWQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMSA9IG5vbmNlQWNjb3VudEtleXMucHViO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczIgPSBhY2NvdW50MktleXMucHViO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsb3NlQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMiwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgeyBhZGRyZXNzOiBhdGFBZGRyZXNzMSwgYW1vdW50OiAnMCcgfSxcbiAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgYnVsayBjbG9zZS1BVEEgd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGRvIG5vdCBtYXRjaCBjbG9zZSBpbnN0cnVjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IHdyb25nQXRhID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLnN0YWtlQWNjb3VudCkuZ2V0S2V5cygpLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MxID0gbm9uY2VBY2NvdW50S2V5cy5wdWI7XG4gICAgICBjb25zdCBhdGFBZGRyZXNzMiA9IGFjY291bnQyS2V5cy5wdWI7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBhY2NvdW50S2V5cy5wdWIsIGFjY291bnRLZXlzLnB1Yik7XG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGZlZVBheWVyOiBhY2NvdW50S2V5cy5wdWIsXG4gICAgICAgICAgbm9uY2U6IGJsb2NrSGFzaCxcbiAgICAgICAgfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7IGFkZHJlc3M6IGF0YUFkZHJlc3MxLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgICB7IGFkZHJlc3M6IHdyb25nQXRhLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICAgIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnQ2xvc2UgQVRBIHR4UGFyYW1zLnJlY2lwaWVudHMgYWRkcmVzc2VzIG11c3QgbWF0Y2ggdGhlIEFUQSBhY2NvdW50IGFkZHJlc3NlcyBpbiB0aGUgdHJhbnNhY3Rpb24gaW5zdHJ1Y3Rpb25zJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZlcmlmeSBidWxrIGNsb3NlLUFUQSB3aGVuIGEgcmVjaXBpZW50IGFtb3VudCBpcyBub24temVybycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBub25jZUFjY291bnRLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLm5vbmNlQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYWNjb3VudDJLZXlzID0gbmV3IEtleVBhaXIocmVzb3VyY2VzLmF1dGhBY2NvdW50MikuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgYXRhQWRkcmVzczEgPSBub25jZUFjY291bnRLZXlzLnB1YjtcbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MyID0gYWNjb3VudDJLZXlzLnB1YjtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgYWNjb3VudEtleXMucHViLCBhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGFjY291bnRLZXlzLnB1YiwgYWNjb3VudEtleXMucHViKTtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczEsIGFtb3VudDogJzEnIH0sXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogYXRhQWRkcmVzczIsIGFtb3VudDogJzAnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdDbG9zZSBBVEEgcmVjaXBpZW50cyBtdXN0IGhhdmUgemVybyBhbW91bnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHJlY292ZXItbmVzdGVkIHR4IHdoZW4gd2FsbGV0QWRkcmVzcyBtYXRjaGVzIHJvb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50S2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IGFjY291bnQyS2V5cyA9IG5ldyBLZXlQYWlyKHJlc291cmNlcy5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1pbnQgPSAnRVBqRldkZDVBdWZxU1NxZU0ycU4xeHp5YmFwQzhHNHdFR0drWnd5VER0MXYnO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFJlY292ZXJOZXN0ZWRBdGFCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5mZWVQYXllcihhY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFzc29jaWF0ZWRUb2tlbkFjY291bnRSZW50KCcyMDM5MjgwJyk7XG4gICAgICB0eEJ1aWxkZXIubmVzdGVkQWNjb3VudEFkZHJlc3Mobm9uY2VBY2NvdW50S2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZE1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJBY2NvdW50QWRkcmVzcyhhY2NvdW50MktleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5vd25lck1pbnRBZGRyZXNzKG1pbnQpO1xuICAgICAgdHhCdWlsZGVyLndhbGxldEFkZHJlc3MoYWNjb3VudEtleXMucHViKTtcblxuICAgICAgY29uc3QgYnVpbHQgPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiBidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBmZWVQYXllcjogYWNjb3VudEtleXMucHViLFxuICAgICAgICAgIG5vbmNlOiBibG9ja0hhc2gsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgcmVjb3Zlci1uZXN0ZWQgdHggd2hlbiB3YWxsZXQgcm9vdCBkb2VzIG5vdCBtYXRjaCBpbnN0cnVjdGlvbiB3YWxsZXRBZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudEtleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBhY2NvdW50MktleXMgPSBuZXcgS2V5UGFpcihyZXNvdXJjZXMuYXV0aEFjY291bnQyKS5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtaW50ID0gJ0VQakZXZGQ1QXVmcVNTcWVNMnFOMXh6eWJhcEM4RzR3RUdHa1p3eVREdDF2JztcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRSZWNvdmVyTmVzdGVkQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnRLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuZmVlUGF5ZXIoYWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgdHhCdWlsZGVyLm5lc3RlZEFjY291bnRBZGRyZXNzKG5vbmNlQWNjb3VudEtleXMucHViKTtcbiAgICAgIHR4QnVpbGRlci5uZXN0ZWRNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKGFjY291bnQyS2V5cy5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm93bmVyQWNjb3VudEFkZHJlc3MoYWNjb3VudDJLZXlzLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIub3duZXJNaW50QWRkcmVzcyhtaW50KTtcbiAgICAgIHR4QnVpbGRlci53YWxsZXRBZGRyZXNzKGFjY291bnRLZXlzLnB1Yik7XG5cbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEJhc2U2NDogYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6IGFjY291bnRLZXlzLnB1YixcbiAgICAgICAgICBub25jZTogYmxvY2tIYXNoLFxuICAgICAgICB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB3YWxsZXREYXRhV3JvbmdSb290ID0ge1xuICAgICAgICBpZDogJzViMzQyNTJmMWJmMzQ5OTMwZTM0MDIwYTAwMDAwMDAwJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyb25nUm9vdFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhV3JvbmdSb290KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXQ6IHdyb25nUm9vdFdhbGxldCxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKC9SZWNvdmVyIG5lc3RlZCB3YWxsZXQgYWRkcmVzcyBtdXN0IGJlIHdhbGxldCByb290IGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgbWVtbycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbzogZXJyb3JNZW1vLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG1lbW8gZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnQgbWVtbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGlmIHdlIHBhc3MgUERBIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXREYXRhID0ge1xuICAgICAgICBpZDogJzY3ZjhkZGZmNGM5YjhiNTdhMmUxNmFjZmZhYzlhM2I1JyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NTAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc2MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzcwMDAwMDAwMCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHpic0pBNWM4SFBSN0JQalprclNWcnVzMnVNdVhxQ2Z6a3NHd0IzVXNjamInLFxuICAgICAgICB9LFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdhbGxldE9iaiA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTInLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR4QmFzZTY0OlxuICAgICAgICAgICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmVjMWFkY2M4OWJiNTY0ZjFmODIyNTgyMTE0MGE5NzIzZWZhODBlOGQ1MDY3NjU3NzBiN2UyMDFkNjZkODIwMGQ0ZjY5MGU5YTgxNjMyOTFiNjlmOGMzODI3YWFkOTZjZmQyMTA1ZWVlM2FhZTc2Y2JjYTM4ZmNhZDJiZjdmMGEwMjAxMDcwYzc2YzM1NmNiMDY5YjY2YzJiMzVhODYzOGI0ZDRhZmNhNzViMzAzZjI5ZjBkZWViNGJmZjg1MjgyOTlhOWM5ZDIxYzk2MTcyMDQ0ZjEyMTdjMzc4NGU4ZjAyZjQ5ZTJjOGZjMzU5MWU4MTI5NGFiNTQzOTRmOWQyMmZkN2I3YThmNjAxMjllNmVjYjIwMzA5YzI3ZGNiYTVmYzZjNDQxNDM4ZDMzYTE1NjgwMDRhMTg2MGUyMmMxNmYwNzE5NzZhN2QyZTIwMDhiZDM0YjUzYTA4YWE5YzhlYzA0ZWIyMTk2NzQ1ZmM2MDI5MjI0NDQ3NDE3ZTJmYjBmY2VkNjAxMjQwY2FiYmE0Y2U1MzRjMDJmYzE1NGJhNTU5ZWQyYTAyYWM5NzFlMzM4NWFjYjQyNmZmNjNiYjEwNDBlMmMyNDM1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4Yzk3MjU4ZjRlMjQ4OWYxYmIzZDEwMjkxNDhlMGQ4MzBiNWExMzk5ZGFmZjEwODQwNDhlN2JkOGRiZTlmODU5ZDEwMzg5ZmJjZWU1MjhmMjA4NjExZGNjYzczNGIzMTA5MjU0MGNiMmI4ZDU4ZDEwMGYyZWFhMmNlZGI0ZGE1ZTA2YTdkNTE3MTkyYzU2OGVlMDhhODQ1ZjczZDI5Nzg4Y2YwMzVjMzE0NWIyMWFiMzQ0ZDgwNjJlYTk0MDAwMDAwNmE3ZDUxNzE5MmM1YzUxMjE4Y2M5NGMzZDRhZjE3ZjU4ZGFlZTA4OWJhMWZkNDRlM2RiZDk4YTAwMDAwMDAwMDZkZGY2ZTFkNzY1YTE5M2Q5Y2JlMTQ2Y2VlYjc5YWMxY2I0ODVlZDVmNWIzNzkxM2E4Y2Y1ODU3ZWZmMDBhOWU2ODA2MzQ1MzM4ODJmODgwYTNlN2RmYTk5OWRmYjg2NGI4ODk2OGQyNDJhMGM5YTkwYjVkZjE0OWU0MmRhMDUwMzA1MDMwMjA5MDEwNDA0MDAwMDAwMDcwNzAwMDMwNjA4MDUwYjBhMDAwYjA0MDQwODAzMDAwYTBjMDBjYTlhM2IwMDAwMDAwMDA5JyxcbiAgICAgICAgdHhJbmZvOiB7XG4gICAgICAgICAgZmVlUGF5ZXI6ICc4emJzSkE1YzhIUFI3QlBqWmtyU1ZydXMydU11WHFDZnprc0d3QjNVc2NqYicsXG4gICAgICAgICAgbm9uY2U6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIH0sXG4gICAgICAgIHR4aWQ6ICc1ODZjNWI1OWIxMGIxMzRkMDRjMTZhYzFiMjczZmUzYzU1MjlmMzRhZWY3NWRiNDQ1NmNkNDY5YzVjZGFjN2UyJyxcbiAgICAgICAgaXNWb3RpbmdUcmFuc2FjdGlvbjogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMicsXG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBtZW1vID0ge1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZlcmlmeVRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbzogbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2ZXJpZnlUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IGR1cmFibGVOb25jZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgbWVtbywgZHVyYWJsZU5vbmNlOiBlcnJvckR1cmFibGVOb25jZSwgd2FsbGV0OiB3YWxsZXRPYmogfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBkdXJhYmxlTm9uY2UgZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXJhbSBkdXJhYmxlTm9uY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gaGF2ZSBkaWZmZXJlbnQgZmVlUGF5ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3Qgd2FsbGV0RGF0YSA9IHtcbiAgICAgICAgaWQ6ICc1YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMCcsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAga2V5czogW1xuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzUwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NjAwMDAwMDAwJyxcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc3MDAwMDAwMDAnLFxuICAgICAgICBdLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICByb290QWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB3YWxsZXRXaXRoRGlmZmVyZW50QWRkcmVzcyA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIHdhbGxldDogd2FsbGV0V2l0aERpZmZlcmVudEFkZHJlc3MgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUeCBmZWUgcGF5ZXIgaXMgbm90IHRoZSB3YWxsZXQgcm9vdCBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmVyaWZ5IHRyYW5zYWN0aW9ucyB3aGVuIGhhdmUgZGlmZmVyZW50IHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zV2l0aEVycm9yKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIG1lbW8sIGVycm9yRmVlUGF5ZXIsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gd2l0aCBuYXRpdmUgYWRkcmVzcyByZWNpcGllbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggbGVhZGluZyB6ZXJvIHJlY2lwaWVudCBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzAwMDEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZGMnIH1dO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGRUb2tlblRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmZWVQYXllcldhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6ICc0RHVqeW1VRmJROEdCS3RBd0FaclE2UXFwdnRCRWl2TDQ4aDR0YTJvSkdkMicsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmVlUGF5ZXJXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgZmVlUGF5ZXJXYWxsZXREYXRhKTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICB3YWxsZXQ6IGZlZVBheWVyV2FsbGV0LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCB0b2tlbk5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICdBRjVINnZCa0ZuSnVWcUNoUlBnUFE0SlJjUTVHazI1SEJGaFFRa3lvam12Zyc7IC8vIE5hdGl2ZSBTT0wgYWRkcmVzc1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFt7IGFkZHJlc3MsIGFtb3VudDogJzEnLCB0b2tlbk5hbWU6ICd0c29sOnVzZHQnIH1dOyAvLyBEaWZmZXJlbnQgdG9rZW5OYW1lLCBzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHhcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IHJlY2lwaWVudCBhbW91bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdmcnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3NcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcyJywgdG9rZW5OYW1lOiAndHNvbDp1c2R0JyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIHdpdGggZGlmZmVyZW50IG5hdGl2ZSBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtc1Rva2VuVHJhbnNmZXIoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQUY1SDZ2QmtGbkp1VnFDaFJQZ1BRNEpSY1E1R2syNUhCRmhRUWt5b2ptdlgnOyAvLyBOYXRpdmUgU09MIGFkZHJlc3MsIGRpZmZlcmVudCB0aGFuIHR4IHJlY2lwaWVudHNcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbeyBhZGRyZXNzLCBhbW91bnQ6ICcxJywgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyB9XTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkVG9rZW5UcmFuc2ZlcigpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCB0b2tlbiB3aGVuIHRva2VuQWRkcmVzcyBhbmQgcHJvZ3JhbUlkIGFyZSBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVzZSBhbiBhZGRyZXNzIHRoYXQgaXMgTk9UIGluIHRoZSBzdGF0aWMgdG9rZW4gbWFwIGFzIHRoZSB1bnN1cHBvcnRlZCBtaW50XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7IC8vICczYzVlbVVXalZpRnFUNzJMeFFZZWM4Z2tVOFp0bWZLS1hIdkdnSk5VQmRZeCdcbiAgICAgIGNvbnN0IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MgPSByZXNvdXJjZXMuYXV0aEFjY291bnQyLnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwJztcblxuICAgICAgLy8gUHJlLWRlcml2ZSB0aGUgQVRBIHNvIHRoZSBidWlsZGVyJ3MgaW5zdHJ1Y3Rpb24gZGVzdGluYXRpb24gbWF0Y2hlcyB3aGF0IHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgY29tcHV0ZVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsIC8vIHBhc3MgdGhlIEFUQSBhcyB0aGUgZGlyZWN0IGRlc3RpbmF0aW9uXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLCAvLyB0b2tlbk5hbWUgZXF1YWxzIG1pbnQgYWRkcmVzcyAobWF0Y2hlcyBleHBsYWluVHJhbnNhY3Rpb24gZmFsbGJhY2spXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcywgLy8gbmF0aXZlIGFkZHJlc3Mg4oCUIHZlcmlmeVRyYW5zYWN0aW9uIHdpbGwgZGVyaXZlIHRoZSBBVEFcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcywgLy8gbXVzdCBtYXRjaCBvdXRwdXQncyB0b2tlbk5hbWUgKG1pbnQgYWRkcmVzcyBhcyBmYWxsYmFjaylcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQ6IHdhbGxldE9iaiB9IGFzIGFueSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0b2tlbiB0cmFuc2FjdGlvbiBmb3IgdW5zdXBwb3J0ZWQgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgbm90IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICBjb25zdCBhdGFBZGRyZXNzID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgIHRydWUsXG4gICAgICAgIFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIC8vIE5vIHRva2VuQWRkcmVzcyBvciBwcm9ncmFtSWQg4oCUIHN0YXRpYyBtYXAgbG9va3VwIHdpbGwgZmFpbCBmb3IgdW5zdXBwb3J0ZWQgdG9rZW5cbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdG9rZW4gdHJhbnNhY3Rpb24gZm9yIHVuc3VwcG9ydGVkIFRva2VuLTIwMjIgdG9rZW4gd2hlbiB0b2tlbkFkZHJlc3MgYW5kIHByb2dyYW1JZCBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzID0gcmVzb3VyY2VzLnN0YWtlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCByZWNpcGllbnROYXRpdmVBZGRyZXNzID0gcmVzb3VyY2VzLmF1dGhBY2NvdW50Mi5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMCc7XG5cbiAgICAgIGNvbnN0IGF0YUFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoYmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBhbW91bnQ6IDUwMDAgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZCh7XG4gICAgICAgIGFkZHJlc3M6IGF0YUFkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgdG9rZW5OYW1lOiB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IDYsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4QmFzZTY0OiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLFxuICAgICAgICB0eEluZm86IHsgZmVlUGF5ZXI6IHdhbGxldC5wdWIsIG5vbmNlOiBibG9ja0hhc2ggfSxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50TmF0aXZlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRva2VuIHRyYW5zYWN0aW9uIGZvciB1bnN1cHBvcnRlZCBUb2tlbi0yMDIyIHRva2VuIHdoZW4gd3JvbmcgcHJvZ3JhbUlkIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyA9IHJlc291cmNlcy5zdGFrZUFjY291bnQucHViO1xuICAgICAgY29uc3QgcmVjaXBpZW50TmF0aXZlQWRkcmVzcyA9IHJlc291cmNlcy5hdXRoQWNjb3VudDIucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAnO1xuXG4gICAgICAvLyBCdWlsZCB3aXRoIFRva2VuLTIwMjIgcHJvZ3JhbSBJRCAoQVRBIGRlcml2ZWQgdXNpbmcgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKVxuICAgICAgY29uc3QgYXRhQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1bnN1cHBvcnRlZE1pbnRBZGRyZXNzLFxuICAgICAgICByZWNpcGllbnROYXRpdmVBZGRyZXNzLFxuICAgICAgICB0cnVlLFxuICAgICAgICBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGFtb3VudDogNTAwMCB9KTtcbiAgICAgIHR4QnVpbGRlci5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogYXRhQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgIHRva2VuQWRkcmVzczogdW5zdXBwb3J0ZWRNaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgZGVjaW1hbFBsYWNlczogNixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgICAgIHR4SW5mbzogeyBmZWVQYXllcjogd2FsbGV0LnB1Yiwgbm9uY2U6IGJsb2NrSGFzaCB9LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuICAgICAgLy8gVmVyaWZ5IHdpdGggdGhlIHdyb25nIHByb2dyYW1JZCAoVE9LRU5fUFJPR1JBTV9JRCBpbnN0ZWFkIG9mIFRPS0VOXzIwMjJfUFJPR1JBTV9JRClcbiAgICAgIC8vIEFUQSBkZXJpdmF0aW9uIHdpbGwgcHJvZHVjZSBhIGRpZmZlcmVudCBhZGRyZXNzIOKGkiBtaXNtYXRjaCDihpIgcmVqZWN0aW9uXG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudE5hdGl2ZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IHVuc3VwcG9ydGVkTWludEFkZHJlc3MsXG4gICAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOX1BST0dSQU1fSUQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldDogd2FsbGV0T2JqIH0gYXMgYW55KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2ZXJpZnkgdHJhbnNhY3Rpb25zIHdoZW4gcmVjaXBpZW50cyBoYXMgZXh0cmEgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXNXaXRoRXh0cmFEYXRhKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIGR1cmFibGVOb25jZSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSBuZXdUeFBhcmFtcygpO1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIHR4UHJlYnVpbGQudHhCYXNlNjQgPSB0eFRvQnJvYWRjYXN0Rm9ybWF0O1xuICAgICAgdHhQcmVidWlsZC50eEluZm8ubm9uY2UgPSAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IG5ld1R4UGFyYW1zKCk7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0gbmV3VHhQcmVidWlsZCgpO1xuICAgICAgdHhQcmVidWlsZC50eEJhc2U2NCA9IHR4VG9Ccm9hZGNhc3RGb3JtYXQ7XG4gICAgICB0eFByZWJ1aWxkLnR4SW5mby5ub25jZSA9ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbic7XG4gICAgICB0eFBhcmFtcy5yZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICBhbW91bnQ6IGFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB2YWxpZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgbWVtbyxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXRPYmosXG4gICAgICB9IGFzIGFueSk7XG4gICAgICB2YWxpZFRyYW5zYWN0aW9uLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJztcbiAgICAgIHR4UGFyYW1zLnJlY2lwaWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IHZhbGlkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICBtZW1vLFxuICAgICAgICB3YWxsZXQ6IHdhbGxldE9iaixcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHZhbGlkVHJhbnNhY3Rpb24uc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgY3JlYXRlIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLm1pbnQoJ3Rzb2w6dXNkYycpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBuZXdUeFByZWJ1aWxkKCk7XG4gICAgICB0eFByZWJ1aWxkLnR4QmFzZTY0ID0gdHhUb0Jyb2FkY2FzdEZvcm1hdDtcbiAgICAgIHR4UHJlYnVpbGQudHhJbmZvLm5vbmNlID0gYmxvY2tIYXNoO1xuICAgICAgdHhQYXJhbXMucmVjaXBpZW50cyA9IFtdO1xuICAgICAgY29uc3QgdmFsaWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIG1lbW8sXG4gICAgICAgIHdhbGxldDogd2FsbGV0T2JqLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgdmFsaWRUcmFuc2FjdGlvbi5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcycsICgpID0+IHtcbiAgICBsZXQgb3JpZ2luYWxBcmNoOiBzdHJpbmc7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIG9yaWdpbmFsQXJjaCA9IHByb2Nlc3MuYXJjaDtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbEFyY2gsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFtb3VudCB1bmNoYW5nZWQgb24gbm9uLXMzOTB4IGFyY2hpdGVjdHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAneDY0JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMzAwMDAwJykuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCcxMDAwMCcpLnNob3VsZC5lcXVhbCgnMTAwMDAnKTtcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCc1MDQ0MDMxNTgyNjU0OTU1NTInKS5zaG91bGQuZXF1YWwoJzUwNDQwMzE1ODI2NTQ5NTU1MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBieXRlLXN3YXAgc21hbGwgYW1vdW50cyBvbiBzMzkweCAoc21hbGwgYmVjb21lcyBodWdlKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gU21hbGwgYW1vdW50IDEwLDAwMCAoMHgyNzEwKSBzd2FwcyB0byAxLDE2Myw4OTksMDI4LDY5OCw1NjIsNTYwXG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnMTAwMDAnKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnl0ZS1zd2FwIGxhcmdlIGFtb3VudHMgb24gczM5MHggKGxhcmdlIGJlY29tZXMgdGlueSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExhcmdlIGFtb3VudCA1MDQsNDAzLDE1OCwyNjUsNDk1LDU1MiAoMHgwNzAwMDAwMDAwMDAwMDAwKSBzd2FwcyB0byA3XG4gICAgICBnZXRBbW91bnRCYXNlZE9uRW5kaWFubmVzcygnNTA0NDAzMTU4MjY1NDk1NTUyJykuc2hvdWxkLmVxdWFsKCc3Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudW1lcmljIGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb2Nlc3MsICdhcmNoJywge1xuICAgICAgICB2YWx1ZTogJ3MzOTB4JyxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgd29yayB3aXRoIG51bWJlcnMsIG5vdCBqdXN0IHN0cmluZ3NcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKDEwMDAwKS5zaG91bGQuZXF1YWwoJzExNjM4OTkwMjg2OTg1NjI1NjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0YW5kYXJkIHRyYW5zYWN0aW9uIGFtb3VudHMgb24gczM5MHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvY2VzcywgJ2FyY2gnLCB7XG4gICAgICAgIHZhbHVlOiAnczM5MHgnLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0YW5kYXJkIGFtb3VudCAzMDAsMDAwICgweDQ5M0UwKSBzd2FwcyB0byBsYXJnZSB2YWx1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0QW1vdW50QmFzZWRPbkVuZGlhbm5lc3MoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IGl0J3MgZGlmZmVyZW50IChzd2FwcGVkKVxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuZXF1YWwoJzMwMDAwMCcpO1xuICAgICAgLy8gVmVyaWZ5IHN3YXBwaW5nIGJhY2sgZ2l2ZXMgb3JpZ2luYWxcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKHJlc3VsdCkuc2hvdWxkLmVxdWFsKCczMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGludmFsaWQgaW5wdXQgZ3JhY2VmdWxseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9jZXNzLCAnYXJjaCcsIHtcbiAgICAgICAgdmFsdWU6ICdzMzkweCcsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gSW52YWxpZCBCaWdJbnQgaW5wdXQgc2hvdWxkIHJldHVybiBvcmlnaW5hbCBzdHJpbmdcbiAgICAgIGdldEFtb3VudEJhc2VkT25FbmRpYW5uZXNzKCdub3QtYS1udW1iZXInKS5zaG91bGQuZXF1YWwoJ25vdC1hLW51bWJlcicpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGdvb2RBZGRyZXNzZXMuZm9yRWFjaCgoYWRkcikgPT4ge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFkQWRkcmVzc2VzLmZvckVhY2goKGFkZHIpID0+IHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHIpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHViJyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihrZXlQYWlyLnB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHViIGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHViS2V5ID0ga2V5UGFpci5wdWIuc2xpY2UoMCwga2V5UGFpci5wdWIubGVuZ3RoIC0gMSkgKyAnLSc7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YihiYWRQdWJLZXkpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgdmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJ2Jyk7XG4gICAgYmFzZWNvaW4uaXNWYWxpZFBydihrZXlQYWlyLnBydikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFuIGludmFsaWQgcHJ2IGtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmFkUHJ2S2V5ID0ga2V5UGFpci5wcnYgPyBrZXlQYWlyLnBydi5zbGljZSgwLCBrZXlQYWlyLnBydi5sZW5ndGggLSAxKSArICctJyA6IHVuZGVmaW5lZDtcbiAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KGJhZFBydktleSBhcyBzdHJpbmcpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQYXJzZSBUcmFuc2FjdGlvbnM6JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICdDUDVEcGFhNDJSdEptTXVLcUNRc0x3bWE1WWgza251dktzWURGWDg1RjQxUycsXG4gICAgICAgICAgICBhbW91bnQ6IDMwNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB3YWxsZXQgaW5pdCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAzMTAwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLnBhcnNlVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLndhbGxldEluaXQuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6IDMxMDAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHBhcnNlZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiA1MDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCB0cmFuc2ZlciB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBwYXJzZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogNTAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIudW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnMlhGeEdmWGRkS1ducUdhTUFzZk5MOEhnWHFEdmpCTDJBZTI4S1dyUnZnOWJRQm1DcnBIWVZEYWN1WkZlQVV5WXdqWEc2ZXkyalRBUlg1VlFDbmo3U0Y0TCcsXG4gICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYW4gdW5zaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC51bnNpZ25lZCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnV2FsbGV0SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMDAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgYmxvY2toYXNoOiAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMud2FsbGV0SW5pdC5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJzdUa1U4d0xnWERlTEZiVnlkdGc2bXFNc3A5R2F0c2V0aXRTbmd5c2dqeEZob2ZLU1VjTFBCb0tQSGNpTGVHRWZKRk1zcWV6cFptR1JTRlFUQnk3WkRzZycsXG4gICAgICAgIHR5cGU6ICdXYWxsZXRJbml0aWFsaXphdGlvbicsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc4WTdSTTZKZmNYNEFTU05Ca3Jrcm1TYlJ1NDMxWVZpOVkzb0xGbnpDMmRDaCcsXG4gICAgICAgICAgICBhbW91bnQ6ICczMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICBtZW1vOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhbiB1bnNpZ25lZCB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2ZlclRva2VuLnVuc2lnbmVkLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnMzAwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzEyZjZEM1d1YkdWZVFvSDJtOGtUdnZjcmFzV2RYV3d0VnpVQ3lSTkRaeEEyJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiAnOFk3Uk02SmZjWDRBU1NOQmtya3JtU2JSdTQzMVlWaTlZM29MRm56QzJkQ2gnLFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXJUb2tlbi5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICcydGljVTRaa0VxZFRIVUxyNkxvYlRnV0JoaW02RTd3U3NjRGhNNGd6eXVHVW1ReVV3TFlob3FhaWZ1dndtTnp6RWYxVDVhZWZWY2dNUWtTSGRKNW5zcmZaJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJ0NQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMCcsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgICAgICB2YWx1ZTogJzMwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICcxMmY2RDNXdWJHVmVRb0gybThrVHZ2Y3Jhc1dkWFd3dFZ6VUN5Uk5EWnhBMicsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaScsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiAnMTJmNkQzV3ViR1ZlUW9IMm04a1R2dmNyYXNXZFhXd3RWelVDeVJORFp4QTInLFxuICAgICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFjdGl2YXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKVxuICAgICAgICAubWVtbygndGVzdCBtZW1vJylcbiAgICAgICAgLmZlZSh7IGFtb3VudDogNTAwMCB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4VG9Ccm9hZGNhc3RGb3JtYXQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdHhUb0Jyb2FkY2FzdEZvcm1hdCxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogJzUwMDAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1N0YWtpbmdBY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMTAwMDAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzdkUnVHRmJVMnkya2lqUDZvMUxZTnpWeXo0eWYxM01vb3FvaW9uQ3p2NVphJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgdmFsdWU6ICcxMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwMDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW10sXG4gICAgICAgIGF0YU93bmVyTWFwOiB7fSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGRlYWN0aXZhdGUgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdTdGFraW5nRGVhY3RpdmF0ZScsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiB3aXRoZHJhdyBzdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKGJsb2NrSGFzaClcbiAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnU3Rha2luZ1dpdGhkcmF3JyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcxMDAwMCcsXG4gICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlucHV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICc3ZFJ1R0ZiVTJ5MmtpalA2bzFMWU56Vnl6NHlmMTNNb29xb2lvbkN6djVaYScsXG4gICAgICAgICAgICB2YWx1ZTogJzEwMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmZWVQYXllcjogJzVocjVmaXNQaTZEWE51dVJwbTVYVWJ6cGlFbm1keXhYdUJEVHd6d1pqNVBlJyxcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgICAgZmVlUmF0ZTogNTAwMCxcbiAgICAgICAgfSxcbiAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIGJsb2NraGFzaDogJzVuZTdwaEE0OEpydnBuMzlBdHVwQjhaa0NDQXk4Z0xUZnBHaWhaUHVEcWVuJyxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuRW5hYmxlbWVudHM6IFtdLFxuICAgICAgICBhdGFPd25lck1hcDoge30sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBjcmVhdGUgQVRBIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gJ3Rzb2w6dXNkYyc7XG4gICAgICBjb25zdCByZW50RXhlbXB0QW1vdW50ID0gJzMwMDAwMDAnO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShibG9ja0hhc2gpXG4gICAgICAgIC5taW50KHRva2VuTmFtZSlcbiAgICAgICAgLnJlbnRFeGVtcHRBbW91bnQocmVudEV4ZW1wdEFtb3VudClcbiAgICAgICAgLm1lbW8oJ3Rlc3QgbWVtbycpXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDUwMDAgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eFRvQnJvYWRjYXN0Rm9ybWF0ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IHR4VG9Ccm9hZGNhc3RGb3JtYXQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogcmVudEV4ZW1wdEFtb3VudCxcbiAgICAgIH0pO1xuICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGRpc3BsYXlPcmRlcjogW1xuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdibG9ja2hhc2gnLFxuICAgICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgICAgICdmZWUnLFxuICAgICAgICAgICdtZW1vJyxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6ICdVTkFWQUlMQUJMRScsXG4gICAgICAgIHR5cGU6ICdBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24nLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgZmVlUGF5ZXI6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzMwMDUwMDAnLFxuICAgICAgICAgIGZlZVJhdGU6IDUwMDAsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW86ICd0ZXN0IG1lbW8nLFxuICAgICAgICBibG9ja2hhc2g6ICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzE0MUJGTmVtM3BrbmM4Q3pQVkx2MVJpM2J0Z0tkQ3NhZllQNW5Yd21YZnhVJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMTQxQkZOZW0zcGtuYzhDelBWTHYxUmkzYnRnS2RDc2FmWVA1blh3bVhmeFUnOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gY3JlYXRlIG11bHRpIEFUQSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgdG9rZW5OYW1lOiAndHNvbDp1c2RjJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG93bmVyQWRkcmVzczogZHVyYWJsZU5vbmNlLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnJheScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVudEV4ZW1wdEFtb3VudCA9ICczMDAwMDAwJztcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0QXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UoYmxvY2tIYXNoKVxuICAgICAgICAuZW5hYmxlVG9rZW4ocmVjaXBpZW50c1swXSlcbiAgICAgICAgLmVuYWJsZVRva2VuKHJlY2lwaWVudHNbMV0pXG4gICAgICAgIC5yZW50RXhlbXB0QW1vdW50KHJlbnRFeGVtcHRBbW91bnQpXG4gICAgICAgIC5tZW1vKCd0ZXN0IG1lbW8nKVxuICAgICAgICAuZmVlKHsgYW1vdW50OiA1MDAwIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhUb0Jyb2FkY2FzdEZvcm1hdCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBleHBsYWluZWRUcmFuc2FjdGlvbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0OiB0eFRvQnJvYWRjYXN0Rm9ybWF0LFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAnNTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHJlbnRFeGVtcHRBbW91bnQsXG4gICAgICB9KTtcbiAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgICAnZmVlJyxcbiAgICAgICAgICAnbWVtbycsXG4gICAgICAgIF0sXG4gICAgICAgIGlkOiAnVU5BVkFJTEFCTEUnLFxuICAgICAgICB0eXBlOiAnQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uJyxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGlucHV0czogW10sXG4gICAgICAgIGZlZVBheWVyOiAnNWhyNWZpc1BpNkRYTnV1UnBtNVhVYnpwaUVubWR5eFh1QkRUd3p3Wmo1UGUnLFxuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICc2MDA1MDAwJyxcbiAgICAgICAgICBmZWVSYXRlOiA1MDAwLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vOiAndGVzdCBtZW1vJyxcbiAgICAgICAgYmxvY2toYXNoOiAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdG9rZW5FbmFibGVtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VScsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6ICdGNHVMZVhKb0Z6M2h3MTNNcG9zdXdhUWJNY1piQ2pxdkVHUFBlUlJCMUJ5ZicsXG4gICAgICAgICAgICB0b2tlbk5hbWU6ICd0c29sOnVzZGMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJzlrTEpvR2JNZ1N0ZXB0a2hLS3VoN2tlbjRKRXZIclQ4MzE1N2V6RUdyWjdSJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6cmF5JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhdGFPd25lck1hcDoge1xuICAgICAgICAgICcxNDFCRk5lbTNwa25jOEN6UFZMdjFSaTNidGdLZENzYWZZUDVuWHdtWGZ4VSc6ICc1aHI1ZmlzUGk2RFhOdXVScG01WFVienBpRW5tZHl4WHVCRFR3endaajVQZScsXG4gICAgICAgICAgJzlLYUxpblpGTlc1Y2hMNEo4VW9LblRFQ3BwV1ZNejNld2d4NEZBa3hVRGNmJzogJzhZN1JNNkpmY1g0QVNTTkJrcmtybVNiUnU0MzFZVmk5WTNvTEZuekMyZENoJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGFuIHVuc2lnbmVkIHRva2VuIHRyYW5zZmVyIHdpdGggQVRBIGNyZWF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NDogdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRva2VuVHJhbnNmZXJXaXRoQXRhQ3JlYXRpb24udW5zaWduZWQsXG4gICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICBmZWU6ICc1MDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogJzMwMDAwMDAnLFxuICAgICAgfSk7XG4gICAgICBleHBsYWluZWRUcmFuc2FjdGlvbi5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICAgJ2ZlZScsXG4gICAgICAgICAgJ21lbW8nLFxuICAgICAgICBdLFxuICAgICAgICBpZDogJ1VOQVZBSUxBQkxFJyxcbiAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzVVM2JINWI2WHRHOTlhVldMcXdWellQVnBRaUZIeXRCRDY4UnoyZUZQWmQ3JyxcbiAgICAgICAgICAgIHZhbHVlOiAnMTAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZlZVBheWVyOiAnNVUzYkg1YjZYdEc5OWFWV0xxd1Z6WVBWcFFpRkh5dEJENjhSejJlRlBaZDcnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnMzAwNTAwMCcsIGZlZVJhdGU6IDUwMDAgfSxcbiAgICAgICAgbWVtbzogdW5kZWZpbmVkLFxuICAgICAgICBibG9ja2hhc2g6ICcyN0UzTVhGdlhNVU5ZZU1KZVgxcEFiRVJHc0pmVWJrYVpUZmdNZ3BtTk41ZycsXG4gICAgICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJzJlS2pWdHpWM29QVFhGZHRSU0RqM0VtOWsxTVY3azhXaktrQnN6UVV3aXpTJyxcbiAgICAgICAgICAgIHRva2VuQWRkcmVzczogJ0Y0dUxlWEpvRnozaHcxM01wb3N1d2FRYk1jWmJDanF2RUdQUGVSUkIxQnlmJyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogJ3Rzb2w6dXNkYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXRhT3duZXJNYXA6IHtcbiAgICAgICAgICAnMmVLalZ0elYzb1BUWEZkdFJTRGozRW05azFNVjdrOFdqS2tCc3pRVXdpelMnOiAnQzR6Q3FDYURtNEQ3OHpnYUgzQ2VCRUVCRUFvTU5oelNDajIzcUU5Mm5kaVAnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlwYWlyOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXlwYWlyIGZyb20gYSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoJ3BsYWNlaG9sZGVyJyBhcyBhbnkpLCAnZ2VuZXJhdGVLZXlQYWlyIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NpZ24gdHJhbnNhY3Rpb246JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25lZDogYW55ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4QmFzZTY0OiByZXNvdXJjZXMuUkFXX1RYX1VOU0lHTkVELFxuICAgICAgICAgIGtleXM6IFtyZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnB1YmxpY0tleS50b1N0cmluZygpXSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiByZXNvdXJjZXMuYWNjb3VudFdpdGhTZWVkLnByaXZhdGVLZXkuYmFzZTU4LFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgc2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChyZXNvdXJjZXMuUkFXX1RYX1NJR05FRCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB0eEhleCBhbmQgdHhCYXNlNjQgaW50ZXJjaGFuZ2VhYmx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkOiBhbnkgPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAga2V5czogW3Jlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LnRvU3RyaW5nKCldLFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHJpdmF0ZUtleS5iYXNlNTgsXG4gICAgICB9IGFzIGFueSk7XG4gICAgICBzaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKHJlc291cmNlcy5SQVdfVFhfU0lHTkVEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaW52YWxpZCB0cmFuc2FjdGlvbiB3aGVuIHNpZ24gd2l0aCBwdWJsaWMga2V5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgICAgdHhCYXNlNjQ6IHJlc291cmNlcy5SQVdfVFhfVU5TSUdORUQsXG4gICAgICAgICAgICBrZXlzOiBbcmVzb3VyY2VzLmFjY291bnRXaXRoU2VlZC5wdWJsaWNLZXkudG9TdHJpbmcoKV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcnY6IHJlc291cmNlcy5hY2NvdW50V2l0aFNlZWQucHVibGljS2V5LFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzaWduIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzaWduZWQgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlwYWlyLCAnc2lnbmVkIG1lc3NhZ2UnKTtcbiAgICAgIHNpZ25lZFxuICAgICAgICAudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIC5zaG91bGQuZXF1YWwoJ3MrN2QvOGFXL3R3Zk0vMHdMU0tPR3hkOStMaERJaXovZzBGZkozOXlsSmhRSWtqSzBSWVBtL1krZ2RlSjVESXk2SzZoNmdDWFhFU0RvbWx2MTJEQkJRPT0nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkbnQgc2lnbiBtZXNzYWdlIHdoZW4gbWVzc2FnZSBpcyB1bmRlZmluZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuc2lnbk1lc3NhZ2Uoa2V5cGFpciwgdW5kZWZpbmVkIGFzIGFueSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIG9yIEFycmF5IG9yIGFuIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB1bmRlZmluZWQnXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZXQgU2lnbmluZyBQYXlsb2FkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdmFsaWQgc2lnbmluZyBwYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KGJhc2Vjb2luLmdldENoYWluKCkpO1xuICAgICAgY29uc3QgcmVidWlsdFNpZ25hYmxlUGF5bG9hZCA9IChhd2FpdCBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX1dJVEhfTUVNTykuYnVpbGQoKSlcbiAgICAgICAgLnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHJlc291cmNlcy5UUkFOU0ZFUl9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgc2lnbmluZ1BheWxvYWQuc2hvdWxkLmJlLmRlZXBFcXVhbChyZWJ1aWx0U2lnbmFibGVQYXlsb2FkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50IHR4biBidWlsZGVyIGZyb20gcmF3IHR4bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeShiYXNlY29pbi5nZXRDaGFpbigpKTtcbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmVzb3VyY2VzLlRSQU5TRkVSX1VOU0lHTkVEX1RYX0NMT1NFX0FUQSk7XG4gICAgICBhc3NlcnQub2sodHhuQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcmVzaWduIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gJ3R4UmVxdWVzdElkJztcbiAgICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRib3gudmVyaWZ5QW5kUmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHR4IHJlcXVlc3QgZm9yIGhvdCB3YWxsZXRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVidWlsdFR4OiBUeFJlcXVlc3QgPSB7XG4gICAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgICB1bnNpZ25lZFR4czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZWRUeEhleDogJ2RlYWRiZWVmJyxcbiAgICAgICAgICAgIHNpZ25hYmxlSGV4OiAnc2VyaWFsaXplZFR4SGV4JyxcbiAgICAgICAgICAgIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgbGF0ZXN0OiB0cnVlLFxuICAgICAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgIHdhbGxldElkOiAnd2FsbGV0SWQnLFxuICAgICAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVzZXJJZDogJ3VzZXJJZCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzdHViVHNzVXRpbHMgPSBzYW5kYm94LmNyZWF0ZVN0dWJJbnN0YW5jZShUc3NVdGlscyk7XG4gICAgICBzdHViVHNzVXRpbHMuZGVsZXRlU2lnbmF0dXJlU2hhcmVzLnJlc29sdmVzKFtdKTtcbiAgICAgIHN0dWJUc3NVdGlscy5nZXRUeFJlcXVlc3QucmVzb2x2ZXMocmVidWlsdFR4KTtcblxuICAgICAgY29uc3QgaG90V2FsbGV0ID0ge1xuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmVzaWduZWRUcmFuc2FjdGlvbjogYW55ID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogaG90V2FsbGV0LFxuICAgICAgICB0c3NVdGlsczogc3R1YlRzc1V0aWxzLFxuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLndhbGxldERhdGEuc2hvdWxkLmRlZXBFcXVhbChob3RXYWxsZXQpO1xuICAgICAgcHJlc2lnbmVkVHJhbnNhY3Rpb24udHhQcmVidWlsZC5zaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeCk7XG4gICAgICBwcmVzaWduZWRUcmFuc2FjdGlvbi50eEhleC5zaG91bGQuZXF1YWwocmVidWlsdFR4LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgZm9yIG5vbi1ob3Qgd2FsbGV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGRXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xkJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByZXNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgYmFzZWNvaW4ucHJlc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgd2FsbGV0RGF0YTogY29sZFdhbGxldCxcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIHByZXNpZ25lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICB3YWxsZXREYXRhOiBjb2xkV2FsbGV0LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGVycm9yIGlmIHR4UmVxdWVzdElkIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBob3RXYWxsZXQgPSB7XG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5wcmVzaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHdhbGxldERhdGE6IGhvdFdhbGxldCxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7fSxcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHR4UmVxdWVzdElkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBUEkgS2V5IHBhcmFtZXRlcjonLCAoKSA9PiB7XG4gICAgLy8gVGVzdCB0aGUgZ2V0UHVibGljTm9kZVVybCBtZXRob2QgZGlyZWN0bHlcbiAgICBpdCgnc2hvdWxkIGFwcGVuZCBhcGlLZXkgdG8gbm9kZSBVUkwgd2hlbiBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEFjY2VzcyB0aGUgcHJvdGVjdGVkIG1ldGhvZCB1c2luZyB0eXBlIGNhc3RpbmdcbiAgICAgIGNvbnN0IHVybCA9IChiYXNlY29pbiBhcyBhbnkpLmdldFB1YmxpY05vZGVVcmwoJ3Rlc3QtYXBpLWtleS0xMjMnKTtcbiAgICAgIHVybC5zaG91bGQuZXF1YWwoYCR7RW52aXJvbm1lbnRzLnRlc3Quc29sQWxjaGVteU5vZGVVcmx9L3Rlc3QtYXBpLWtleS0xMjNgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIHJlZ3VsYXIgbm9kZSBVUkwgd2hlbiBhcGlLZXkgaXMgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWNjZXNzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIHVzaW5nIHR5cGUgY2FzdGluZ1xuICAgICAgY29uc3QgdXJsID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgICAgdXJsLnNob3VsZC5lcXVhbChFbnZpcm9ubWVudHMudGVzdC5zb2xOb2RlVXJsKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsICgpID0+IHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQoJ3Rzb2wnKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBsZXQgY2FsbEJhY2s6IHNpbm9uLlNpbm9uU3R1YjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21taXRtZW50OiAnZmluYWxpemVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbMTY1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5hY2NvdW50SW5mby5iczU4RW5jb2RlZFB1YmxpY0tleU5vRnVuZHNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTFEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMURlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5TTJEZXJpdmF0aW9uXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VNMkRlcml2YXRpb24pO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5V2l0aE1hbnlUb2tlbnNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU0yRGVyaXZhdGlvbik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UyKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJGb3JTb2wyMDIyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlMik7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M0LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsXG4gICAgICAgICAgICBwYXJhbXM6IHNpbm9uLm1hdGNoLmFycmF5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlKVxuICAgICAgICAub25DYWxsKDEpXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0YWtlIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIGEgc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGVzdERhdGEub3ZjUmVzcG9uc2U7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F2UitMOTA5a3pScTZOdWFVZTlGNkp0OTdNT2lGczdqcFc4TXVPcnd6NEViS0Y0MGQzMWRjaS9iZ0xUcTRncGsvSGgzczVjQThGdGJMa0RRcjE1UHFBRTd5ZDhMT1h2c0x0TzJSRXFNTS9PQ1o4d0l0ZnNxZlRmaWEyeElmaWJSVzN3SGd3NjNqaWFvamJYZVNxYVlhakovQ2E3WXdCVXo1Ymx5ZEkzZllMZ1BBZ0VDQnNMVnRmVDdtcHZOaWk4d1BrMEc5NDJON1RBSEUvUlcyaXEvOExQcUFZV3FCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5RdkxxRS9qL25YbFkyL0pweHVOci9mWExYRVBlUzA0ZFB2dDlxejFkQW9ZRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFEcGlIMjBjeExqN0tuT2FvSTVBTk5vUHhZanM0NzJGZGpEZU1QZnQza1hkQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd29wbzdBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRha2Ugc29sIDIwMjIgdG9rZW4gT1ZDIG91dHB1dCBhbmQgZ2VuZXJhdGUgYSBzaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5VHhuID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlQnJvYWRjYXN0YWJsZVN3ZWVwVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHJlY292ZXJ5VHhuLnRyYW5zYWN0aW9uc1swXS5zZXJpYWxpemVkVHguc2hvdWxkLmVxdWFsKFxuICAgICAgICAnQXZSK0w5MDlrelJxNk51YVVlOUY2SnQ5N01PaUZzN2pwVzhNdU9yd3o0RWJLRjQwZDMxZGNpL2JnTFRxNGdway9IaDNzNWNBOEZ0YkxrRFFyMTVQcUFFN3lkOExPWHZzTHRPMlJFcU1NL09DWjh3SXRmc3FmVGZpYTJ4SWZpYlJXM3dIZ3c2M2ppYW9qYlhlU3FhWWFqSi9DYTdZd0JVejVibHlkSTNmWUxnUEFnRUNCc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUJSbzB2SXJOUTRkamwyK1doMkVWQlE5emdvVlRWbTBSSFhySXYvNi9XSHhQWDFtSHYrSnFwbUFUNzlsdE5qWVBLME0yeVIrWk1sbjdWZ1VUQldGTlF2THFFL2ovblhsWTIvSnB4dU5yL2ZYTFhFUGVTMDRkUHZ0OXF6MWRBb1lFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdwOVVYR1N4V2p1Q0toRjl6MHBlSXp3TmNNVVd5R3JORTJBWXVxVUFBQURwaUgyMGN4TGo3S25PYW9JNUFOTm9QeFlqczQ3MkZkakRlTVBmdDNrWGRBZ1FEQWdVQkJBUUFBQUFFQWdBRERBSUFBQUR3b3BvN0FBQUFBQT09J1xuICAgICAgKTtcbiAgICAgIChyZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIChyZWNvdmVyeVR4bi5sYXN0U2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGFrZSBjb25zb2xpZGF0aW9uIE9WQyBvdXRwdXQgYW5kIGdlbmVyYXRlIG11bHRpcGxlIHNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0ZXN0RGF0YS5vdmNSZXNwb25zZTI7XG4gICAgICBjb25zdCByZWNvdmVyeVR4biA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMF0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F0UVBMek9tTHVLd0hZNk41WG9KSVpLL1Q3VzEwdVlXbS9NUnRlM0dGVWRsK3czZ0hMalNhOUg2NldTZkZOdWJReElQY2t4SkR5bHRrUDdrc0xEZjlRZ0JOSk0yVVdiQlVINXdUMEpKSElMbGhDczMzSFg4RGVFLzhUZHN3NnRHZlpvTWhDblNLdjZUUFd0Qnh5N1NiNnNXOGtzQ1VQbkFXdUhHR0ttZ2pFTUJBZ0VDQm1McnF4SnJZMmtiTi90Y3JRdzNQOFAxNU9sakZHYWJGSkFLQnJVTzFnck5CUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h4UFgxbUh2K0pxcG1BVDc5bHROallQSzBNMnlSK1pNbG43VmdVVEJXRk5Rc0xWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFJWlFuaWlTNzNENm13ZnBuZmhWTUM0bHlZSnRSU3Jtb1pwRjd5SWxVZElEQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzBdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZWNvdmVyeVR4bi50cmFuc2FjdGlvbnNbMV0uc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbChcbiAgICAgICAgJ0F1TGhPQTV6bU9CWlI4NWxvK25LZFRvcFZ3SkFNck1wNk5XKzhVbkdOc1NCU3BCa3FmV1pRcVNnOXMrN2FUbFhlem01dnhvbCtQbDZ0N1BwVk5UT0h3TGNwOXhKcDNURkhkaXZFYmh3SktsZFI0TnkrcGFzb0Z4K0JnazhxNmcxaU5pcTdYU2kxT3YzYnM3ZXVNa1RqN25EUkZxUDhsdjd4TFRjdnJCbTlPUUpBZ0VDQnAxNEltQkNkbVZST2x3MFV2ZVlTMU12Ry9sakNSSTNNSlRGbXN4dVhFb1dCUm8wdklyTlE0ZGpsMitXaDJFVkJROXpnb1ZUVm0wUkhYckl2LzYvV0h3MGh5eHZwVnd0SXg5L3plWDJPMTZlVHJZK2FLSWgxbWRLZzRNTWcwZXl4TUxWdGZUN21wdk5paTh3UGswRzk0Mk43VEFIRS9SVzJpcS84TFBxQVlXcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHcDlVWEdTeFdqdUNLaEY5ejBwZUl6d05jTVVXeUdyTkUyQVl1cVVBQUFDN3dzMVhGc2xpbndndHBJU1VWaVZXSVZUSHlEMlEwcWoyNFlqS21yQW1YQWdRREFnVUJCQVFBQUFBRUFnQUREQUlBQUFEd1BjMGRBQUFBQUE9PSdcbiAgICAgICk7XG4gICAgICAocmVjb3ZlcnlUeG4udHJhbnNhY3Rpb25zWzFdLnNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVjb3ZlcnlUeG4ubGFzdFNjYW5JbmRleCA/PyAwKS5zaG91bGQuZXF1YWwoMjApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciBub24tYml0Z28gcmVjb3ZlcmllcyAobGF0ZXN0IGJsb2NraGFzaCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgLy8gTGF0ZXN0IEJsb2NraGFzaCBSZWNvdmVyeSAoQml0R28tbGVzcylcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NrSGFzaFR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgfSk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgbGF0ZXN0QmxvY2tIYXNoVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICBsYXRlc3RCbG9ja0hhc2hUeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigobGF0ZXN0QmxvY2tIYXNoVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbiA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5ub25jZSwgdGVzdERhdGEuU29sSW5wdXREYXRhLmJsb2NraGFzaCk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24ubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmxhdGVzdEJsb2NraGFzaFNpZ25hdHVyZXMpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgMyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eG4gZm9yIG5vbi1iaXRnbyByZWNvdmVyaWVzIChkdXJhYmxlIG5vbmNlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAvLyBEdXJhYmxlIE5vbmNlIFJlY292ZXJ5IChCaXRHby1sZXNzKVxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIGR1cmFibGVOb25jZVR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgZHVyYWJsZU5vbmNlVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgZHVyYWJsZU5vbmNlVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKGR1cmFibGVOb25jZVR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGR1cmFibGVOb25jZVR4bkpzb24gPSBkdXJhYmxlTm9uY2VUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKGR1cmFibGVOb25jZVR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLmFjY291bnRJbmZvLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHNob3VsZC5lcXVhbChkdXJhYmxlTm9uY2VUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDQpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVW5zaWduZWQgU3dlZXAgUmVjb3ZlcnlcbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG4gPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICB1bnNpZ25lZFN3ZWVwVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodW5zaWduZWRTd2VlcFR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oXG4gICAgICAgIHVuc2lnbmVkU3dlZXBUeG4udHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhcbiAgICAgICk7XG4gICAgICBjb25zdCB1bnNpZ25lZFN3ZWVwVHhuSnNvbiA9IHVuc2lnbmVkU3dlZXBUeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bnNpZ25lZFN3ZWVwVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEuYWNjb3VudEluZm8uYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHVuc2lnbmVkU3dlZXBUeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9yIGluIHJlY292ZXIgZnVuY3Rpb24gaWYgYSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nL2luY29ycmVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1pc3NpbmcgdXNlcmtleVxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEua2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmtleXMuYml0Z29LZXksXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnbWlzc2luZyB1c2VyS2V5Jyk7XG5cbiAgICAgIC8vIG1pc3NpbmcgYmFja3Vwa2V5XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEua2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS5rZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEua2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG5cbiAgICAgIC8vIGluY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZSwgdXNlciBrZXksIGJhY2t1cCBrZXkgY29tYmluYXRpb25cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQgKyAnaW5jb3JyZWN0JyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG5cbiAgICAgIC8vIG5vIHdhbGxldCB3aXRoIHN1ZmZpY2llbnQgZnVuZHNcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5rZXlzLnVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5rZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEua2V5cy5iaXRnb0tleU5vRnVuZHMsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLndyd1VzZXIud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgZHVyYWJsZU5vbmNlOiB7XG4gICAgICAgICAgcHVibGljS2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgICBzZWNyZXRLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHJpdktleSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleVxuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnR5cGUsICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm1pbnRBZGRyZXNzLCB1c2R0TWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblVTRFRUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5vd25lckFkZHJlc3MsIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsxXSBhcyBBdGFJbml0KS5wYXJhbXMucGF5ZXJBZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcblxuICAgICAgY29uc3Qgc291cmNlVVNEVFRva2VuQWNjb3VudCA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKFxuICAgICAgICB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy50b2tlbk5hbWUsICd0c29sOnVzZHQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMuc291cmNlQWRkcmVzcywgc291cmNlVVNEVFRva2VuQWNjb3VudCk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCAyMDIyIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIG5vIGV4aXN0aW5nIHRva2VuIGFjY291bnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlblR4bi5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgodG9rZW5UeG4gYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG5cbiAgICAgIGNvbnN0IHRva2VuVHhuRGVzZXJpYWxpemUgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICB0b2tlblR4bkRlc2VyaWFsaXplLmZyb21SYXdUcmFuc2FjdGlvbigodG9rZW5UeG4gYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCB0b2tlblR4bkpzb24gPSB0b2tlblR4bkRlc2VyaWFsaXplLnRvSnNvbigpO1xuXG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBJbnN0cnVjdGlvblBhcmFtc1tdO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGEubGVuZ3RoLCAzKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzBdLnR5cGUsICdOb25jZUFkdmFuY2UnKTtcblxuICAgICAgY29uc3QgZGVzdGluYXRpb25Ub2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXlcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5taW50QWRkcmVzcywgdDIybWludEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5hdGFBZGRyZXNzLCBkZXN0aW5hdGlvblRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLm93bmVyQWRkcmVzcywgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMV0gYXMgQXRhSW5pdCkucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzFdIGFzIEF0YUluaXQpLnBhcmFtcy5wYXllckFkZHJlc3MsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuXG4gICAgICBjb25zdCBzb3VyY2VUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczBcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsyXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5mcm9tQWRkcmVzcywgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRvQWRkcmVzcywgZGVzdGluYXRpb25Ub2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoKGluc3RydWN0aW9uc0RhdGFbMl0gYXMgVG9rZW5UcmFuc2ZlcikucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChpbnN0cnVjdGlvbnNEYXRhWzJdIGFzIFRva2VuVHJhbnNmZXIpLnBhcmFtcy5zb3VyY2VBZGRyZXNzLCBzb3VyY2VUb2tlbkFjY291bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAoaW5zdHJ1Y3Rpb25zRGF0YVsyXSBhcyBUb2tlblRyYW5zZmVyKS5wYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgICAnVG9rZW56UWRCTmJMcVA1VkVoZGtBUzZFUEZMQzFQSG5CcUNYRXBQeHVFYidcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNvbENvaW4gPSBiYXNlY29pbiBhcyBhbnk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsQ291bnQoc29sQ29pbi5nZXREYXRhRnJvbU5vZGUsIDcpO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNvbCB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRva2VuVHhuLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICB0b2tlblR4bi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKCh0b2tlblR4biBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKCh0b2tlblR4biBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IHRva2VuVHhuSnNvbi5pbnN0cnVjdGlvbnNEYXRhIGFzIFRva2VuVHJhbnNmZXJbXTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVswXS50eXBlLCAnTm9uY2VBZHZhbmNlJyk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZVVTRFRUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzdGluYXRpb25VU0RUVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kZXN0aW5hdGlvblB1YktleTJcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uVVNEVFRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dXNkdCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZVVTRFRUb2tlbkFjY291bnQpO1xuXG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgMjAyMiB0b2tlbnMgdG8gcmVjb3ZlcnkgZGVzdGluYXRpb24gd2l0aCBleGlzdGluZyB0b2tlbiBhY2NvdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IHNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS53cndVc2VyLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5rZXlzLmRlc3RpbmF0aW9uUHViS2V5MixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS53cndVc2VyLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyYW1JZDogVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCksXG4gICAgICB9KTtcblxuICAgICAgdG9rZW5UeG4uc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgdG9rZW5UeG4uc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHRva2VuVHhuLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHRva2VuVHhuIGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuXG4gICAgICBjb25zdCB0b2tlblR4bkRlc2VyaWFsaXplID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgdG9rZW5UeG5EZXNlcmlhbGl6ZS5mcm9tUmF3VHJhbnNhY3Rpb24oKHRva2VuVHhuIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgdG9rZW5UeG5Kc29uID0gdG9rZW5UeG5EZXNlcmlhbGl6ZS50b0pzb24oKTtcbiAgICAgIGNvbnNvbGUubG9nKHRva2VuVHhuSnNvbik7XG4gICAgICBzaG91bGQuZXF1YWwodG9rZW5UeG5Kc29uLm5vbmNlLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlQmxvY2toYXNoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b2tlblR4bkpzb24uZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRva2VuVHhuSnNvbi5udW1TaWduYXR1cmVzLCB0ZXN0RGF0YS5Tb2xJbnB1dERhdGEuZHVyYWJsZU5vbmNlU2lnbmF0dXJlcyk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSB0b2tlblR4bkpzb24uaW5zdHJ1Y3Rpb25zRGF0YSBhcyBUb2tlblRyYW5zZmVyW107XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YS5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMF0udHlwZSwgJ05vbmNlQWR2YW5jZScpO1xuXG4gICAgICBjb25zdCBzb3VyY2UyMDIyVG9rZW5BY2NvdW50ID0gYXdhaXQgZ2V0QXNzb2NpYXRlZFRva2VuQWNjb3VudEFkZHJlc3MoXG4gICAgICAgIHQyMm1pbnRBZGRyZXNzLFxuICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbjIwMjJUb2tlbkFjY291bnQgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgdDIybWludEFkZHJlc3MsXG4gICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKClcbiAgICAgICk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS50eXBlLCAnVG9rZW5UcmFuc2ZlcicpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLmZyb21BZGRyZXNzLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MwKTtcbiAgICAgIHNob3VsZC5lcXVhbChpbnN0cnVjdGlvbnNEYXRhWzFdLnBhcmFtcy50b0FkZHJlc3MsIGRlc3RpbmF0aW9uMjAyMlRva2VuQWNjb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoaW5zdHJ1Y3Rpb25zRGF0YVsxXS5wYXJhbXMuYW1vdW50LCAnMjAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnRva2VuTmFtZSwgJ3Rzb2w6dDIybWludCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGluc3RydWN0aW9uc0RhdGFbMV0ucGFyYW1zLnNvdXJjZUFkZHJlc3MsIHNvdXJjZTIwMjJUb2tlbkFjY291bnQpO1xuICAgICAgY29uc3Qgc29sQ29pbiA9IGJhc2Vjb2luIGFzIGFueTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxDb3VudChzb2xDb2luLmdldERhdGFGcm9tTm9kZSwgNyk7XG4gICAgICBzYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgc29sIHRva2VucyB0byByZWNvdmVyeSBkZXN0aW5hdGlvbiB3aXRoIGV4aXN0aW5nIHRva2VuIGFjY291bnRzIGZvciB1bnNpZ25lZCBzd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlUmVzcG9uc2UgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZTtcbiAgICAgIGZlZVJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlID0gMTAwMDA7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXMoZmVlUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCB0b2tlblR4biA9IChhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXkyLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdGVzdERhdGEudG9rZW5BZGRyZXNzLlRlc3RVU0RDLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuXG4gICAgICAvLyAyIHNpZ25hdHVyZXMgYW5kIG5vIHJlbnQgZXhlbXB0aW9uIGZlZSBzaW5jZSB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBoYXMgdG9rZW4gYWNjb3VudHNcbiAgICAgIGNvbnN0IGV4cGVjdGVkRmVlID0gNTAwMCArIDUwMDA7XG5cbiAgICAgIGNvbnN0IHsgc2VyaWFsaXplZFR4LCBzY2FuSW5kZXgsIGZlZUluZm8sIHBhcnNlZFR4IH0gPSB0b2tlblR4bi50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgYXNzZXJ0Lm9rKHNlcmlhbGl6ZWRUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2NhbkluZGV4LCAwKTtcbiAgICAgIGFzc2VydC5vayhmZWVJbmZvKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmZWVJbmZvLmZlZVN0cmluZywgZXhwZWN0ZWRGZWUudG9TdHJpbmcoKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmVlSW5mby5mZWUsIGV4cGVjdGVkRmVlKTtcbiAgICAgIGFzc2VydC5vayhwYXJzZWRUeCk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHguaW5wdXRzIGluc3RhbmNlb2YgQXJyYXkgJiYgcGFyc2VkVHguaW5wdXRzLmxlbmd0aCA9PT0gMSk7XG4gICAgICBhc3NlcnQub2socGFyc2VkVHgub3V0cHV0cyBpbnN0YW5jZW9mIEFycmF5ICYmIHBhcnNlZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxKTtcblxuICAgICAgY29uc3QgdG9rZW5UeG5EZXNlcmlhbGl6ZSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIHRva2VuVHhuRGVzZXJpYWxpemUuZnJvbVJhd1RyYW5zYWN0aW9uKHRva2VuVHhuLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IHRva2VuVHhuSnNvbiA9IHRva2VuVHhuRGVzZXJpYWxpemUudG9Kc29uKCk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0b2tlblR4bkpzb24ubm9uY2UsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VCbG9ja2hhc2gpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRva2VuVHhuSnNvbi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodG9rZW5UeG5Kc29uLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgICBjb25zdCBzb2xDb2luID0gYmFzZWNvaW4gYXMgYW55O1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbENvdW50KHNvbENvaW4uZ2V0RGF0YUZyb21Ob2RlLCA3KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzb2wgZnVuZHMgZnJvbSBBVEEgYWRkcmVzcyBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBzYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgY29uc3QgY2xvc2VBVEFUeG5zID0gYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNsb3NlQVRBKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5yZWNvdmVyeURlc3RpbmF0aW9uQXRhQWRkcmVzcyxcbiAgICAgIH0pO1xuICAgICAgY2xvc2VBVEFUeG5zLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzBdLnR4SWQsXG4gICAgICAgICcyaWQzWUMyaks5RzVXbzJwaER4NGdKVkFldzhEY1k1TkFvam5WdWFvOHJreHdQWVBlOGNTd0U1R3poRWdKQTJ5OGZWakRFbzZpUjZ5a0J2RHhyVFFydHBiJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2xvc2VBVEFUeG5zWzFdLnR4SWQsXG4gICAgICAgICc1b1VCZ1hYNGVuR21GRXNwRzY0Z295M1BSeXNqZnJla1pHZzNyWk5rQkhVQ1FGZDQ4MnZyVldiZkRjUllNQkVKdDY1Slh5bWZFUG04TTZkODlYNHhWNzluJ1xuICAgICAgKTtcbiAgICAgIHNhbmRCb3guYXNzZXJ0LmNhbGxlZFR3aWNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gcmVjb3ZlckNsb3NlQVRBIHZpYSBzaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24gd2l0aCBNUEN2MSBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gc2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gKGJhc2Vjb2luIGFzIGFueSkuZ2V0QnVpbGRlcigpO1xuICAgICAgY29uc3QgYmxvY2toYXNoID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlLmJvZHkucmVzdWx0LnZhbHVlLmJsb2NraGFzaDtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZShibG9ja2hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXkpO1xuICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyh0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXkpO1xuICAgICAgdHhCdWlsZGVyLmF1dGhvcml0eUFkZHJlc3ModGVzdERhdGEuY2xvc2VBVEFrZXlzLmJzNThFbmNvZGVkUHVibGljS2V5KTtcbiAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5zaWduQW5kR2VuZXJhdGVCcm9hZGNhc3RhYmxlVHJhbnNhY3Rpb24oXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIGNsb3NlQXRhQWRkcmVzczogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYnM1OEVuY29kZWRQdWJsaWNLZXksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgc2FuZEJveC5hc3NlcnQuY2FsbGVkT25jZShnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHRva2VucyBmcm9tIGEgbmVzdGVkIEFUQSAoQVRBIHdob3NlIG93bmVyIGlzIGFub3RoZXIgQVRBKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy53YWxsZXRQYXNzd29yZCxcbiAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICByZXN1bHQudHhJZCxcbiAgICAgICAgJzJpZDNZQzJqSzlHNVdvMnBoRHg0Z0pWQWV3OERjWTVOQW9qblZ1YW84cmt4d1BZUGU4Y1N3RTVHemhFZ0pBMnk4ZlZqREVvNmlSNnlrQnZEeHJUUXJ0cGInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5lc3RlZEF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogJ1pmbTk4WnBWYWZ5ZGhGVFljc1k2YkhndWJoQjRjRmdXRnZiZEVKeFloVEEnLFxuICAgICAgICAgIHRva2VuTWludEFkZHJlc3M6ICdaQkNOcHVEN1lNWHpUSEIyZmhHa0dpNzhNTnNIR0xSWFVoUmV3TlJtOVJVJyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG93bmVyQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJOZXN0ZWRBdGEoe1xuICAgICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJhY2t1cEtleSxcbiAgICAgICAgICBiaXRnb0tleTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmJpdGdvS2V5LFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMud2FsbGV0UGFzc3dvcmQsXG4gICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogJ0ZHdVpTQmh0cmVxU1VzRTg2eG9reWpLejJpOFZCdEp6eTZ1TVhYS3lHSHVnJyxcbiAgICAgICAgICB0b2tlbk1pbnRBZGRyZXNzOiAnWkJDTnB1RDdZTVh6VEhCMmZoR2tHaTc4TU5zSEdMUlhVaFJld05SbTlSVScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIG93bmVyQXRhQWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHRva2VuTWludEFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdpbnZhbGlkIHRva2VuTWludEFkZHJlc3MnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zIChNUEN2Mik6JywgKCkgPT4ge1xuICAgIGNvbnN0IG1wY1YyU2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCB1c2R0TWludEFkZHJlc3MgPSAnOWNncEJlTloySG5MZGE3TldhYVUxaTNOeVRzdGsyYzR6Q01VY29BR3NpOUMnO1xuICAgIGNvbnN0IHQyMm1pbnRBZGRyZXNzID0gJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JztcbiAgICBjb25zdCB0b2tlbjIyUHJvZ3JhbUlkID0gJ1Rva2VuelFkQk5iTHFQNVZFaGRrQVM2RVBGTEMxUEhuQnFDWEVwUHh1RWInO1xuICAgIGxldCBjYWxsQmFjazogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtcGNWMlVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJCYWNrdXBLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJDb21tb25LZXlDaGFpbjogc3RyaW5nO1xuICAgIGxldCBtcGNWMldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlblVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbldhbGxldEFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgbWlzbWF0Y2hlZEJpdGdvS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBtcGNWMlRva2VuUmVjb3ZlclBhcmFtczogU29sUmVjb3ZlcnlPcHRpb25zO1xuICAgIGxldCBjbG9zZUF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IFt0b2tlblVzZXJEa2csIHRva2VuQmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgY29uc3QgW290aGVyVXNlckRrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkO1xuXG4gICAgICBtcGNWMlVzZXJLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQmFja3VwS2V5ID0gZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyQ29tbW9uS2V5Q2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBtcGMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzAnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtaXNtYXRjaGVkQml0Z29LZXkgPSBvdGhlclVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIG1pc21hdGNoZWRXYWxsZXRBZGRyZXNzID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1pc21hdGNoZWRCaXRnb0tleSwgJ20vMCcpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcblxuICAgICAgbXBjVjJUb2tlblVzZXJLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuVXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJUb2tlbkJhY2t1cEtleSA9IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdG9rZW5CYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiA9IHRva2VuVXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgICAgbXBjVjJUb2tlbldhbGxldEFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuXG4gICAgICBtcGNWMlJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBtcGNWMkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9O1xuICAgICAgbXBjVjJUb2tlblJlY292ZXJQYXJhbXMgPSB7XG4gICAgICAgIHVzZXJLZXk6IG1wY1YyVG9rZW5Vc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyVG9rZW5CYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5OiBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW4sXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB1c2R0TWludEFkZHJlc3MsXG4gICAgICAgIGR1cmFibGVOb25jZToge1xuICAgICAgICAgIHB1YmxpY0tleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY2xvc2VBdGFNcGNWMlBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuY2xvc2VBVEFrZXlzLmRlc3RpbmF0aW9uUHViS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBjbG9zZUF0YUFkZHJlc3M6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb25BdGFBZGRyZXNzOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMucmVjb3ZlcnlEZXN0aW5hdGlvbkF0YUFkZHJlc3MsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBjYWxsQmFjayA9IG1wY1YyU2FuZEJveC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TGF0ZXN0QmxvY2toYXNoJywgcGFyYW1zOiBbeyBjb21taXRtZW50OiAnZmluYWxpemVkJyB9XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEJsb2NraGFzaFJlc3BvbnNlKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJXYWxsZXRBZGRyZXNzXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbc2lub24ubWF0Y2guc3RyaW5nLCB7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvbicsIHBhcmFtczogWzE2NV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcblxuICAgICAgbXBjVjJTYW5kQm94LnN0dWIoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCAndG9Ccm9hZGNhc3RGb3JtYXQnKS5yZXR1cm5zKCdzdHViLXNlcmlhbGl6ZWQtdHgnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBtcGNWMlNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBuYXRpdmUgU09MIHJlY292ZXJ5IHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJSZWNvdmVyUGFyYW1zKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoKHJlc3VsdCBhcyBNUENUeCkuc2NhbkluZGV4LCAwKTtcbiAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBNUEN2MiBjb21tb25LZXlDaGFpbiBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttaXNtYXRjaGVkV2FsbGV0QWRkcmVzc10gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7IC4uLm1wY1YyUmVjb3ZlclBhcmFtcywgYml0Z29LZXk6IG1pc21hdGNoZWRCaXRnb0tleSB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSB0byBNUEN2MiBwYXRoIGZvciBTUEwgdG9rZW4gcmVjb3Zlcnkgd2hlbiBrZXljYXJkIGlzIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMlRva2VuV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIobXBjVjJUb2tlblJlY292ZXJQYXJhbXMpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCgocmVzdWx0IGFzIE1QQ1R4KS5zY2FuSW5kZXgsIDApO1xuICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcm91dGUgdG8gTVBDdjIgcGF0aCBmb3IgVG9rZW4tMjAyMiByZWNvdmVyeSBhbmQgcHJlc2VydmUgcHJvZ3JhbUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW21wY1YyVG9rZW5XYWxsZXRBZGRyZXNzLCB7IHByb2dyYW1JZDogdG9rZW4yMlByb2dyYW1JZCB9LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lckZvclNvbDIwMjJSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZGVzdGluYXRpb25QdWJLZXksIHsgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkIH0sIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJUb2tlblJlY292ZXJQYXJhbXMsXG4gICAgICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiB0MjJtaW50QWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiB0b2tlbjIyUHJvZ3JhbUlkLFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhcHBseSBkdXJhYmxlIG5vbmNlIGFjY291bnQgc2lnbmF0dXJlIHdoZW4ga2V5Y2FyZCBpcyBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ubXBjVjJSZWNvdmVyUGFyYW1zLFxuICAgICAgICBkdXJhYmxlTm9uY2U6IHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKChyZXN1bHQgYXMgTVBDVHgpLnNjYW5JbmRleCwgMCk7XG4gICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlY292ZXJDbG9zZUFUQScsICgpID0+IHtcbiAgICAgIGNvbnN0IHplcm9Ub2tlbkluZm9SZXNwb25zZSA9IF8uY2xvbmVEZWVwKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkluZm9SZXNwb25zZSk7XG4gICAgICB6ZXJvVG9rZW5JbmZvUmVzcG9uc2UuYm9keS5yZXN1bHQudmFsdWUuZGF0YS5wYXJzZWQuaW5mby50b2tlbkFtb3VudC5hbW91bnQgPSAnMCc7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzc10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTTJEZXJpdmF0aW9uKTtcblxuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBzaW5vbi5tYXRjaCgoYWRkcmVzczogc3RyaW5nKSA9PiBhZGRyZXNzICE9PSB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuY2xvc2VBdGFBZGRyZXNzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ3NlbmRUcmFuc2FjdGlvbicsIHBhcmFtczogc2lub24ubWF0Y2guYXJyYXkgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UpXG4gICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEpO1xuXG4gICAgICAgIGxldCBicm9hZGNhc3RDYWxsSW5kZXggPSAwO1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkuY2FsbHNGYWtlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBicm9hZGNhc3RDYWxsSW5kZXgrKztcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhJZDpcbiAgICAgICAgICAgICAgYnJvYWRjYXN0Q2FsbEluZGV4ID09PSAxXG4gICAgICAgICAgICAgICAgPyB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdFxuICAgICAgICAgICAgICAgIDogdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UxLmJvZHkucmVzdWx0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBjbG9zZSBBVEEgd2l0aCBNUEN2MiBrZXlzIHdoZW4gbm8gdG9rZW4gYmFsYW5jZSBpcyBwcmVzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MsIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVzb2x2ZXMoemVyb1Rva2VuSW5mb1Jlc3BvbnNlKTtcblxuICAgICAgICBjb25zdCBnZXRUU1NTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KEVERFNBTWV0aG9kcywgJ2dldFRTU1NpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyQ2xvc2VBVEEoY2xvc2VBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0cy5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXN1bHRzWzBdLnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgIGNhbGxCYWNrLmdldENhbGxzKCkuZmluZCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdPy5wYXlsb2FkPy5tZXRob2QgPT09ICdnZXRCYWxhbmNlJyk/LmFyZ3NbMF0ucGF5bG9hZC5wYXJhbXNbMF0sXG4gICAgICAgICAgbXBjVjJXYWxsZXRBZGRyZXNzXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIGNsb3NlIEFUQSB3aXRoIE1QQ3YyIGtleXMgd2hlbiB0b2tlbiBiYWxhbmNlIGlzIHByZXNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDbG9zZUFUQShjbG9zZUF0YU1wY1YyUGFyYW1zKTtcblxuICAgICAgICByZXN1bHRzLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdHNbMF0udHhJZCwgdGVzdERhdGEuU29sUmVzcG9uc2VzLmJyb2FkY2FzdFRyYW5zYWN0aW9uUmVzcG9uc2UuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0c1sxXS50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZTEuYm9keS5yZXN1bHQpO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgY2FsbEJhY2suZ2V0Q2FsbHMoKS5maW5kKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0/LnBheWxvYWQ/Lm1ldGhvZCA9PT0gJ2dldEJhbGFuY2UnKT8uYXJnc1swXS5wYXlsb2FkLnBhcmFtc1swXSxcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3NcbiAgICAgICAgKTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoZ2V0VFNTU2lnbmF0dXJlU3B5KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gTVBDdjIgcmVjb3ZlckNsb3NlQVRBIGJpdGdvS2V5IGRvZXMgbm90IG1hdGNoIGtleWNhcmQgY29tbW9uS2V5Q2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxCYWNrXG4gICAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEuY2xvc2VBVEFrZXlzLmNsb3NlQXRhQWRkcmVzcywgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZXNvbHZlcyh6ZXJvVG9rZW5JbmZvUmVzcG9uc2UpO1xuXG4gICAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgICAgLnJlY292ZXJDbG9zZUFUQSh7IC4uLmNsb3NlQXRhTXBjVjJQYXJhbXMsIGJpdGdvS2V5OiBtaXNtYXRjaGVkQml0Z29LZXkgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2lnbiByZWNvdmVyQ2xvc2VBVEEgdmlhIHNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbiB3aXRoIE1QQ3YyIGtleXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSAoYmFzZWNvaW4gYXMgYW55KS5nZXRCdWlsZGVyKCk7XG4gICAgICAgIGNvbnN0IGJsb2NraGFzaCA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5ibG9ja2hhc2g7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKGJsb2NraGFzaCk7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIobXBjVjJXYWxsZXRBZGRyZXNzKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5jbG9zZUF0YUFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hc3NvY2lhdGVkVG9rZW5BY2NvdW50UmVudCgnMjAzOTI4MCcpO1xuICAgICAgICBjb25zdCBhZGRTaWduYXR1cmVTcHkgPSBtcGNWMlNhbmRCb3guc3B5KHR4QnVpbGRlciwgJ2FkZFNpZ25hdHVyZScpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25BbmRHZW5lcmF0ZUJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbihcbiAgICAgICAgICBjbG9zZUF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgIHR4QnVpbGRlcixcbiAgICAgICAgICBtcGNWMldhbGxldEFkZHJlc3MsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC5zY2FuSW5kZXgsIDApO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0Lm5vdENhbGxlZChnZXRUU1NTaWduYXR1cmVTcHkpO1xuICAgICAgICBtcGNWMlNhbmRCb3guYXNzZXJ0LmNhbGxlZE9uY2UoYWRkU2lnbmF0dXJlU3B5KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGFkZFNpZ25hdHVyZVNweS5maXJzdENhbGwuYXJnc1swXS5wdWIsIG1wY1YyV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZWNvdmVyTmVzdGVkQXRhJywgKCkgPT4ge1xuICAgICAgbGV0IG5lc3RlZEF0YU1wY1YyUGFyYW1zOiBTb2xSZWNvdmVyeU9wdGlvbnM7XG5cbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5lc3RlZEF0YU1wY1YyUGFyYW1zID0ge1xuICAgICAgICAgIHVzZXJLZXk6IG1wY1YyVXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICAgIGJpdGdvS2V5OiBtcGNWMkNvbW1vbktleUNoYWluLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5kZXN0aW5hdGlvblB1YktleSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5rZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBtcGNWMlNhbmRCb3guc3R1YihTb2wucHJvdG90eXBlLCAnYnJvYWRjYXN0VHJhbnNhY3Rpb24nIGFzIGtleW9mIFNvbCkucmVzb2x2ZXMoe1xuICAgICAgICAgIHR4SWQ6IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlY292ZXIgbmVzdGVkIEFUQSB3aXRoIE1QQ3YyIGtleWNhcmQgdXNpbmcgTVBTLWRlcml2ZWQgd2FsbGV0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGdldFRTU1NpZ25hdHVyZVNweSA9IG1wY1YyU2FuZEJveC5zcHkoRUREU0FNZXRob2RzLCAnZ2V0VFNTU2lnbmF0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlck5lc3RlZEF0YShuZXN0ZWRBdGFNcGNWMlBhcmFtcyk7XG5cbiAgICAgICAgcmVzdWx0LnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdC50eElkLCB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZS5ib2R5LnJlc3VsdCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChcbiAgICAgICAgICBjYWxsQmFjay5nZXRDYWxscygpLmZpbmQoKGNhbGwpID0+IGNhbGwuYXJnc1swXT8ucGF5bG9hZD8ubWV0aG9kID09PSAnZ2V0TGF0ZXN0QmxvY2toYXNoJykgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIG1wY1YyU2FuZEJveC5hc3NlcnQubm90Q2FsbGVkKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWNvdmVyIG5lc3RlZCBBVEEgd2l0aCBNUEN2MSBrZXljYXJkIHVzaW5nIE1QQy5kZXJpdmVVbmhhcmRlbmVkIChyZWdyZXNzaW9uKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZ2V0VFNTU2lnbmF0dXJlU3B5ID0gbXBjVjJTYW5kQm94LnNweShFRERTQU1ldGhvZHMsICdnZXRUU1NTaWduYXR1cmUnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMudXNlcktleSxcbiAgICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLmNsb3NlQVRBa2V5cy5iaXRnb0tleSxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5jbG9zZUFUQWtleXMuZGVzdGluYXRpb25QdWJLZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuY2xvc2VBVEFrZXlzLndhbGxldFBhc3N3b3JkLFxuICAgICAgICAgIG5lc3RlZEF0YUFkZHJlc3M6ICdGR3VaU0JodHJlcVNVc0U4Nnhva3lqS3oyaThWQnRKenk2dU1YWEt5R0h1ZycsXG4gICAgICAgICAgb3duZXJBdGFBZGRyZXNzOiAnWmZtOThacFZhZnlkaEZUWWNzWTZiSGd1YmhCNGNGZ1dGdmJkRUp4WWhUQScsXG4gICAgICAgICAgdG9rZW5NaW50QWRkcmVzczogJ1pCQ05wdUQ3WU1YelRIQjJmaEdrR2k3OE1Oc0hHTFJYVWhSZXdOUm05UlUnLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXN1bHQuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzdWx0LnR4SWQsIHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlLmJvZHkucmVzdWx0KTtcbiAgICAgICAgbXBjVjJTYW5kQm94LmFzc2VydC5jYWxsZWRPbmNlKGdldFRTU1NpZ25hdHVyZVNweSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIE1QQ3YyIHJlY292ZXJOZXN0ZWRBdGEgYml0Z29LZXkgZG9lcyBub3QgbWF0Y2gga2V5Y2FyZCBjb21tb25LZXlDaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7IC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLCBiaXRnb0tleTogbWlzbWF0Y2hlZEJpdGdvS2V5IH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0VkRFNBIE1QQ3YyIHJlY292ZXJ5OiBjb21tb25LZXlDaGFpbiBmcm9tIGtleWNhcmQgZG9lcyBub3QgbWF0Y2ggYml0Z29LZXknKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gbmVzdGVkQXRhQWRkcmVzcyBpcyBtaXNzaW5nIGZvciByZWNvdmVyTmVzdGVkQXRhIE1QQ3YyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAgIC5yZWNvdmVyTmVzdGVkQXRhKHtcbiAgICAgICAgICAgIC4uLm5lc3RlZEF0YU1wY1YyUGFyYW1zLFxuICAgICAgICAgICAgbmVzdGVkQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgbmVzdGVkQXRhQWRkcmVzcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBvd25lckF0YUFkZHJlc3MgaXMgbWlzc2luZyBmb3IgcmVjb3Zlck5lc3RlZEF0YSBNUEN2MicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgICAucmVjb3Zlck5lc3RlZEF0YSh7XG4gICAgICAgICAgICAuLi5uZXN0ZWRBdGFNcGNWMlBhcmFtcyxcbiAgICAgICAgICAgIG93bmVyQXRhQWRkcmVzczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ2ludmFsaWQgb3duZXJBdGFBZGRyZXNzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0J1aWxkIENvbnNvbGlkYXRpb24gUmVjb3ZlcmllczonLCAoKSA9PiB7XG4gICAgY29uc3Qgc2FuZEJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICBjb25zdCBjb2luID0gY29pbnMuZ2V0KCd0c29sJyk7XG4gICAgY29uc3QgdXNkdE1pbnRBZGRyZXNzID0gJzljZ3BCZU5aMkhuTGRhN05XYWFVMWkzTnlUc3RrMmM0ekNNVWNvQUdzaTlDJztcbiAgICBjb25zdCBkdXJhYmxlTm9uY2VzID0ge1xuICAgICAgcHVibGljS2V5czogW1xuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSxcbiAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkyLFxuICAgICAgICB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleTMsXG4gICAgICBdLFxuICAgICAgc2VjcmV0S2V5OiB0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVByaXZLZXksXG4gICAgfTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbEJhY2sgPSBzYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21taXRtZW50OiAnZmluYWxpemVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRCbG9ja2hhc2hSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNpbm9uLm1hdGNoLnN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEZlZXNGb3JNZXNzYWdlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczFdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzM10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QmFsYW5jZScsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3M1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRNaW5pbXVtQmFsYW5jZUZvclJlbnRFeGVtcHRpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbMTY1XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZTIpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2pzb25QYXJzZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczMsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzNSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnanNvblBhcnNlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHNpZ25lZCBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMSxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiA0LFxuICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1R4cztcbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVzLmxhc3RTY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDMpO1xuXG4gICAgICBjb25zdCB0eG4xID0gcmVzLnRyYW5zYWN0aW9uc1swXTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMS5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjEgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMSA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMS50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UxID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UuYm9keS5yZXN1bHQudmFsdWUuZGF0YS5wYXJzZWQuaW5mby5ibG9ja2hhc2g7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubm9uY2UsIG5vbmNlMSk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEuZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS5kdXJhYmxlTm9uY2VTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgdHhuMiA9IHJlcy50cmFuc2FjdGlvbnNbMV07XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIuZnJvbVJhd1RyYW5zYWN0aW9uKCh0eG4yIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbjIgPSBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMiA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMi5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5ub25jZSwgbm9uY2UyKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMyk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjIubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLmR1cmFibGVOb25jZVNpZ25hdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB1bnNpZ25lZCBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDQsXG4gICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgY29uc3QgdHhuMSA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMS5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW4nKTtcbiAgICAgIHR4bjEuY29pbj8uc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICAgIHR4bjEuZGVyaXZhdGlvblBhdGg/LnNob3VsZC5lcXVhbCgnbS8yJyk7XG5cbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIGNvbnN0IGNvaW5TcGVjaWZpYzEgPSB0eG4xLmNvaW5TcGVjaWZpYztcbiAgICAgIGNvaW5TcGVjaWZpYzE/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29tbW9uS2V5Y2hhaW4nKTtcblxuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxID0gbmV3IFRyYW5zYWN0aW9uKGNvaW4pO1xuICAgICAgbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLmZyb21SYXdUcmFuc2FjdGlvbigodHhuMSBhcyBNUENUeCkuc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkpzb24xID0gbGF0ZXN0QmxvY2toYXNoVHhuRGVzZXJpYWxpemUxLnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBub25jZTEgPSB0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZS5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5ub25jZSwgbm9uY2UxKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMS5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMik7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcblxuICAgICAgY29uc3QgdHhuMiA9IHJlcy50eFJlcXVlc3RzWzFdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NpZ25hYmxlSGV4Jyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG4gICAgICAodHhuMi5zY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDMpO1xuICAgICAgdHhuMi5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvaW4nKTtcbiAgICAgIHR4bjIuY29pbj8uc2hvdWxkLmVxdWFsKCd0c29sJyk7XG4gICAgICB0eG4yLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnZGVyaXZhdGlvblBhdGgnKTtcbiAgICAgIHR4bjIuZGVyaXZhdGlvblBhdGg/LnNob3VsZC5lcXVhbCgnbS8zJyk7XG5cbiAgICAgIHR4bjIuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luU3BlY2lmaWMnKTtcbiAgICAgIGNvbnN0IGNvaW5TcGVjaWZpYzIgPSB0eG4yLmNvaW5TcGVjaWZpYztcbiAgICAgIGNvaW5TcGVjaWZpYzI/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29tbW9uS2V5Y2hhaW4nKTtcbiAgICAgIGNvaW5TcGVjaWZpYzI/LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnbGFzdFNjYW5JbmRleCcpO1xuICAgICAgY29pblNwZWNpZmljMj8ubGFzdFNjYW5JbmRleD8uc2hvdWxkLmVxdWFsKDMpO1xuXG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIgPSBuZXcgVHJhbnNhY3Rpb24oY29pbik7XG4gICAgICBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIuZnJvbVJhd1RyYW5zYWN0aW9uKCh0eG4yIGFzIE1QQ1R4KS5zZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgbGF0ZXN0QmxvY2toYXNoVHhuSnNvbjIgPSBsYXRlc3RCbG9ja2hhc2hUeG5EZXNlcmlhbGl6ZTIudG9Kc29uKCk7XG5cbiAgICAgIGNvbnN0IG5vbmNlMiA9IHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlMi5ib2R5LnJlc3VsdC52YWx1ZS5kYXRhLnBhcnNlZC5pbmZvLmJsb2NraGFzaDtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5ub25jZSwgbm9uY2UyKTtcbiAgICAgIHNob3VsZC5lcXVhbChsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMi5mZWVQYXllciwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzMyk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjIubnVtU2lnbmF0dXJlcywgdGVzdERhdGEuU29sSW5wdXREYXRhLnVuc2lnbmVkU3dlZXBTaWduYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdW5zaWduZWQgdG9rZW4gY29uc29saWRhdGlvbiByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gKGF3YWl0IGJhc2Vjb2luLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJpdGdvS2V5LFxuICAgICAgICBzdGFydGluZ1NjYW5JbmRleDogMyxcbiAgICAgICAgZW5kaW5nU2NhbkluZGV4OiA1LFxuICAgICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogdXNkdE1pbnRBZGRyZXNzLFxuICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgfSkpIGFzIE1QQ1N3ZWVwVHhzO1xuICAgICAgcmVzLnNob3VsZC5ub3QuYmUuZW1wdHkoKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgIGNvbnN0IHR4bjEgPSByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdzaWduYWJsZUhleCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuICAgICAgKHR4bjEuc2NhbkluZGV4ID8/IDApLnNob3VsZC5lcXVhbCg0KTtcbiAgICAgIHR4bjEuc2hvdWxkLmhhc093blByb3BlcnR5KCdjb2luJyk7XG4gICAgICB0eG4xLmNvaW4/LnNob3VsZC5lcXVhbCgndHNvbCcpO1xuICAgICAgdHhuMS5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2Rlcml2YXRpb25QYXRoJyk7XG4gICAgICB0eG4xLmRlcml2YXRpb25QYXRoPy5zaG91bGQuZXF1YWwoJ20vNCcpO1xuXG4gICAgICB0eG4xLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnY29pblNwZWNpZmljJyk7XG4gICAgICBjb25zdCBjb2luU3BlY2lmaWMxID0gdHhuMS5jb2luU3BlY2lmaWM7XG4gICAgICBjb2luU3BlY2lmaWMxPy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ2NvbW1vbktleWNoYWluJyk7XG5cbiAgICAgIGNvbnN0IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMSA9IG5ldyBUcmFuc2FjdGlvbihjb2luKTtcbiAgICAgIGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMS5mcm9tUmF3VHJhbnNhY3Rpb24oKHR4bjEgYXMgTVBDVHgpLnNlcmlhbGl6ZWRUeCk7XG4gICAgICBjb25zdCBsYXRlc3RCbG9ja2hhc2hUeG5Kc29uMSA9IGxhdGVzdEJsb2NraGFzaFR4bkRlc2VyaWFsaXplMS50b0pzb24oKTtcblxuICAgICAgY29uc3Qgbm9uY2UxID0gdGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UuYm9keS5yZXN1bHQudmFsdWUuZGF0YS5wYXJzZWQuaW5mby5ibG9ja2hhc2g7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEubm9uY2UsIG5vbmNlMSk7XG4gICAgICBzaG91bGQuZXF1YWwobGF0ZXN0QmxvY2toYXNoVHhuSnNvbjEuZmVlUGF5ZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczUpO1xuICAgICAgc2hvdWxkLmVxdWFsKGxhdGVzdEJsb2NraGFzaFR4bkpzb24xLm51bVNpZ25hdHVyZXMsIHRlc3REYXRhLlNvbElucHV0RGF0YS51bnNpZ25lZFN3ZWVwU2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNraXAgYnVpbGRpbmcgY29uc29saWRhdGUgdHJhbnNhY3Rpb24gaWYgYmFsYW5jZSBpcyBlcXVhbCB0byB6ZXJvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICAgIGVuZGluZ1NjYW5JbmRleDogMixcbiAgICAgICAgICBkdXJhYmxlTm9uY2VzOiBkdXJhYmxlTm9uY2VzLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIHN0YXJ0aW5nU2NhbkluZGV4IGlzIG5vdCBnZSB0byAxJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IC0xLFxuICAgICAgICAgIGR1cmFibGVOb25jZXM6IGR1cmFibGVOb25jZXMsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdJbnZhbGlkIHN0YXJ0aW5nIG9yIGVuZGluZyBpbmRleCB0byBzY2FuIGZvciBhZGRyZXNzZXMuIHN0YXJ0aW5nU2NhbkluZGV4OiAtMSwgZW5kaW5nU2NhbkluZGV4OiAxOS4nXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIHNjYW4gZmFjdG9yIGlzIHRvbyBoaWdoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXJDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICAgIGJhY2t1cEtleTogdGVzdERhdGEud3J3VXNlci5iYWNrdXBLZXksXG4gICAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgICAgZW5kaW5nU2NhbkluZGV4OiAzMDAsXG4gICAgICAgICAgZHVyYWJsZU5vbmNlczogZHVyYWJsZU5vbmNlcyxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ0ludmFsaWQgc3RhcnRpbmcgb3IgZW5kaW5nIGluZGV4IHRvIHNjYW4gZm9yIGFkZHJlc3Nlcy4gc3RhcnRpbmdTY2FuSW5kZXg6IDEsIGVuZGluZ1NjYW5JbmRleDogMzAwLidcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0J1aWxkIENvbnNvbGlkYXRpb24gUmVjb3ZlcmllcyAoTVBDdjIpOicsICgpID0+IHtcbiAgICBjb25zdCBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IHVzZHRNaW50QWRkcmVzcyA9ICc5Y2dwQmVOWjJIbkxkYTdOV2FhVTFpM055VHN0azJjNHpDTVVjb0FHc2k5Qyc7XG4gICAgY29uc3QgZHVyYWJsZU5vbmNlcyA9IHtcbiAgICAgIHB1YmxpY0tleXM6IFtcbiAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksXG4gICAgICAgIHRlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MixcbiAgICAgICAgdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXkzLFxuICAgICAgXSxcbiAgICAgIHNlY3JldEtleTogdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQcml2S2V5LFxuICAgIH07XG5cbiAgICBsZXQgY2FsbEJhY2s6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgbXBjVjJVc2VyS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQmFja3VwS2V5OiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJBZGRyZXNzMTogc3RyaW5nO1xuICAgIGxldCBtcGNWMkFkZHJlc3MyOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyQWRkcmVzczM6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlblVzZXJLZXk6IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhY2t1cEtleTogc3RyaW5nO1xuICAgIGxldCBtcGNWMlRva2VuQ29tbW9uS2V5Q2hhaW46IHN0cmluZztcbiAgICBsZXQgbXBjVjJUb2tlbkJhc2VBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IG1wY1YyVG9rZW5BZGRyZXNzMTogc3RyaW5nO1xuICAgIGxldCB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICAgIGNvbnN0IFt0b2tlblVzZXJEa2csIHRva2VuQmFja3VwRGtnXSA9IGF3YWl0IE1QU1V0aWwuZ2VuZXJhdGVFZERzYURLR0tleVNoYXJlcygpO1xuICAgICAgd2FsbGV0UGFzc3BocmFzZSA9IHRlc3REYXRhLmtleXMud2FsbGV0UGFzc3dvcmQ7XG5cbiAgICAgIG1wY1YyVXNlcktleSA9IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJCYWNrdXBLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJDb21tb25LZXlDaGFpbiA9IHVzZXJEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIGNvbnN0IG1wYyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG5cbiAgICAgIG1wY1YyQWRkcmVzczEgPSBuZXcgS2V5UGFpcih7IHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJDb21tb25LZXlDaGFpbiwgJ20vMScpLnNsaWNlKDAsIDY0KSB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBtcGNWMkFkZHJlc3MyID0gbmV3IEtleVBhaXIoeyBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzInKS5zbGljZSgwLCA2NCkgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbXBjVjJBZGRyZXNzMyA9IG5ldyBLZXlQYWlyKHsgcHViOiBtcGMuZGVyaXZlVW5oYXJkZW5lZChtcGNWMkNvbW1vbktleUNoYWluLCAnbS8zJykuc2xpY2UoMCwgNjQpIH0pLmdldEFkZHJlc3MoKTtcblxuICAgICAgbXBjVjJUb2tlblVzZXJLZXkgPSBlbmNyeXB0KHdhbGxldFBhc3NwaHJhc2UsIHRva2VuVXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgbXBjVjJUb2tlbkJhY2t1cEtleSA9IGVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgdG9rZW5CYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgIG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiA9IHRva2VuVXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuXG4gICAgICBtcGNWMlRva2VuQmFzZUFkZHJlc3MgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogbXBjLmRlcml2ZVVuaGFyZGVuZWQobXBjVjJUb2tlbkNvbW1vbktleUNoYWluLCAnbS8wJykuc2xpY2UoMCwgNjQpLFxuICAgICAgfSkuZ2V0QWRkcmVzcygpO1xuICAgICAgbXBjVjJUb2tlbkFkZHJlc3MxID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IG1wYy5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbiwgJ20vMScpLnNsaWNlKDAsIDY0KSxcbiAgICAgIH0pLmdldEFkZHJlc3MoKTtcbiAgICB9KTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY2FsbEJhY2sgPSBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LnN0dWIoU29sLnByb3RvdHlwZSwgJ2dldERhdGFGcm9tTm9kZScgYXMga2V5b2YgU29sKTtcblxuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRMYXRlc3RCbG9ja2hhc2gnLCBwYXJhbXM6IFt7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QmxvY2toYXNoUmVzcG9uc2UpO1xuXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEZlZUZvck1lc3NhZ2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbc2lub24ubWF0Y2guc3RyaW5nLCB7IGNvbW1pdG1lbnQ6ICdmaW5hbGl6ZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0RmVlc0Zvck1lc3NhZ2VSZXNwb25zZSk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0TWluaW11bUJhbGFuY2VGb3JSZW50RXhlbXB0aW9uJywgcGFyYW1zOiBbMTY1XSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldE1pbmltdW1CYWxhbmNlRm9yUmVudEV4ZW1wdGlvblJlc3BvbnNlKTtcblxuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5zdHViKFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgJ3RvQnJvYWRjYXN0Rm9ybWF0JykucmV0dXJucygnc3R1Yi1zZXJpYWxpemVkLXR4Jyk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIE1QQ3YyIHNpZ25lZCBuYXRpdmUgU09MIGNvbnNvbGlkYXRpb24gcmVjb3ZlcmllcyBhY3Jvc3MgMisgZnVuZGVkIGluZGV4ZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTcHkgb24gdGhlIHByaXZhdGUgZGV0ZWN0aW9uIGhlbHBlciDigJQgbXVzdCBiZSBjYWxsZWQgb25jZSBhdCB0b3AsIG5vdCBwZXItaXRlcmF0aW9uXG4gICAgICBjb25zdCBpc01wY3YyU3B5ID0gbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5zcHkoU29sLnByb3RvdHlwZSwgJ2lzTXBjdjJTaWduaW5nTWF0ZXJpYWwnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMkFkZHJlc3MxXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZU5vRnVuZHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyQWRkcmVzczJdIH0gfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFttcGNWMkFkZHJlc3MzXSB9IH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBtcGNWMkFkZHJlc3MyLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0VG9rZW5BY2NvdW50c0J5T3duZXInLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIG1wY1YyQWRkcmVzczMsXG4gICAgICAgICAgICAgIHsgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScgfSxcbiAgICAgICAgICAgICAgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0VG9rZW5BY2NvdW50c0J5T3duZXJSZXNwb25zZU5vQWNjb3VudHMpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRBY2NvdW50SW5mbycsXG4gICAgICAgICAgICBwYXJhbXM6IFt0ZXN0RGF0YS5rZXlzLmR1cmFibGVOb25jZVB1YktleSwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5MiwgeyBlbmNvZGluZzogJ2pzb25QYXJzZWQnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEluZm9SZXNwb25zZTIpO1xuXG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogNCxcbiAgICAgICAgZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pKSBhcyBNUENUeHM7XG5cbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAocmVzLmxhc3RTY2FuSW5kZXggPz8gMCkuc2hvdWxkLmVxdWFsKDMpO1xuXG4gICAgICBjb25zdCB0eG4xID0gcmVzLnRyYW5zYWN0aW9uc1swXSBhcyBNUENUeDtcbiAgICAgIHR4bjEuc2VyaWFsaXplZFR4LnNob3VsZC5lcXVhbCgnc3R1Yi1zZXJpYWxpemVkLXR4Jyk7XG5cbiAgICAgIC8vIGlzTXBjdjJTaWduaW5nTWF0ZXJpYWwgbXVzdCBOT1QgYmUgY2FsbGVkIGF0IGFsbCDigJQgcmVjb3ZlckNvbnNvbGlkYXRpb25zIGRldGVjdHMgZGlyZWN0bHlcbiAgICAgIC8vIGFuZCB0aHJlYWRzIG11bHRpc2lnVHlwZVZlcnNpb249J01QQ3YyJyBzbyByZWNvdmVyKCkgc2tpcHMgZGV0ZWN0aW9uIGVudGlyZWx5XG4gICAgICBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoaXNNcGN2MlNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNhbGwgaXNNcGN2MlNpZ25pbmdNYXRlcmlhbCBleGFjdGx5IHplcm8gdGltZXMgaW4gcmVjb3ZlcigpIHdoZW4gbXVsdGlzaWdUeXBlVmVyc2lvbiBpcyBwcmUtcmVzb2x2ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBpc01wY3YyU2lnbmluZ01hdGVyaWFsIG11c3Qgbm90IGJlIGNhbGxlZCBpbnNpZGUgcmVjb3ZlcigpIHdoZW4gcmVjb3ZlckNvbnNvbGlkYXRpb25zXG4gICAgICAvLyBwcmUtcmVzb2x2ZXMgdGhlIHJvdXRlIGFuZCBwYXNzZXMgbXVsdGlzaWdUeXBlVmVyc2lvbj0nTVBDdjInXG4gICAgICBjb25zdCBpc01wY3YyU3B5ID0gbXBjVjJDb25zb2xpZGF0aW9uU2FuZEJveC5zcHkoU29sLnByb3RvdHlwZSwgJ2lzTXBjdjJTaWduaW5nTWF0ZXJpYWwnIGFzIGtleW9mIFNvbCk7XG5cbiAgICAgIC8vIGFkZHJlc3NlcyAx4oCTNCBhbGwgaGF2ZSBubyBmdW5kcyDigJQgc2NhbiByYW5nZSBpcyA1IGluZGV4ZXMgd2lkZVxuICAgICAgZm9yIChjb25zdCBhZGRyIG9mIFttcGNWMkFkZHJlc3MxLCBtcGNWMkFkZHJlc3MyLCBtcGNWMkFkZHJlc3MzXSkge1xuICAgICAgICBjYWxsQmFja1xuICAgICAgICAgIC53aXRoQXJncyh7IHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFthZGRyXSB9IH0pXG4gICAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50QmFsYW5jZVJlc3BvbnNlTm9GdW5kcyk7XG4gICAgICB9XG4gICAgICBjb25zdCBtcGNWMkFkZHJlc3M0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IChhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpKS5kZXJpdmVVbmhhcmRlbmVkKG1wY1YyQ29tbW9uS2V5Q2hhaW4sICdtLzQnKS5zbGljZSgwLCA2NCksXG4gICAgICB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3MoeyBwYXlsb2FkOiB7IGlkOiAnMScsIGpzb25ycGM6ICcyLjAnLCBtZXRob2Q6ICdnZXRCYWxhbmNlJywgcGFyYW1zOiBbbXBjVjJBZGRyZXNzNF0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJBZGRyZXNzNCxcbiAgICAgICAgICAgICAgeyBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyB9LFxuICAgICAgICAgICAgICB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRUb2tlbkFjY291bnRzQnlPd25lclJlc3BvbnNlTm9BY2NvdW50cyk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldEFjY291bnRJbmZvJyxcbiAgICAgICAgICAgIHBhcmFtczogW3Rlc3REYXRhLmtleXMuZHVyYWJsZU5vbmNlUHViS2V5LCB7IGVuY29kaW5nOiAnanNvblBhcnNlZCcgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5nZXRBY2NvdW50SW5mb1Jlc3BvbnNlKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogbXBjVjJVc2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IG1wY1YyQmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogbXBjVjJDb21tb25LZXlDaGFpbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogNSxcbiAgICAgICAgZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyByZWNvdmVyKCkgbXVzdCBub3QgY2FsbCBpc01wY3YyU2lnbmluZ01hdGVyaWFsIOKAlCBtdWx0aXNpZ1R5cGVWZXJzaW9uIHNob3J0LWNpcmN1aXRzIGl0XG4gICAgICBtcGNWMkNvbnNvbGlkYXRpb25TYW5kQm94LmFzc2VydC5ub3RDYWxsZWQoaXNNcGN2MlNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIE1QQ3YyIHNpZ25lZCBTUEwgdG9rZW4gY29uc29saWRhdGlvbiByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHsgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW21wY1YyVG9rZW5BZGRyZXNzMV0gfSB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJUb2tlbkFkZHJlc3MxLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2UpO1xuICAgICAgY2FsbEJhY2tcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdnZXRUb2tlbkFjY291bnRzQnlPd25lcicsXG4gICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgbXBjVjJUb2tlbkJhc2VBZGRyZXNzLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgdXNlcktleTogbXBjVjJUb2tlblVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogbXBjVjJUb2tlbkJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IG1wY1YyVG9rZW5Db21tb25LZXlDaGFpbixcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgc3RhcnRpbmdTY2FuSW5kZXg6IDEsXG4gICAgICAgIGVuZGluZ1NjYW5JbmRleDogMixcbiAgICAgICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHVzZHRNaW50QWRkcmVzcyxcbiAgICAgICAgZHVyYWJsZU5vbmNlcyxcbiAgICAgIH0pKSBhcyBNUENUeHM7XG5cbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBjb25zdCB0eG4gPSByZXMudHJhbnNhY3Rpb25zWzBdIGFzIE1QQ1R4O1xuICAgICAgdHhuLnNlcmlhbGl6ZWRUeC5zaG91bGQuZXF1YWwoJ3N0dWItc2VyaWFsaXplZC10eCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgbGVnYWN5IGRlcml2YXRpb24gZm9yIE1QQ3YyIHVuc2lnbmVkIChubyBwYXNzcGhyYXNlKSBjb25zb2xpZGF0aW9uIOKAlCBjb2xkIHBhdGggdW5jaGFuZ2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2l0aG91dCB3YWxsZXRQYXNzcGhyYXNlLCBpc01wY1YyIG11c3QgYmUgZmFsc2UsIGJhc2UgYWRkcmVzcyB1c2VzIE1QQy5kZXJpdmVVbmhhcmRlbmVkXG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHsgaWQ6ICcxJywganNvbnJwYzogJzIuMCcsIG1ldGhvZDogJ2dldEJhbGFuY2UnLCBwYXJhbXM6IFt0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MxXSB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRCYWxhbmNlUmVzcG9uc2VOb0Z1bmRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDogeyBpZDogJzEnLCBqc29ucnBjOiAnMi4wJywgbWV0aG9kOiAnZ2V0QmFsYW5jZScsIHBhcmFtczogW3Rlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzczJdIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuZ2V0QWNjb3VudEJhbGFuY2VSZXNwb25zZSk7XG4gICAgICBjYWxsQmFja1xuICAgICAgICAud2l0aEFyZ3Moe1xuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ2dldFRva2VuQWNjb3VudHNCeU93bmVyJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MyLFxuICAgICAgICAgICAgICB7IHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnIH0sXG4gICAgICAgICAgICAgIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldFRva2VuQWNjb3VudHNCeU93bmVyUmVzcG9uc2VOb0FjY291bnRzKTtcbiAgICAgIGNhbGxCYWNrXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnZ2V0QWNjb3VudEluZm8nLFxuICAgICAgICAgICAgcGFyYW1zOiBbdGVzdERhdGEua2V5cy5kdXJhYmxlTm9uY2VQdWJLZXksIHsgZW5jb2Rpbmc6ICdqc29uUGFyc2VkJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucmVzb2x2ZXModGVzdERhdGEuU29sUmVzcG9uc2VzLmdldEFjY291bnRJbmZvUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCByZXMgPSAoYXdhaXQgYmFzZWNvaW4ucmVjb3ZlckNvbnNvbGlkYXRpb25zKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHN0YXJ0aW5nU2NhbkluZGV4OiAxLFxuICAgICAgICBlbmRpbmdTY2FuSW5kZXg6IDMsXG4gICAgICAgIGR1cmFibGVOb25jZXMsXG4gICAgICB9KSkgYXMgTVBDU3dlZXBUeHM7XG5cbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgY29uc3QgdHhuMSA9IHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgLy8gc291cmNlIGFkZHJlc3MgaXMgbGVnYWN5LWRlcml2ZWQgZnJvbSB3YWxsZXRBZGRyZXNzMlxuICAgICAgc2hvdWxkLmVxdWFsKHR4bjEuY29pblNwZWNpZmljPy5jb21tb25LZXljaGFpbiwgdGVzdERhdGEud3J3VXNlci5iaXRnb0tleS5yZXBsYWNlKC9cXHMvZywgJycpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Jyb2FkY2FzdFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgc2FuZEJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJyb2FkY2FzdCBhIHRyYW5zYWN0aW9uIHN1Y2Nlc2Z1bGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uID0gdGVzdERhdGEucmF3VHJhbnNhY3Rpb25zLnRyYW5zZmVyLnNpZ25lZDtcbiAgICAgIGNvbnN0IGJyb2FkY2FzdFN0dWIgPSBzYW5kQm94XG4gICAgICAgIC5zdHViKFNvbC5wcm90b3R5cGUsICdnZXREYXRhRnJvbU5vZGUnIGFzIGtleW9mIFNvbClcbiAgICAgICAgLndpdGhBcmdzKHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICBtZXRob2Q6ICdzZW5kVHJhbnNhY3Rpb24nLFxuICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgIHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiAnYmFzZTY0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnJlc29sdmVzKHRlc3REYXRhLlNvbFJlc3BvbnNlcy5icm9hZGNhc3RUcmFuc2FjdGlvblJlc3BvbnNlKTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0VHhuID0gYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICBhc3NlcnQub2soYnJvYWRjYXN0VHhuKTtcbiAgICAgIGFzc2VydC5vayhicm9hZGNhc3RUeG4udHhJZCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICAgIGJyb2FkY2FzdFR4bi50eElkLFxuICAgICAgICAnMmlkM1lDMmpLOUc1V28ycGhEeDRnSlZBZXc4RGNZNU5Bb2puVnVhbzhya3h3UFlQZThjU3dFNUd6aEVnSkEyeThmVmpERW82aVI2eWtCdkR4clRRcnRwYidcbiAgICAgICk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnJvYWRjYXN0U3R1Yi5jYWxsQ291bnQsIDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBnb3QgYW4gZXJyb3IgZnJvbSB0aGUgbm9kZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiA9IHRlc3REYXRhLnJhd1RyYW5zYWN0aW9ucy50cmFuc2Zlci5zaWduZWQ7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHViID0gc2FuZEJveFxuICAgICAgICAuc3R1YihTb2wucHJvdG90eXBlLCAnZ2V0RGF0YUZyb21Ob2RlJyBhcyBrZXlvZiBTb2wpXG4gICAgICAgIC53aXRoQXJncyh7XG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgbWV0aG9kOiAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogJ2Jhc2U2NCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXNvbHZlcyh0ZXN0RGF0YS5Tb2xSZXNwb25zZXMuYnJvYWRjYXN0VHJhbnNhY3Rpb25SZXNwb25zZUVycm9yKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCBiYXNlY29pbi5icm9hZGNhc3RUcmFuc2FjdGlvbih7IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbiB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBtZXNzYWdlOiAnRXJyb3IgYnJvYWRjYXN0aW5nIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiBzaW11bGF0aW9uIGZhaWxlZDogQmxvY2toYXNoIG5vdCBmb3VuZCcgfVxuICAgICAgKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChicm9hZGNhc3RTdHViLmNhbGxDb3VudCwgMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGlzIG5vdCBhIHZhbGlkIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uID0gJ3JhbmRvbXN0cmluZyc7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgbWVzc2FnZTogJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBpcyBub3QgYSBzaWduZWQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gPSB0ZXN0RGF0YS5yYXdUcmFuc2FjdGlvbnMudHJhbnNmZXIudW5zaWduZWQ7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4uYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgbWVzc2FnZTogJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyB9XG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQXVkaXRLZXknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBrZXk6IGtleVN0cmluZywgY29tbW9uS2V5Y2hhaW4gfSA9IHNvbEJhY2t1cEtleTtcbiAgICBjb25zdCBrZXkgPSBrZXlTdHJpbmcucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2tBbVtFRlE2bz1TeGxjTEZEdyUsJztcbiAgICBjb25zdCBtdWx0aVNpZ1R5cGUgPSAndHNzJztcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZvciB2YWxpZCBpbnB1dHMnLCAoKSA9PiB7XG4gICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBrZXksXG4gICAgICAgIHB1YmxpY0tleTogY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIG11bHRpU2lnVHlwZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiB0aGUgY29tbW9uS2V5Y2hhaW4gaXMgaW52YWxpZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGFsdGVyZWRDb21tb25LZXljaGFpbiA9IGdlbmVyYXRlUmFuZG9tUGFzc3dvcmQoMTApO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgcHVibGljS2V5OiBhbHRlcmVkQ29tbW9uS2V5Y2hhaW4sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgICAgbXVsdGlTaWdUeXBlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgY29tbW9uIGtleWNoYWluJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgdGhlIHdhbGxldFBhc3NwaHJhc2UgaXMgaW5jb3JyZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5jb3JyZWN0UGFzc3BocmFzZSA9ICdmb28nO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgcHVibGljS2V5OiBjb21tb25LZXljaGFpbixcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IGluY29ycmVjdFBhc3NwaHJhc2UsXG4gICAgICAgICAgICBtdWx0aVNpZ1R5cGUsXG4gICAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiBcImZhaWxlZCB0byBkZWNyeXB0IHBydjogcGFzc3dvcmQgZXJyb3IgLSBjY206IHRhZyBkb2Vzbid0IG1hdGNoXCIsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIHRoZSBrZXkgaXMgYWx0ZXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGFsdGVyZWRLZXkgPSBrZXkucmVwbGFjZSgvWzAtOV0vZywgJzAnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgICAgICBlbmNyeXB0ZWRQcnY6IGFsdGVyZWRLZXksXG4gICAgICAgICAgICBwdWJsaWNLZXk6IGNvbW1vbktleWNoYWluLFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICAgIG11bHRpU2lnVHlwZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICdmYWlsZWQgdG8gZGVjcnlwdCBwcnY6IGpzb24gZGVjcnlwdDogaW52YWxpZCBwYXJhbWV0ZXJzJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTZXQgdXAgd2FsbGV0IGRhdGFcbiAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhMDAwMDAwMDAnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIGtleXM6IFtcbiAgICAgICAgICAnNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnLFxuICAgICAgICAgICc1YjM0MjRmOTFiZjM0OTkzMGUzNDAxNzYwMDAwMDAwMCcsXG4gICAgICAgICAgJzViMzQyNGY5MWJmMzQ5OTMwZTM0MDE3NzAwMDAwMDAwJyxcbiAgICAgICAgXSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7XG4gICAgICAgICAgcm9vdEFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgIH0sXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmFrZVBydiA9IGVuY3J5cHQoJ3Bhc3N3b3JkJywgJ3BydicpO1xuXG4gICAgICBjb25zdCB3YWxsZXRPYmogPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbJ21vY2snXS51cmk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5nZXQoJy9hcGkvdjIvdHNvbC9rZXkvNWIzNDI0ZjkxYmYzNDk5MzBlMzQwMTc1MDAwMDAwMDAnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBmYWtlUHJ2LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuXG4gICAgICAvLyBNb2NrIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25zXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdCgnL2FwaS92Mi90c29sL3dhbGxldC81YjM0MjUyZjFiZjM0OTkzMGUzNDAyMGEwMDAwMDAwMC9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGQnKVxuICAgICAgICAucmVwbHkoMjAwLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICAgICAgd2FsbGV0SWQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmZkNGIwZmE2ZCcsXG4gICAgICAgICAgICB0eEhleDpcbiAgICAgICAgICAgICAgJzAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ZjUwMTMwYWJmOGQwZDg5NDNjNWI5YTUxYTU3NDg4NmE3ZDdiM2Q4ZGIxOGYwZGRiNGFiOGI2ZDNlYzI3ZTNjMmYzNmYzMzM5YmI5MmQ0Mjk2YWY2YWU0ZDNhYmZiYjA3ODc3Zjc3ZDAwMzNjODgzZGUwOGZhNGEyZWVhNjcwZDAyMDEwMjA2NzRhOWRmMmI5NGFhNGI0YWRhMTIwMmRjMjg5MWJlMzY2NTAxZDBhY2I0YTAxY2EzZTAyZTdmZDZjMWY1MDVhNzFjOTYxNzIwNDRmMTIxN2MzNzg0ZThmMDJmNDllMmM4ZmMzNTkxZTgxMjk0YWI1NDM5NGY5ZDIyZmQ3YjdhOGY4NDAxYzNmNjdjZmE1MjUxOGIzNGEwOWIwOGY0ZWE3N2UxYzRmYjlkODliZmFjY2RjMzNjZjhiOGE5Y2Y4ZDdiZjBlMDRjODljNTA0MjhlNGVkYTVjYmI3NTk0MjdjMzcwZjBhMjlhNTBiYjBkMTQwN2U1NzkyNGIwY2M1YjM2ZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmE3ZDUxNzE5MmM1NjhlZTA4YTg0NWY3M2QyOTc4OGNmMDM1YzMxNDViMjFhYjM0NGQ4MDYyZWE5NDAwMDAwNDBjOTU2ODE5NWQ2N2ViNmIzOTZmZGJlOTdiYTJlMjc2NjIyZWYwMDIzYWYwOWYyM2U2ZTAyOTJhYmI2NzhkOTAyMDQwMzAzMDUwMTA0MDQwMDAwMDAwNDAyMDAwMjBjMDIwMDAwMDAwMTAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgICAgZmVlOiAxMDAwMCxcbiAgICAgICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgICAgICBtaW5lckZlZTogJzEwMDAwJyxcbiAgICAgICAgICAgICAgc3BlbmRBbW91bnQ6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgc3BlbmRBbW91bnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgICAgIGFtb3VudFN0cmluZzogJzE1NDc4NjQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHBheUdvRmVlOiAnMCcsXG4gICAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnOHJRWGVWRU1yS3Z0V0NFSmlyRU02Y0tZbmJadVRxVlRicVJQaU1NQUo4UjQnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgICAgICB3YWxsZXQ6ICc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmYnLFxuICAgICAgICAgICAgICAgICAgd2FsbGV0czogWyc2MzA2OGVkNGVmYTYzYTAwMDg3N2YwMmYnXSxcbiAgICAgICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MmQ3MWE2Yjg2MDY4ZjAwMDhmMDI5ZmQnLFxuICAgICAgICAgICAgICAgICAgZW50ZXJwcmlzZXM6IFsnNjJkNzFhNmI4NjA2OGYwMDA4ZjAyOWZkJ10sXG4gICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzE1NDc4NjQnLFxuICAgICAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgICAgIHdhbGxldFR5cGU6ICdob3QnLFxuICAgICAgICAgICAgICAgICAgd2FsbGV0VHlwZXM6IFsnaG90J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgICAgICBhZGRyZXNzOiAnQ21Zc04zZjhiY200QkRrRkpXTnN2WWdqUnhNVExINnZiSldOZllkbUg3R1UnLFxuICAgICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAxMDAwMCxcbiAgICAgICAgICAgICAgICAgIGFkZHJlc3M6ICdDbVlzTjNmOGJjbTRCRGtGSldOc3ZZZ2pSeE1UTEg2dmJKV05mWWRtSDdHVScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzEwMDAwJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB0eXBlOiAnU2VuZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uc29saWRhdGVJZDogJzY4YTdkNWQwYzY2ZTc0ZTIxNmI5NzE3M2JkNTU4YzZkJyxcbiAgICAgICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gdG8gdGVzdFxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCB3YWxsZXRPYmouc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAncGFzc3dvcmQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ3R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCBhZGRyZXNzJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHZhbGlkIGEgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UeCA9IHtcbiAgICAgICAgdHhSZXF1ZXN0SWQ6ICc0ZmRkMGNhZS0yNTYzLTQzYjEtYjVjZi05NDg2NTE1OGNhMTAnLFxuICAgICAgICB3YWxsZXRJZDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZmQ0YjBmYTZkJyxcbiAgICAgICAgdHhIZXg6XG4gICAgICAgICAgJzAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDEwMjA2YWVkYTI1M2EzMzFkZTQ4OTgzODI0NmRmOTM4Nzk0NDBhZjhjNjJhYzQ5Njc2NThlZGMyYmI1ZDUyYjk3NTlkOTFjOTYxNzIwNDRmMTIxN2MzNzg0ZThmMDJmNDllMmM4ZmMzNTkxZTgxMjk0YWI1NDM5NGY5ZDIyZmQ3YjdhOGY3NGE5ZGYyYjk0YWE0YjRhZGExMjAyZGMyODkxYmUzNjY1MDFkMGFjYjRhMDFjYTNlMDJlN2ZkNmMxZjUwNWE3ZDI3MzRmMzk1MmYzZWI0YWVmY2Y2YzdhNjA5MmU5NzlkZDNmZTU1NjNjY2ZhY2ExY2M5MjY1MmExNWRkZDM5MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmE3ZDUxNzE5MmM1NjhlZTA4YTg0NWY3M2QyOTc4OGNmMDM1YzMxNDViMjFhYjM0NGQ4MDYyZWE5NDAwMDAwNDI4ZGFkNDFiYmVkZWIzODAxODM3OWU0Y2VlYjdlODA3NTdkNzRkZDAwYWU4YzQ3YzM4ZDU5NzQ3NzMzOWFkODAyMDQwMzAzMDUwMTA0MDQwMDAwMDAwNDAyMDAwMjBjMDIwMDAwMDA1ODllMTcwMDAwMDAwMDAwJyxcbiAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgIGZlZTogMTAwMDAsXG4gICAgICAgICAgZmVlU3RyaW5nOiAnMTAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICB0eEluZm86IHtcbiAgICAgICAgICBtaW5lckZlZTogJzEwMDAwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudDogJzE1NDc4NjQnLFxuICAgICAgICAgIHNwZW5kQW1vdW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2luTmFtZTogJ3Rzb2wnLFxuICAgICAgICAgICAgICBhbW91bnRTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXlHb0ZlZTogJzAnLFxuICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzhyUVhlVkVNckt2dFdDRUppckVNNmNLWW5iWnVUcVZUYnFSUGlNTUFKOFI0JyxcbiAgICAgICAgICAgICAgdmFsdWU6IDE1NDc4NjQsXG4gICAgICAgICAgICAgIHdhbGxldDogJzYzMDY4ZWQ0ZWZhNjNhMDAwODc3ZjAyZicsXG4gICAgICAgICAgICAgIHdhbGxldHM6IFsnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmJ10sXG4gICAgICAgICAgICAgIGVudGVycHJpc2U6ICc2MmQ3MWE2Yjg2MDY4ZjAwMDhmMDI5ZmQnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlczogWyc2MmQ3MWE2Yjg2MDY4ZjAwMDhmMDI5ZmQnXSxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgICAgY29pbk5hbWU6ICd0c29sJyxcbiAgICAgICAgICAgICAgd2FsbGV0VHlwZTogJ2hvdCcsXG4gICAgICAgICAgICAgIHdhbGxldFR5cGVzOiBbJ2hvdCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogMTU0Nzg2NCxcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0NtWXNOM2Y4YmNtNEJEa0ZKV05zdllnalJ4TVRMSDZ2YkpXTmZZZG1IN0dVJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxNTQ3ODY0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAwMCxcbiAgICAgICAgICAgICAgYWRkcmVzczogJ0NtWXNOM2Y4YmNtNEJEa0ZKV05zdllnalJ4TVRMSDZ2YkpXTmZZZG1IN0dVJyxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdHlwZTogJ1NlbmQnLFxuICAgICAgICB9LFxuICAgICAgICBjb25zb2xpZGF0ZUlkOiAnNjhhN2Q1ZDBjNjZlNzRlMjE2Yjk3MTczYmQ1NThjNmQnLFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2NrZWRXYWxsZXQ6IFBhcnRpYWw8SVdhbGxldD4gPSB7XG4gICAgICAgIGNvaW5TcGVjaWZpYzogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNzID0ge1xuICAgICAgICAgICAgcm9vdEFkZHJlc3M6ICc4clFYZVZFTXJLdnRXQ0VKaXJFTTZjS1luYlp1VHFWVGJxUlBpTU1BSjhSNCcsXG4gICAgICAgICAgfSBhcyBXYWxsZXRDb2luU3BlY2lmaWM7XG4gICAgICAgICAgcmV0dXJuIGNzO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgYmxvY2toYXNoOiAnJyxcbiAgICAgICAgICAgIGZlZVBheWVyOiAnJyxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IGNvbnNvbGlkYXRpb25UeCBhcyB1bmtub3duIGFzIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gICAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgICAgIHdhbGxldDogbW9ja2VkV2FsbGV0IGFzIElXYWxsZXQsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvblRvQmFzZUFkZHJlc3M6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICApIHtcbiAgICAgICAgICBhc3NlcnQuZmFpbCgnVHJhbnNhY3Rpb24gc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYSB0b2tlbiBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzRmZGQwY2FlLTI1NjMtNDNiMS1iNWNmLTk0ODY1MTU4Y2ExMCcsXG4gICAgICAgIHdhbGxldElkOiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmZDRiMGZhNmQnLFxuICAgICAgICB0eEhleDpcbiAgICAgICAgICAnMDJiN2MyYzc4MjllZGVkNGU4Zjk0N2M5MGVkM2I5YWZjZTcxZjYxNmViNDdkZmNmYmY0Yjc2NTc3ODE0OTA2MDAxM2FjYjMzYjlmNjdmZGQ5YzI1MTJmNDhmYWM0ZTRjMDQ5ZWFiOTM4MjliNjk0MDRmM2JkMTY2ZmUzMjQyYzkwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMTA0MDk2ZGE2OTBiZDU1OGZkODYzNGFjMTRmMTY0NWQ4MDk1YWZkMGNhZWE1OTUzNTc4YzU5NmUzYzBkZWEzODMwNWVlNzI5OGJmYWM1NTEwMWYxNzc3MzU2NTlkNDJlZDZiZTg5MGVmM2ExZDIwNGQ5ZTMzZjMyZTI0YzU2MzUzMjdjYTY2ZDFmZTAwODI2ZTVhNGY3NTlmODdiMjc5YzFhZWUxOWNjZTUzMDFhZjRlZDY2YWUxN2RiNDhiMjAxZWQ2YzJhMGU4YTI4YmY1NjU2MjdmMWFiOGEzNGIxYTk1ZWUxYjBhMmEzOTA4NGYxZjBlMmFjYjFjMzk0YjIwMTg1ZDhlMGIyMjY1N2M4ZDljNGNlNWY2NDk1ZWZiNjQxMGMxOTkwMTE1MzBmOTBlM2FiOWQ4ZDFlNDIwNmY5YWUwZmZlYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjNWY5ZmIzMmY0OTExMWFiMjBjMzNmMjU5OGZjODM2YzExM2UyOTE4ODFhYzIxZWUyOTE2OTM5NDAxMTI0NGU0MDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDA2ZGRmNmUxZDc2NWExOTNkOWNiZTE0NmNlZWI3OWFjMWNiNDg1ZWQ1ZjViMzc5MTNhOGNmNTg1N2VmZjAwYTlkZTEzYzc0ZDJiNGQ5NDhlMTYwOGVhNmVlYmRhZmU3NWJjMmY5OTVhYWQxMWIyMWQxZTJjOTRmMmEyZDEyZjY4MDIwNTAzMDMwNzAwMDQwNDAwMDAwMDA4MDQwMjA2MDQwMTBhMGNlMDA3NmJiMjA0MDAwMDAwMDYnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAxMDAwMCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOGlMYTI2S1NiZHBCVXpOSzd1WXE4RnZ5dXlBNWg0azRlckRIc0RjUGJIdXMnLFxuICAgICAgICAgICAgICB2YWx1ZTogMi4wMTczMjI4ZTEwLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICc4UDJrWDdUeWg5ZVMzUktkYUJocWJFdFFHQVg1OERYekw3bWhEUUFCR1gyZCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAwMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnSEJ4WlNoY0U4NlVNbUY5M0tVTThlV0pLcWVFWGk1Y3FXQ0xZTE1NaHFNWW0nLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3NvbDp3aWYnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiB7XG4gICAgICAgICAgICAgICAgJG9pZDogJzU1NTNiYThhZTdhNWM3NzAwNjcxOTY2MScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVudGVycHJpc2VzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJG9pZDogJzU1NTNiYThhZTdhNWM3NzAwNjcxOTY2MScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc2MmY0YzM3MjBkOTJjNTAwMDgyNTdlYjUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc2MmY0YzM3MjBkOTJjNTAwMDgyNTdlYjUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudDogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3NvbDp3aWYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY3MTJkN2ZkYTZkZTQ5MDZkNjU4YzA0YWViYmY4ZjliJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja2VkV2FsbGV0OiBQYXJ0aWFsPElXYWxsZXQ+ID0ge1xuICAgICAgICBjb2luU3BlY2lmaWM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjcyA9IHtcbiAgICAgICAgICAgIHJvb3RBZGRyZXNzOiAnSEJ4WlNoY0U4NlVNbUY5M0tVTThlV0pLcWVFWGk1Y3FXQ0xZTE1NaHFNWW0nLFxuICAgICAgICAgIH0gYXMgV2FsbGV0Q29pblNwZWNpZmljO1xuICAgICAgICAgIHJldHVybiBjcztcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhKGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG1vY2tlZFdhbGxldCBhcyBJV2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXNzZXJ0LmZhaWwoJ1RyYW5zYWN0aW9uIHNob3VsZCBwYXNzIHZlcmlmaWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5mYWlsKCdUcmFuc2FjdGlvbiBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGEgc3Bvb2ZlZCB0b2tlbiBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29uc29saWRhdGlvblR4ID0ge1xuICAgICAgICB0eFJlcXVlc3RJZDogJzRmZGQwY2FlLTI1NjMtNDNiMS1iNWNmLTk0ODY1MTU4Y2ExMCcsXG4gICAgICAgIHdhbGxldElkOiAnNjMwNjhlZDRlZmE2M2EwMDA4NzdmMDJmZDRiMGZhNmQnLFxuICAgICAgICB0eEhleDpcbiAgICAgICAgICAnMDJiN2MyYzc4MjllZGVkNGU4Zjk0N2M5MGVkM2I5YWZjZTcxZjYxNmViNDdkZmNmYmY0Yjc2NTc3ODE0OTA2MDAxM2FjYjMzYjlmNjdmZGQ5YzI1MTJmNDhmYWM0ZTRjMDQ5ZWFiOTM4MjliNjk0MDRmM2JkMTY2ZmUzMjQyYzkwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMTA0MDk2ZGE2OTBiZDU1OGZkODYzNGFjMTRmMTY0NWQ4MDk1YWZkMGNhZWE1OTUzNTc4YzU5NmUzYzBkZWEzODMwNWVlNzI5OGJmYWM1NTEwMWYxNzc3MzU2NTlkNDJlZDZiZTg5MGVmM2ExZDIwNGQ5ZTMzZjMyZTI0YzU2MzUzMjdjYTY2ZDFmZTAwODI2ZTVhNGY3NTlmODdiMjc5YzFhZWUxOWNjZTUzMDFhZjRlZDY2YWUxN2RiNDhiMjAxZWQ2YzJhMGU4YTI4YmY1NjU2MjdmMWFiOGEzNGIxYTk1ZWUxYjBhMmEzOTA4NGYxZjBlMmFjYjFjMzk0YjIwMTg1ZDhlMGIyMjY1N2M4ZDljNGNlNWY2NDk1ZWZiNjQxMGMxOTkwMTE1MzBmOTBlM2FiOWQ4ZDFlNDIwNmY5YWUwZmZlYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjNWY5ZmIzMmY0OTExMWFiMjBjMzNmMjU5OGZjODM2YzExM2UyOTE4ODFhYzIxZWUyOTE2OTM5NDAxMTI0NGU0MDZhN2Q1MTcxOTJjNTY4ZWUwOGE4NDVmNzNkMjk3ODhjZjAzNWMzMTQ1YjIxYWIzNDRkODA2MmVhOTQwMDAwMDA2ZGRmNmUxZDc2NWExOTNkOWNiZTE0NmNlZWI3OWFjMWNiNDg1ZWQ1ZjViMzc5MTNhOGNmNTg1N2VmZjAwYTlkZTEzYzc0ZDJiNGQ5NDhlMTYwOGVhNmVlYmRhZmU3NWJjMmY5OTVhYWQxMWIyMWQxZTJjOTRmMmEyZDEyZjY4MDIwNTAzMDMwNzAwMDQwNDAwMDAwMDA4MDQwMjA2MDQwMTBhMGNlMDA3NmJiMjA0MDAwMDAwMDYnLFxuICAgICAgICBmZWVJbmZvOiB7XG4gICAgICAgICAgZmVlOiAxMDAwMCxcbiAgICAgICAgICBmZWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHR4SW5mbzoge1xuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnOGlMYTI2S1NiZHBCVXpOSzd1WXE4RnZ5dXlBNWg0azRlckRIc0RjUGJIdXMnLFxuICAgICAgICAgICAgICB2YWx1ZTogMi4wMTczMjI4ZTEwLFxuICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6ICc4UDJrWDdUeWg5ZVMzUktkYUJocWJFdFFHQVg1OERYekw3bWhEUUFCR1gyZCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAwMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcxMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWluZXJGZWU6ICcxMDAwMCcsXG4gICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnSEJ4WlNoY0U4NlVNbUY5M0tVTThlV0pLcWVFWGk1Y3FXQ0xZTE1NaHFNWW0nLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3NvbDp3aWYnLFxuICAgICAgICAgICAgICBlbnRlcnByaXNlOiB7XG4gICAgICAgICAgICAgICAgJG9pZDogJzU1NTNiYThhZTdhNWM3NzAwNjcxOTY2MScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVudGVycHJpc2VzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJG9pZDogJzU1NTNiYThhZTdhNWM3NzAwNjcxOTY2MScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdmFsdWU6IDIuMDE3MzIyOGUxMCxcbiAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6ICcyMDE3MzIyODAwMCcsXG4gICAgICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgICAgICRvaWQ6ICc2MmY0YzM3MjBkOTJjNTAwMDgyNTdlYjUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICAgICAgICAgICAgd2FsbGV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICRvaWQ6ICc2MmY0YzM3MjBkOTJjNTAwMDgyNTdlYjUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcGF5R29GZWU6ICcwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudDogJzIwMTczMjI4MDAwJyxcbiAgICAgICAgICBzcGVuZEFtb3VudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYW1vdW50U3RyaW5nOiAnMjAxNzMyMjgwMDAnLFxuICAgICAgICAgICAgICBjb2luTmFtZTogJ3NvbDp3aWYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdTZW5kJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29uc29saWRhdGVJZDogJzY3MTJkN2ZkYTZkZTQ5MDZkNjU4YzA0YWViYmY4ZjliJyxcbiAgICAgICAgY29pbjogJ3Rzb2wnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbW9ja2VkV2FsbGV0OiBQYXJ0aWFsPElXYWxsZXQ+ID0ge1xuICAgICAgICBjb2luU3BlY2lmaWM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjcyA9IHtcbiAgICAgICAgICAgIHJvb3RBZGRyZXNzOiAnOHJRWGVWRU1yS3Z0V0NFSmlyRU02Y0tZbmJadVRxVlRicVJQaU1NQUo4UjQnLFxuICAgICAgICAgIH0gYXMgV2FsbGV0Q29pblNwZWNpZmljO1xuICAgICAgICAgIHJldHVybiBjcztcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIGJsb2NraGFzaDogJycsXG4gICAgICAgICAgICBmZWVQYXllcjogJycsXG4gICAgICAgICAgICB0eFBhcmFtczoge30sXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiBjb25zb2xpZGF0aW9uVHggYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgICAgICB3YWxsZXQ6IG1vY2tlZFdhbGxldCBhcyBJV2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb25Ub0Jhc2VBZGRyZXNzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICd0eCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgYWRkcmVzcycsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdibGluZCBzaWduaW5nIHRva2VuIGVuYWJsZW1lbnQgcHJvdGVjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhcyB2YWxpZCB0aGUgZW5hYmxldG9rZW4gaW50ZW50IHdoZW4gcHJlYnVpbGQgdHggbWF0Y2hzIHVzZXIgaW50ZW50ICcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGRSYXcsIHdhbGxldERhdGEgfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG4gICAgICBjb25zdCBzYW1lSW50ZW50VHggPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zLFxuICAgICAgICB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkUmF3LFxuICAgICAgICB3YWxsZXQsXG4gICAgICAgIHZlcmlmaWNhdGlvbjogeyB2ZXJpZnlUb2tlbkVuYWJsZW1lbnQ6IHRydWUgfSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpO1xuXG4gICAgICBzYW1lSW50ZW50VHguc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvd24gYW4gZXJyb3Igd2hlbiB0YW1wZXJlZCBwcmVidWlsZCB0eCB0eXBlICcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGRSYXcsIHNlbmRUeEhleCwgd2FsbGV0RGF0YSB9ID0gdGVzdERhdGEuZW5hYmxlVG9rZW5GaXh0dXJlcztcbiAgICAgIGNvbnN0IHRhbXBlcmVkVHhQcmVidWlsZCA9IHsgLi4udHhQcmVidWlsZFJhdywgdHhIZXg6IHNlbmRUeEhleCB9O1xuXG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdGFtcGVyZWRUeFByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUgb24gdG9rZW4gZW5hYmxlbWVudDogZXhwZWN0ZWQgXCJBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb25cIiwgZ290IFwiU2VuZFwiLicsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0aGF0IHRva2VuTmFtZSBtYXRjaGVzIGJldHdlZW4gdXNlciBpbnRlbnQgYW5kIGhleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGRSYXcsIHdyb25nVG9rZW5OYW1lVHhIZXgsIHdhbGxldERhdGEgfSA9IHRlc3REYXRhLmVuYWJsZVRva2VuRml4dHVyZXM7XG4gICAgICBjb25zdCB0YW1wZXJlZFR4UHJlYnVpbGQgPSB7IC4uLnR4UHJlYnVpbGRSYXcsIHR4SGV4OiB3cm9uZ1Rva2VuTmFtZVR4SGV4IH07XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwgd2FsbGV0RGF0YSk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgICAgdHhQcmVidWlsZDogdGFtcGVyZWRUeFByZWJ1aWxkLFxuICAgICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBTb2xWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpLFxuICAgICAgICB7IG1lc3NhZ2U6ICdJbnZhbGlkIHRva2VuIG5hbWU6IGV4cGVjdGVkIHRzb2w6cmF5LCBnb3QgdHNvbDp0MjJtaW50IG9uIHRva2VuIGVuYWJsZW1lbnQgdHgnIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0aGF0IHRva2VuQWRkciBtYXRjaGVzIGJldHdlZW4gdXNlciBpbnRlbnQgYW5kIGhleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGRSYXcsIHdyb25nQWRkclR4SGV4LCB3YWxsZXREYXRhIH0gPSB0ZXN0RGF0YS5lbmFibGVUb2tlbkZpeHR1cmVzO1xuICAgICAgY29uc3QgdGFtcGVyZWRUeFByZWJ1aWxkID0geyAuLi50eFByZWJ1aWxkUmF3LCB0eEhleDogd3JvbmdBZGRyVHhIZXggfTtcblxuICAgICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB0YW1wZXJlZFR4UHJlYnVpbGQsXG4gICAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IHsgdmVyaWZ5VG9rZW5FbmFibGVtZW50OiB0cnVlIH0sXG4gICAgICAgICAgfSBhcyB1bmtub3duIGFzIFNvbFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgJ0ludmFsaWQgdG9rZW4gYWRkcmVzczogZXhwZWN0ZWQgNGJUWXZ2djJIazR2MmtRVzhIWkZGUzRTellQenRRc2h3OUdtMXN1WG1hQmosIGdvdCBHMUxFZ0FOQXdLbzdiOE5meFRzTXpyYkJZRGtYcWk1UkVWSlk4dGhyTVJRbSBvbiB0b2tlbiBlbmFibGVtZW50IHR4JyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCBzZW5kVG9rZW5FbmFibGVtZW50IGNhbGwgb24gc3Bvb2ZlZCBkYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyBzZW5kVG9rZW5FbmFibGVtZW50UGF5bG9hZCwgd2FsbGV0RGF0YSwgd3JvbmdUb2tlbk5hbWVUeEhleCB9ID0gdGVzdERhdGEuZW5hYmxlVG9rZW5GaXh0dXJlcztcbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB3YWxsZXREYXRhKTtcbiAgICAgIG5vY2soJ2h0dHBzOi8vYml0Z28uZmFrZXVybCcpLmdldCgnL2FwaS92Mi90c29sL2tleS82OGJhZmVkNTg4NjcxY2Y5NGVkOGE1ZGJiYTg4MmFkMycpLnJlcGx5KDIwMCwge30pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+XG4gICAgICAgICAgd2FsbGV0LnNlbmRUb2tlbkVuYWJsZW1lbnQoe1xuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiB7IHZlcmlmeVRva2VuRW5hYmxlbWVudDogdHJ1ZSB9LFxuICAgICAgICAgICAgLi4uc2VuZFRva2VuRW5hYmxlbWVudFBheWxvYWQsXG4gICAgICAgICAgICBwcmVidWlsZFR4OiB7IC4uLnNlbmRUb2tlbkVuYWJsZW1lbnRQYXlsb2FkLnByZWJ1aWxkVHgsIHR4SGV4OiB3cm9uZ1Rva2VuTmFtZVR4SGV4IH0sXG4gICAgICAgICAgfSBhcyB1bmtub3duIGFzIFByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uT3B0aW9ucyksXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCB0b2tlbiBuYW1lOiBleHBlY3RlZCB0c29sOnJheSwgZ290IHRzb2w6dDIybWludCBvbiB0b2tlbiBlbmFibGVtZW50IHR4JyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzV2FsbGV0QWRkcmVzcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2YWxpZCB3YWxsZXQgYWRkcmVzcyB3aXRoIGNvcnJlY3Qga2V5Y2hhaW4gYW5kIGluZGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICc3WUFlc2Z3UGs0MVZDaFVncjY1Ym04RkVlcDd5bVdxTFNXNXJwWUI1elpQWSc7XG4gICAgICBjb25zdCBjb21tb25LZXljaGFpbiA9XG4gICAgICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG4gICAgICBjb25zdCBpbmRleCA9ICcxJztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHsga2V5Y2hhaW5zLCBhZGRyZXNzLCBpbmRleCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBhZGRyZXNzIHdpdGggaW5jb3JyZWN0IGtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICc3WUFlc2Z3UGs0MVZDaFVncjY1Ym04RkVlcDd5bVdxTFNXNXJwWUI1elpQWSc7XG4gICAgICBjb25zdCB3cm9uZ0tleWNoYWluID1cbiAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW46IHdyb25nS2V5Y2hhaW4gfV07XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7IGtleWNoYWlucywgYWRkcmVzcywgaW5kZXggfSksIHtcbiAgICAgICAgbWVzc2FnZTogYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiAke2FkZHJlc3N9IGlzIG5vdCBhIHdhbGxldCBhZGRyZXNzYCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgYWRkcmVzcyB3aXRoIGluY29ycmVjdCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnOGVhMzJlY2FjZmM4M2VmZmJkMmUyNzkwZWU0NGZhN2M1OWI0ZDg2YzI5YTEyZjA5ZmI2MTNkODE5NWY5M2Y0ZTIxODc1Y2FkM2I5OGFkYWRhNDBjMDQwYzU0YzM1Njk0NjdkZjQxYTAyMDg4MWE2MTg0MDk2Mzc4NzAxODYyYmQnO1xuICAgICAgY29uc3Qgd3JvbmdJbmRleCA9ICc5OTknO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3MsIGluZGV4OiB3cm9uZ0luZGV4IH0pLCB7XG4gICAgICAgIG1lc3NhZ2U6IGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2AsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGludmFsaWQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGludmFsaWRBZGRyZXNzID0gJ2ludmFsaWRhZGRyZXNzJztcbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgaWQ6ICcxJywgdHlwZTogJ3RzcycgYXMgY29uc3QsIGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3M6IGludmFsaWRBZGRyZXNzLCBpbmRleCB9KSwge1xuICAgICAgICBtZXNzYWdlOiBgaW52YWxpZCBhZGRyZXNzOiAke2ludmFsaWRBZGRyZXNzfWAsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFkZHJlc3Mgd2l0aCBkZXJpdmF0aW9uIHByZWZpeCBmb3IgU01DIHdhbGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBBZGRyZXNzIGRlcml2ZWQgd2l0aCBkZXJpdmF0aW9uIHByZWZpeCBtLzk5OTk5OS8xNDgyNDIzNTUvMjM5MzM2ODQ1LzFcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnQ0M3MTVROTJDOHZ1RUZUNXh1akU1NURvNkJrV1JkcER2cjdWaDhpVU5VQncnO1xuICAgICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnOGVhMzJlY2FjZmM4M2VmZmJkMmUyNzkwZWU0NGZhN2M1OWI0ZDg2YzI5YTEyZjA5ZmI2MTNkODE5NWY5M2Y0ZTIxODc1Y2FkM2I5OGFkYWRhNDBjMDQwYzU0YzM1Njk0NjdkZjQxYTAyMDg4MWE2MTg0MDk2Mzc4NzAxODYyYmQnO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkID0gJ3NtYy10ZXN0LXNlZWQtMTIzJztcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScsIHR5cGU6ICd0c3MnIGFzIGNvbnN0LCBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlclxuICAgICAgLy8gYW5kIHRoZSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gY29ycmVjdGx5IGNvbXB1dGVzIHRoZSBkZXJpdmF0aW9uIHByZWZpeCBpbnRlcm5hbGx5XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3MsIGluZGV4LCBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkIH0pO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Rlcml2ZUFkZHJlc3MnLCAoKSA9PiB7XG4gICAgLy8gU2FtZSB2ZWN0b3IgYXMgdGhlIGlzV2FsbGV0QWRkcmVzcyB0ZXN0cyBhYm92ZTogY29tbW9uS2V5Y2hhaW4gQCBpbmRleCAxIC0+IGFkZHJlc3MuXG4gICAgY29uc3QgYWRkcmVzcyA9ICc3WUFlc2Z3UGs0MVZDaFVncjY1Ym04RkVlcDd5bVdxTFNXNXJwWUI1elpQWSc7XG4gICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcbiAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnLCB0eXBlOiAndHNzJyBhcyBjb25zdCwgY29tbW9uS2V5Y2hhaW4gfV07XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSB0aGUgZXhwZWN0ZWQgYWRkcmVzcyBmb3IgYSBnaXZlbiBjb21tb25LZXljaGFpbiBhbmQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMSB9KTtcbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbChhZGRyZXNzKTtcbiAgICAgIHJlc3VsdC5pbmRleC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LmRlcml2YXRpb25QYXRoLCAnbS8xJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSBhIGRpZmZlcmVudCBhZGRyZXNzIGZvciBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnMsIGluZGV4OiAyIH0pO1xuICAgICAgcmVzdWx0LmFkZHJlc3Muc2hvdWxkLm5vdC5lcXVhbChhZGRyZXNzKTtcbiAgICB9KTtcblxuICAgIGl0KCdyb3VuZC10cmlwcyB3aXRoIGlzV2FsbGV0QWRkcmVzcyAoZGVyaXZlZCBhZGRyZXNzIHZlcmlmaWVzIGFzIHRydWUpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGVyaXZlZCA9IGF3YWl0IGJhc2Vjb2luLmRlcml2ZUFkZHJlc3MoeyBrZXljaGFpbnMsIGluZGV4OiA1IH0pO1xuICAgICAgY29uc3QgdmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MoeyBrZXljaGFpbnMsIGFkZHJlc3M6IGRlcml2ZWQuYWRkcmVzcywgaW5kZXg6IDUgfSk7XG4gICAgICB2ZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVzZSB0aGUgU01DIHByZWZpeCBwYXRoIHdoZW4gZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCBpcyBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkID0gJ3NtYy10ZXN0LXNlZWQtMTIzJztcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMSwgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCB9KTtcbiAgICAgIC8vIHJvdW5kLXRyaXBzIHRocm91Z2ggdGhlIFNNQyB2ZXJpZnkgcGF0aFxuICAgICAgY29uc3QgdmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgIGFkZHJlc3M6IGRlcml2ZWQuYWRkcmVzcyxcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICAgIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQsXG4gICAgICB9KTtcbiAgICAgIHZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgaWYga2V5Y2hhaW5zIGFyZSBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT4gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWluczogW10sIGluZGV4OiAwIH0pLCAva2V5Y2hhaW5zLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSB0aGUgU1BMIHRva2VuIChBVEEpIGFkZHJlc3Mgd2hlbiB0b2tlbk5hbWUgaXMgZ2l2ZW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBvd25lciA9IG5hdGl2ZSBhZGRyZXNzIGF0IGluZGV4IDEgKDdZQWVzZuKApik7IEFUQSBmb3Igc29sOnVzZGM6XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMSwgdG9rZW5OYW1lOiAnc29sOnVzZGMnIH0pO1xuICAgICAgcmVzdWx0LmFkZHJlc3Muc2hvdWxkLmVxdWFsKCdGRzFYTUpkWEJRNXVZYU5vS3Bvc0FCZzZlcnhzdnpid0MyODNXMmlwbmpRQicpO1xuICAgICAgcmVzdWx0LmFkZHJlc3Muc2hvdWxkLm5vdC5lcXVhbChhZGRyZXNzKTsgLy8gbm90IHRoZSBuYXRpdmUgYWRkcmVzc1xuICAgICAgcmVzdWx0LmluZGV4LnNob3VsZC5lcXVhbCgxKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aGUgZGVyaXZlZCB0b2tlbiBBVEEgbWF0Y2hlcyBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyBmb3IgdGhlIG93bmVyK21pbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBuYXRpdmUgPSBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMyB9KTtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgYmFzZWNvaW4uZGVyaXZlQWRkcmVzcyh7IGtleWNoYWlucywgaW5kZXg6IDMsIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9KTtcbiAgICAgIGNvbnN0IG1pbnQgPSAoY29pbnMuZ2V0KCdzb2w6dXNkYycpIGFzIHVua25vd24gYXMgeyB0b2tlbkFkZHJlc3M6IHN0cmluZyB9KS50b2tlbkFkZHJlc3M7XG4gICAgICBjb25zdCBleHBlY3RlZEF0YSA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKG1pbnQsIG5hdGl2ZS5hZGRyZXNzLCB0cnVlKTtcbiAgICAgIHRva2VuLmFkZHJlc3Muc2hvdWxkLmVxdWFsKGV4cGVjdGVkQXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIGFuIHVua25vd24gdG9rZW4gbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCBiYXNlY29pbi5kZXJpdmVBZGRyZXNzKHsga2V5Y2hhaW5zLCBpbmRleDogMSwgdG9rZW5OYW1lOiAnc29sOm5vdC1hLXJlYWwtdG9rZW4nIH0pLFxuICAgICAgICAvdW5rbm93biBvciB1bnN1cHBvcnRlZCBTT0wgdG9rZW4vXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHB1YmxpYyBrZXkgdG8gYmFzZTU4IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSAnNjEyMjBhOTM5NDgwMmIxZDFkZjM3YjM1ZjdhMzE5Nzk3MGY0ODA4MTA5MmNlZTAxMWZjOThmN2I3MWIyYmQ0Myc7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSAnN1lBZXNmd1BrNDFWQ2hVZ3I2NWJtOEZFZXA3eW1XcUxTVzVycFlCNXpaUFknO1xuXG4gICAgICBjb25zdCBhZGRyZXNzID0gYmFzZWNvaW4uZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKGV4cGVjdGVkQWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|