@bitgo/sdk-coin-flrp 1.15.0 → 1.15.2
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/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +9 -4
- package/dist/test/unit/flrp.js +12 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/test/unit/flrp.js
CHANGED
|
@@ -798,6 +798,17 @@ describe('Flrp test cases', function () {
|
|
|
798
798
|
const isVerified = await basecoin.verifyTransaction({ txParams, txPrebuild });
|
|
799
799
|
isVerified.should.equal(true);
|
|
800
800
|
});
|
|
801
|
+
it('should verify MPC ImportInP transaction when txParams.type is the "import" intent alias', async () => {
|
|
802
|
+
const txHex = await buildUnsignedImportInP();
|
|
803
|
+
const txPrebuild = { txHex, txInfo: {} };
|
|
804
|
+
const txParams = {
|
|
805
|
+
recipients: [],
|
|
806
|
+
type: 'import',
|
|
807
|
+
locktime: 0,
|
|
808
|
+
};
|
|
809
|
+
const isVerified = await basecoin.verifyTransaction({ txParams, txPrebuild });
|
|
810
|
+
isVerified.should.equal(true);
|
|
811
|
+
});
|
|
801
812
|
it('should verify MPC ExportInP transaction', async () => {
|
|
802
813
|
const txHex = await buildUnsignedExportInP();
|
|
803
814
|
const txPrebuild = { txHex, txInfo: {} };
|
|
@@ -997,4 +1008,4 @@ describe('Flrp test cases', function () {
|
|
|
997
1008
|
});
|
|
998
1009
|
});
|
|
999
1010
|
});
|
|
1000
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxycC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9mbHJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXlDO0FBQ3pDLDhDQUEwRDtBQUMxRCxvQ0FBeUM7QUFDekMsbUNBQWlEO0FBQ2pELDRDQUEwQztBQUMxQyw0Q0FBdUM7QUFDdkMsa0RBQXlHO0FBQ3pHLHNFQUFxRTtBQUNyRSxzRUFBcUU7QUFDckUsc0VBQXFFO0FBQ3JFLHNFQUFxRTtBQUNyRSw0RkFJMkQ7QUFDM0QsOENBQXNHO0FBQ3RHLG1EQUFrRDtBQUVsRCxvREFBNEI7QUFDNUIsZ0RBQXdCO0FBR3hCLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNqQyxJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFFYixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLHNCQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsbUJBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxtQkFBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFFaEgsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUU7WUFDbkMsR0FBRyxFQUFFLE1BQU07U0FDWixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsV0FBSyxDQUFDLGNBQWMsQ0FBQyxD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RyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFFdEQsSUFBQSxjQUFJLEVBQUMsS0FBSyxDQUFDO2lCQUNSLElBQUksQ0FBQyx3QkFBd0IsUUFBUSx1QkFBdUIsQ0FBQztpQkFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSx3REFBd0QsRUFBRSxDQUFDLENBQUM7WUFFbkYsTUFBTSxRQUFRO2lCQUNYLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRmxycExpYiBmcm9tICcuLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEZscnAsIFRmbHJQIH0gZnJvbSAnLi4vLi4vc3JjLyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgU0VFRF9BQ0NPVU5ULCBBQ0NPVU5UXzEsIEFDQ09VTlRfMiwgT05fQ0hBSU5fVEVTVF9XQUxMRVQsIENPTlRFWFQgfSBmcm9tICcuLi9yZXNvdXJjZXMvYWNjb3VudCc7XG5pbXBvcnQgeyBFWFBPUlRfSU5fQyB9IGZyb20gJy4uL3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvZXhwb3J0SW5DJztcbmltcG9ydCB7IEVYUE9SVF9JTl9QIH0gZnJvbSAnLi4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uRGF0YS9leHBvcnRJblAnO1xuaW1wb3J0IHsgSU1QT1JUX0lOX1AgfSBmcm9tICcuLi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25EYXRhL2ltcG9ydEluUCc7XG5pbXBvcnQgeyBJTVBPUlRfSU5fQyB9IGZyb20gJy4uL3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvaW1wb3J0SW5DJztcbmltcG9ydCB7XG4gIE1VTFRJU0lHX0RFTEVHQVRJT05fRlVMTFlfU0lHTkVEX1RYX0hFWCxcbiAgTVVMVElTSUdfREVMRUdBVElPTl9QQVJBTVMsXG4gIE1QQ19ERUxFR0FUSU9OX1VOU0lHTkVEX1RYX0hFWCxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uRGF0YS9tdWx0aXNpZ0RlbGVnYXRpb25UeCc7XG5pbXBvcnQgeyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblR5cGUsIE1QQ0FsZ29yaXRobSwgY29tbW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IHNlY3AyNTZrMSB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBGbHJwQ29udGV4dCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IG5vY2sgZnJvbSAnbm9jayc7XG5pbXBvcnQgeyBDcmVhdGVQYWlyZWRXYWxsZXRSZXNwb25zZSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuXG5kZXNjcmliZSgnRmxycCB0ZXN0IGNhc2VzJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luTmFtZSA9ICdmbHJwJztcbiAgY29uc3QgdGNvaW5OYW1lID0gJ3QnICsgY29pbk5hbWU7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgYmFzZWNvaW47XG5cbiAgY29uc3Qga2V5Y2hhaW5zID0gW3sgcHViOiBTRUVEX0FDQ09VTlQucHVibGljS2V5IH0sIHsgcHViOiBBQ0NPVU5UXzEucHVibGljS2V5IH0sIHsgcHViOiBBQ0NPVU5UXzIucHVibGljS2V5IH1dO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHtcbiAgICAgIGVudjogJ21vY2snLFxuICAgIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3Rlcihjb2luTmFtZSwgRmxycC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKHRjb2luTmFtZSwgVGZsclAuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbih0Y29pbk5hbWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluc3RhbnRpYXRlIHRoZSBjb2luJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBsb2NhbEJhc2Vjb2luID0gYml0Z28uY29pbih0Y29pbk5hbWUpO1xuICAgIGxvY2FsQmFzZWNvaW4uc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoVGZsclApO1xuXG4gICAgbG9jYWxCYXNlY29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuICAgIGxvY2FsQmFzZWNvaW4uc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRmxycCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuICcgKyB0Y29pbk5hbWUsIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlY29pbi5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCh0Y29pbk5hbWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBmdWxsIG5hbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgRmxhcmUgUC1DaGFpbicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBiYXNlIGZhY3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlY29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvaW4gZmFtaWx5JywgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnZmxycCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBkZWZhdWx0IG11bHRpc2lnIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpLnNob3VsZC5lcXVhbCgnb25jaGFpbicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN1cHBvcnQgVFNTJywgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luLnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBlY2RzYSBhcyBNUEMgYWxnb3JpdGhtJywgZnVuY3Rpb24gKCkge1xuICAgIChiYXNlY29pbi5nZXRNUENBbGdvcml0aG0oKSBhcyBNUENBbGdvcml0aG0pLnNob3VsZC5lcXVhbCgnZWNkc2EnKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0tleXBhaXJzOicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHViJyk7XG4gICAgICBrZXlQYWlyLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwcnYnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBrZXlwYWlyIGZyb20gYSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VlZCA9IEJ1ZmZlci5mcm9tKFNFRURfQUNDT1VOVC5zZWVkLCAnaGV4Jyk7XG4gICAgICBjb25zdCBrZXlQYWlyID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKHNlZWQpO1xuICAgICAga2V5UGFpci5wdWIuc2hvdWxkLmVxdWFsKFNFRURfQUNDT1VOVC5wdWJsaWNLZXkpO1xuICAgICAga2V5UGFpci5wcnYuc2hvdWxkLmVxdWFsKFNFRURfQUNDT1VOVC5wcml2YXRlS2V5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YihTRUVEX0FDQ09VTlQucHVibGljS2V5KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKEFDQ09VTlRfMS5wdWJsaWNLZXkpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBhbiBpbnZhbGlkIHB1YmxpYyBrZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKCdpbnZhbGlkJykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBwcml2YXRlIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQcnYoU0VFRF9BQ0NPVU5ULnByaXZhdGVLZXkpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQcnYoQUNDT1VOVF8xLnByaXZhdGVLZXkpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBhbiBpbnZhbGlkIHByaXZhdGUga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFBydignaW52YWxpZCcpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiBhbiBleHBvcnQgZnJvbSBDLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IEVYUE9SVF9JTl9DLnVuc2lnbmVkSGV4LFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IEVYUE9SVF9JTl9DLnByaXZhdGVLZXksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2hhbGZTaWduZWQnKTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWQgPSAoc2lnbmVkVHggYXMgSGFsZlNpZ25lZEFjY291bnRUcmFuc2FjdGlvbikuaGFsZlNpZ25lZDtcbiAgICAgIGFzc2VydChoYWxmU2lnbmVkLCAnaGFsZlNpZ25lZCBzaG91bGQgYmUgZGVmaW5lZCcpO1xuICAgICAgYXNzZXJ0KGhhbGZTaWduZWQudHhIZXgsICd0eEhleCBzaG91bGQgYmUgZGVmaW5lZCcpO1xuICAgICAgaGFsZlNpZ25lZC50eEhleC5zaG91bGQuZXF1YWwoRVhQT1JUX0lOX0Muc2lnbmVkSGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2lnbiBhbiBleHBvcnQgZnJvbSBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gcHJpdmF0ZUtleXNbMl0gY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IHNpZ25hdHVyZSBzbG90IChzb3J0ZWQgYWRkcmVzcyBvcmRlcjogMzMyOWJlN2QuLi4gaXMgc2xvdCAxKVxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IEVYUE9SVF9JTl9QLnVuc2lnbmVkSGV4LFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IEVYUE9SVF9JTl9QLnByaXZhdGVLZXlzWzJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdoYWxmU2lnbmVkJyk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkID0gKHNpZ25lZFR4IGFzIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24pLmhhbGZTaWduZWQ7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZCwgJ2hhbGZTaWduZWQgc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGFzc2VydChoYWxmU2lnbmVkLnR4SGV4LCAndHhIZXggc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGhhbGZTaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKEVYUE9SVF9JTl9QLmhhbGZTaWdudHhIZXgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzaWduIGFuIGltcG9ydCB0byBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gcHJpdmF0ZUtleXNbMl0gY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IHNpZ25hdHVyZSBzbG90IChzb3J0ZWQgYWRkcmVzcyBvcmRlcjogMzMyOWJlN2QuLi4gaXMgc2xvdCAxKVxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgdHhIZXg6IElNUE9SVF9JTl9QLnVuc2lnbmVkSGV4LFxuICAgICAgICB9LFxuICAgICAgICBwcnY6IElNUE9SVF9JTl9QLnByaXZhdGVLZXlzWzJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdoYWxmU2lnbmVkJyk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkID0gKHNpZ25lZFR4IGFzIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24pLmhhbGZTaWduZWQ7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZCwgJ2hhbGZTaWduZWQgc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGFzc2VydChoYWxmU2lnbmVkLnR4SGV4LCAndHhIZXggc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGhhbGZTaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKElNUE9SVF9JTl9QLmhhbGZTaWdudHhIZXgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzaWduIGFuIGltcG9ydCB0byBDLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gcHJpdmF0ZUtleXNbMl0gY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IHNpZ25hdHVyZSBzbG90IChzb3J0ZWQgYWRkcmVzcyBvcmRlciBpbiBVVFhPcylcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBJTVBPUlRfSU5fQy51bnNpZ25lZEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiBJTVBPUlRfSU5fQy5wcml2YXRlS2V5c1syXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICBzaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaGFsZlNpZ25lZCcpO1xuICAgICAgY29uc3QgaGFsZlNpZ25lZCA9IChzaWduZWRUeCBhcyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uKS5oYWxmU2lnbmVkO1xuICAgICAgYXNzZXJ0KGhhbGZTaWduZWQsICdoYWxmU2lnbmVkIHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZC50eEhleCwgJ3R4SGV4IHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBoYWxmU2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChJTVBPUlRfSU5fQy5oYWxmU2lnbnR4SGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHNpZ25pbmcgd2l0aCBhbiBpbnZhbGlkIGtleScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBFWFBPUlRfSU5fQy51bnNpZ25lZEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiAnaW52YWxpZC1rZXknLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHBhcmFtcykuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaWduIE1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzaWduIGEgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgRmxycExpYi5LZXlQYWlyKHsgcHJ2OiBTRUVEX0FDQ09VTlQucHJpdmF0ZUtleSB9KTtcbiAgICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBCdWZmZXIuZnJvbShTRUVEX0FDQ09VTlQubWVzc2FnZSwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGJhc2Vjb2luLnNpZ25NZXNzYWdlKGtleXMsIG1lc3NhZ2VUb1NpZ24udG9TdHJpbmcoJ2hleCcpKTtcblxuICAgICAgc2lnbmF0dXJlLnNob3VsZC5iZS5pbnN0YW5jZU9mKEJ1ZmZlcik7XG4gICAgICBzaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCg2NSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gYSByYW5kb20gbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgRmxycExpYi5LZXlQYWlyKCk7XG4gICAgICBjb25zdCBwdWJLZXkgPSBrZXlQYWlyLmdldEtleXMoKS5wdWI7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtZXNzYWdlVG9TaWduID0gQnVmZmVyLmZyb20ocmFuZG9tQnl0ZXMoMzIpKTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGJhc2Vjb2luLnNpZ25NZXNzYWdlKGtleXMsIG1lc3NhZ2VUb1NpZ24udG9TdHJpbmcoJ2hleCcpKTtcblxuICAgICAgY29uc3QgdmVyaWZ5ID0gRmxycExpYi5VdGlscy52ZXJpZnlTaWduYXR1cmUoXG4gICAgICAgIEZscnBMaWIuVXRpbHMuc2hhMjU2KG1lc3NhZ2VUb1NpZ24pLFxuICAgICAgICBzaWduYXR1cmUuc2xpY2UoMCwgNjQpLCAvLyBSZW1vdmUgcmVjb3ZlcnkgYnl0ZSBmb3IgdmVyaWZpY2F0aW9uXG4gICAgICAgIEJ1ZmZlci5mcm9tKHB1YktleSwgJ2hleCcpXG4gICAgICApO1xuICAgICAgdmVyaWZ5LnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gc2lnbiB3aXRoIG1pc3NpbmcgcHJpdmF0ZSBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEZscnBMaWIuS2V5UGFpcih7IHB1YjogU0VFRF9BQ0NPVU5ULnB1YmxpY0tleSB9KTtcbiAgICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBCdWZmZXIuZnJvbShTRUVEX0FDQ09VTlQubWVzc2FnZSwgJ3V0ZjgnKTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnNpZ25NZXNzYWdlKGtleXMsIG1lc3NhZ2VUb1NpZ24udG9TdHJpbmcoJ2hleCcpKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFeHBsYWluIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIGhhbGYgc2lnbmVkIGV4cG9ydCBmcm9tIFAtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICBoYWxmU2lnbmVkOiB7IHR4SGV4OiBFWFBPUlRfSU5fUC5oYWxmU2lnbnR4SGV4IH0sXG4gICAgICB9KTtcblxuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgdHhFeHBsYWluLmZlZS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJyk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZUFtb3VudC5zaG91bGQuZXF1YWwoJzE0MzM5NTIwJyk7IC8vIDB4REFDREMwIGZyb20gdHJhbnNhY3Rpb25cbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdQLWNvc3R3bzEwNmdjNWg1cXN3aHllOGUwcG10aHE0d3pmMGVrdjVxcHBzcnZwdX5QLWNvc3R3bzFjdWV5Z2Q3ZmQzN2c1NnM0OWszcnNocWFraHA2azh1M2FkenQ2bX5QLWNvc3R3bzF4djVtdWxncGU1bHQ0dG54Mm50bnlsd2U3OWF6dTl2cGphNmx1dCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgZXhwb3J0IGZyb20gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiBFWFBPUlRfSU5fUC5mdWxsU2lnbnR4SGV4IH0pO1xuXG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkV4cG9ydCk7XG4gICAgICB0eEV4cGxhaW4uaWQuc2hvdWxkLmVxdWFsKEVYUE9SVF9JTl9QLnR4aGFzaCk7XG4gICAgICB0eEV4cGxhaW4uZmVlLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnKTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHMuc2hvdWxkLmJlLmFuLkFycmF5KCk7XG4gICAgICB0eEV4cGxhaW4uY2hhbmdlQW1vdW50LnNob3VsZC5lcXVhbCgnMTQzMzk1MjAnKTsgLy8gMHhEQUNEQzAgZnJvbSB0cmFuc2FjdGlvblxuICAgICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHMuc2hvdWxkLmJlLmFuLkFycmF5KCk7XG4gICAgICB0eEV4cGxhaW4uY2hhbmdlT3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ1AtY29zdHdvMTA2Z2M1aDVxc3doeWU4ZTBwbXRocTR3emYwZWt2NXFwcHNydnB1flAtY29zdHdvMWN1ZXlnZDdmZDM3ZzU2czQ5azNyc2hxYWtocDZrOHUzYWR6dDZtflAtY29zdHdvMXh2NW11bGdwZTVsdDR0bngybnRueWx3ZTc5YXp1OXZwamE2bHV0J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiBhIGhhbGYgc2lnbmVkIGltcG9ydCB0byBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgaGFsZlNpZ25lZDogeyB0eEhleDogSU1QT1JUX0lOX1AuaGFsZlNpZ250eEhleCB9LFxuICAgICAgfSk7XG5cbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuSW1wb3J0KTtcbiAgICAgIHR4RXhwbGFpbi5mZWUuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZScpO1xuICAgICAgdHhFeHBsYWluLmlucHV0cy5zaG91bGQuYmUuYW4uQXJyYXkoKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKCc0ODczOTAwMCcpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHMuc2hvdWxkLmJlLmFuLkFycmF5KCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHMuc2hvdWxkLmJlLmVtcHR5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBzaWduZWQgaW1wb3J0IHRvIFAtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogSU1QT1JUX0lOX1Auc2lnbmVkSGV4IH0pO1xuXG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkltcG9ydCk7XG4gICAgICB0eEV4cGxhaW4uaWQuc2hvdWxkLmVxdWFsKElNUE9SVF9JTl9QLnR4aGFzaCk7XG4gICAgICB0eEV4cGxhaW4uZmVlLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnKTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHMuc2hvdWxkLmJlLmFuLkFycmF5KCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCgnNDg3MzkwMDAnKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5lbXB0eSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gdHJhbnNhY3Rpb24gaGV4IGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB0cmFuc2FjdGlvbiBoZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCBmb3IgaW52YWxpZCB0cmFuc2FjdGlvbiBoZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogJ2ludmFsaWQnIH0pLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFuIGV4cG9ydCBmcm9tIEMtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogRVhQT1JUX0lOX0Muc2lnbmVkSGV4LFxuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBhbW91bnQ6IEVYUE9SVF9JTl9DLmFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYW4gZXhwb3J0IGZyb20gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiBFWFBPUlRfSU5fUC5mdWxsU2lnbnR4SGV4LFxuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBhbW91bnQ6IEVYUE9SVF9JTl9QLmFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgYW4gaW1wb3J0IHRvIEMtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogSU1QT1JUX0lOX0MuZnVsbFNpZ250eEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IElNUE9SVF9JTl9DLnRvLFxuICAgICAgICAgICAgYW1vdW50OiAnMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ0ltcG9ydFRvQycsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFuIGltcG9ydCB0byBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IElNUE9SVF9JTl9QLnNpZ25lZEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW10sXG4gICAgICAgIHR5cGU6ICdJbXBvcnQnLFxuICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IGV4cG9ydCB0cmFuc2FjdGlvbiB3aXRoIHdyb25nIGFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiBFWFBPUlRfSU5fQy5zaWduZWRIZXgsXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnJyxcbiAgICAgICAgICAgIGFtb3VudDogJzk5OTk5OTk5OTk5OScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1R4IHRvdGFsIGFtb3VudCAuKiBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aXRoIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogRVhQT1JUX0lOX0Muc2lnbmVkSGV4LFxuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBhbW91bnQ6IEVYUE9SVF9JTl9DLmFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiAnSW1wb3J0JyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnVHggdHlwZSBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHR5cGUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aG91dCB0eEhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiB3aXRoIGludmFsaWQgdHhIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogJ2ludmFsaWRoZXgnLFxuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IFJhdyB0cmFuc2FjdGlvbiBpcyBub3QgaGV4IHN0cmluZycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSBpbXBvcnQgdG8gQy1jaGFpbiB3aXRob3V0IHJlY2lwaWVudHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogSU1QT1JUX0lOX0MuZnVsbFNpZ250eEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW10sXG4gICAgICAgIHR5cGU6ICdJbXBvcnRUb0MnLFxuICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFeHBlY3RlZCAxIHJlY2lwaWVudCBpbiBpbXBvcnQgdHJhbnNhY3Rpb24nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1haW5uZXQgUC1jaGFpbiBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoU0VFRF9BQ0NPVU5ULmFkZHJlc3NNYWlubmV0KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0ZXN0bmV0IFAtY2hhaW4gYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKFNFRURfQUNDT1VOVC5hZGRyZXNzVGVzdG5ldCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYXJyYXkgb2YgUC1jaGFpbiBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhFWFBPUlRfSU5fQy5wQWRkcmVzc2VzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0aWxkZS1zZXBhcmF0ZWQgbXVsdGlzaWcgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG11bHRpU2lnQWRkcmVzcyA9IEVYUE9SVF9JTl9DLnBBZGRyZXNzZXMuam9pbignficpO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MobXVsdGlTaWdBZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBDLWNoYWluIGhleCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoRVhQT1JUX0lOX0MuY0hleEFkZHJlc3MpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGxvd2VyY2FzZSBDLWNoYWluIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhJTVBPUlRfSU5fQy50by50b0xvd2VyQ2FzZSgpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZhbGlkYXRlIHVuZGVmaW5lZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3ModW5kZWZpbmVkKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcygnJykuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgaW52YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoJ2ludmFsaWQtYWRkcmVzcycpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGFycmF5IHdpdGggaW52YWxpZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzc2VzID0gWy4uLkVYUE9SVF9JTl9DLnBBZGRyZXNzZXMsICdpbnZhbGlkJ107XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzZXMpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnV2FsbGV0IEFkZHJlc3MgVmVyaWZpY2F0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHdhbGxldCBhZGRyZXNzIHdpdGggbWF0Y2hpbmcga2V5Y2hhaW5zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpcnMgPSBbeyBwdWI6IFNFRURfQUNDT1VOVC5wdWJsaWNLZXkgfSwgeyBwdWI6IEFDQ09VTlRfMS5wdWJsaWNLZXkgfSwgeyBwdWI6IEFDQ09VTlRfMi5wdWJsaWNLZXkgfV07XG5cbiAgICAgIC8vIERlcml2ZSBhZGRyZXNzZXMgZnJvbSBwdWJsaWMga2V5cyB0byBlbnN1cmUgdGhleSBtYXRjaFxuICAgICAgY29uc3QgZGVyaXZlZEFkZHJlc3NlcyA9IGtleVBhaXJzLm1hcCgoa3ApID0+IG5ldyBGbHJwTGliLktleVBhaXIoeyBwdWI6IGtwLnB1YiB9KS5nZXRBZGRyZXNzKCd0ZXN0bmV0JykpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGRlcml2ZWRBZGRyZXNzZXMuam9pbignficpO1xuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAgYWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBrZXlQYWlycyxcbiAgICAgIH0pO1xuXG4gICAgICBpc1ZhbGlkLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBNUEMgd2FsbGV0IGFkZHJlc3Mgd2l0aCBzaW5nbGUga2V5Y2hhaW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gU0VFRF9BQ0NPVU5ULmFkZHJlc3NUZXN0bmV0O1xuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAgYWRkcmVzcyxcbiAgICAgICAga2V5Y2hhaW5zOiBbeyBwdWI6IFNFRURfQUNDT1VOVC5wdWJsaWNLZXkgfV0sXG4gICAgICB9KTtcblxuICAgICAgaXNWYWxpZC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgTVBDIHdhbGxldCBhZGRyZXNzIHRoYXQgZG9lcyBub3QgbWF0Y2gga2V5Y2hhaW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gU0VFRF9BQ0NPVU5ULmFkZHJlc3NUZXN0bmV0O1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICAgIGtleWNoYWluczogW3sgcHViOiBBQ0NPVU5UXzEucHVibGljS2V5IH1dLFxuICAgICAgICAgIH0pLFxuICAgICAgICAvYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgbXVsdGlzaWcgYWRkcmVzcyB3aXRoIHdyb25nIG51bWJlciBvZiBrZXljaGFpbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBUd28gdGlsZGUtc2VwYXJhdGVkIGFkZHJlc3NlcyBidXQgb25seSAyIGtleWNoYWluc1xuICAgICAgY29uc3QgYWRkcmVzcyA9IFNFRURfQUNDT1VOVC5hZGRyZXNzVGVzdG5ldCArICd+JyArIEFDQ09VTlRfMS5hZGRyZXNzVGVzdG5ldDtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgICAgICBrZXljaGFpbnM6IFt7IHB1YjogU0VFRF9BQ0NPVU5ULnB1YmxpY0tleSB9LCB7IHB1YjogQUNDT1VOVF8xLnB1YmxpY0tleSB9XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgL0ludmFsaWQga2V5Y2hhaW5zL1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIGludmFsaWQgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAgICBhZGRyZXNzOiAnaW52YWxpZCcsXG4gICAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIC9pbnZhbGlkIGFkZHJlc3MvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFkZHJlc3MgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGtleWNoYWluIGxlbmd0aCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBTRUVEX0FDQ09VTlQuYWRkcmVzc1Rlc3RuZXQ7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+XG4gICAgICAgIGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFkZHJlc3NlcyBkbyBub3QgbWF0Y2gga2V5Y2hhaW5zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gVXNlIGFkZHJlc3NlcyB0aGF0IGRvbid0IG1hdGNoIHRoZSBrZXljaGFpbnNcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBFWFBPUlRfSU5fQy5wQWRkcmVzc2VzLmpvaW4oJ34nKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoYXN5bmMgKCkgPT5cbiAgICAgICAgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNvdmVyeSBTaWduYXR1cmUnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIHNpZ25hdHVyZSBmcm9tIHNpZ25lZCBtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKFNFRURfQUNDT1VOVC5tZXNzYWdlLCAndXRmOCcpO1xuICAgICAgY29uc3QgcHJpdmF0ZUtleSA9IEJ1ZmZlci5mcm9tKFNFRURfQUNDT1VOVC5wcml2YXRlS2V5LCAnaGV4Jyk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBGbHJwTGliLlV0aWxzLmNyZWF0ZVNpZ25hdHVyZShiYXNlY29pbi5fc3RhdGljc0NvaW4ubmV0d29yaywgbWVzc2FnZSwgcHJpdmF0ZUtleSk7XG4gICAgICBjb25zdCBtZXNzYWdlSGFzaCA9IEZscnBMaWIuVXRpbHMuc2hhMjU2KG1lc3NhZ2UpO1xuICAgICAgY29uc3QgcmVjb3ZlcmVkUHViS2V5ID0gYmFzZWNvaW4ucmVjb3ZlcnlTaWduYXR1cmUobWVzc2FnZUhhc2gsIHNpZ25hdHVyZSk7XG5cbiAgICAgIHJlY292ZXJlZFB1YktleS5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgcmVjb3ZlcmVkUHViS2V5Lmxlbmd0aC5zaG91bGQuZXF1YWwoMzMpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGVsZWdhdGlvbiBUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGRlc2NyaWJlKCd2YWxpZGF0ZURlbGVnYXRpb25UeCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkU3Rha2luZ09wdGlvbnMgPSB7XG4gICAgICAgIG5vZGVJRDogJ05vZGVJRC1BSzdzUEJzWk05clF3c2UyM2FMaEVFQlBIWkQ1Z2tMckwnLFxuICAgICAgICBhbW91bnQ6ICc1MDAwMDAwMDAwMDAwMCcsIC8vIDUwLDAwMCBGTFIgaW4gbkZMUlxuICAgICAgICBkdXJhdGlvblNlY29uZHM6IDg2NDAwICogMTQsIC8vIDE0IGRheXNcbiAgICAgICAgcmV3YXJkQWRkcmVzczogJ0MtY29zdHdvMXV5cDVuNzZnanFsdHJkZHVyN3FscnNtdDNreWg4Zm5ybXdocWs3JyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZhbGlkRXhwbGFpbmVkVHggPSB7XG4gICAgICAgIG91dHB1dEFtb3VudDogJzUwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgICBmZWU6IHsgZmVlOiAnMTAwMCcgfSxcbiAgICAgIH07XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBjb3JyZWN0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0geyBzdGFraW5nT3B0aW9uczogdmFsaWRTdGFraW5nT3B0aW9ucyB9O1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHN0YWtpbmdPcHRpb25zIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge307XG4gICAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICAgKCkgPT4gYmFzZWNvaW4udmFsaWRhdGVEZWxlZ2F0aW9uVHgodHhQYXJhbXMsIHZhbGlkRXhwbGFpbmVkVHgpLFxuICAgICAgICAgIC9EZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHJlcXVpcmVzIHN0YWtpbmdPcHRpb25zL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBub2RlSUQgaGFzIGludmFsaWQgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICBzdGFraW5nT3B0aW9uczoge1xuICAgICAgICAgICAgLi4udmFsaWRTdGFraW5nT3B0aW9ucyxcbiAgICAgICAgICAgIG5vZGVJRDogJ0ludmFsaWRQcmVmaXgtMTIzJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSwgL0ludmFsaWQgbm9kZUlEIGZvcm1hdC8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBhbW91bnQgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgc3Rha2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkU3Rha2luZ09wdGlvbnMsXG4gICAgICAgICAgICBhbW91bnQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSxcbiAgICAgICAgICAvRGVsZWdhdGlvbiB0cmFuc2FjdGlvbiByZXF1aXJlcyBhbW91bnQvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGR1cmF0aW9uU2Vjb25kcyBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICBzdGFraW5nT3B0aW9uczoge1xuICAgICAgICAgICAgLi4udmFsaWRTdGFraW5nT3B0aW9ucyxcbiAgICAgICAgICAgIGR1cmF0aW9uU2Vjb25kczogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICAgKCkgPT4gYmFzZWNvaW4udmFsaWRhdGVEZWxlZ2F0aW9uVHgodHhQYXJhbXMsIHZhbGlkRXhwbGFpbmVkVHgpLFxuICAgICAgICAgIC9EZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHJlcXVpcmVzIGR1cmF0aW9uU2Vjb25kcy9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gcmV3YXJkQWRkcmVzcyBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICBzdGFraW5nT3B0aW9uczoge1xuICAgICAgICAgICAgLi4udmFsaWRTdGFraW5nT3B0aW9ucyxcbiAgICAgICAgICAgIHJld2FyZEFkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSxcbiAgICAgICAgICAvRGVsZWdhdGlvbiB0cmFuc2FjdGlvbiByZXF1aXJlcyByZXdhcmRBZGRyZXNzL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBvdXRwdXRBbW91bnQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgYW1vdW50JywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHsgc3Rha2luZ09wdGlvbnM6IHZhbGlkU3Rha2luZ09wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgbWlzbWF0Y2hlZEV4cGxhaW5lZFR4ID0ge1xuICAgICAgICAgIC4uLnZhbGlkRXhwbGFpbmVkVHgsXG4gICAgICAgICAgb3V0cHV0QW1vdW50OiAnNjAwMDAwMDAwMDAwMDAnLCAvLyBEaWZmZXJlbnQgZnJvbSBleHBlY3RlZCA1MDAwMDAwMDAwMDAwMFxuICAgICAgICB9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCBtaXNtYXRjaGVkRXhwbGFpbmVkVHgpLFxuICAgICAgICAgIC9EZWxlZ2F0aW9uIGFtb3VudCBtaXNtYXRjaC9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnTVBDL1RTUyBDb2luLUxldmVsIE1ldGhvZHMnLCAoKSA9PiB7XG4gICAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndGZscnAnKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IEZscnBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcblxuICAgIC8vIEhlbHBlcjogYnVpbGQgdW5zaWduZWQgTVBDIEV4cG9ydEluQyB0eCBhbmQgcmV0dXJuIGl0cyBoZXhcbiAgICBhc3luYyBmdW5jdGlvbiBidWlsZFVuc2lnbmVkRXhwb3J0SW5DKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRFeHBvcnRJbkNCdWlsZGVyKClcbiAgICAgICAgLmZyb21QdWJLZXkoRVhQT1JUX0lOX0MuY0hleEFkZHJlc3MpXG4gICAgICAgIC5ub25jZShFWFBPUlRfSU5fQy5ub25jZSlcbiAgICAgICAgLmFtb3VudChFWFBPUlRfSU5fQy5hbW91bnQpXG4gICAgICAgIC50aHJlc2hvbGQoMSlcbiAgICAgICAgLmxvY2t0aW1lKDApXG4gICAgICAgIC50byhPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3MpXG4gICAgICAgIC5mZWUoRVhQT1JUX0lOX0MuZmVlKVxuICAgICAgICAuY29udGV4dChDT05URVhUIGFzIEZscnBDb250ZXh0KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHJldHVybiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH1cblxuICAgIC8vIEhlbHBlcjogYnVpbGQgdW5zaWduZWQgTVBDIEltcG9ydEluUCB0eCBhbmQgcmV0dXJuIGl0cyBoZXhcbiAgICBhc3luYyBmdW5jdGlvbiBidWlsZFVuc2lnbmVkSW1wb3J0SW5QKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBtcGNVdHhvID0ge1xuICAgICAgICBvdXRwdXRJRDogNyxcbiAgICAgICAgYW1vdW50OiAnNTAwMDAwMDAnLFxuICAgICAgICB0eGlkOiAnYUx3VlFlcXVtYmhoamZoTDZTdmZNNk1HV0FCOHdId1FmSjY3ZW93RWJBRVVwa3VlTicsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzXSxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIGxvY2t0aW1lOiAnMCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0SW1wb3J0SW5QQnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQoMSlcbiAgICAgICAgLmxvY2t0aW1lKDApXG4gICAgICAgIC5mcm9tUHViS2V5KFtPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLmNvcmV0aEFkZHJlc3NdKVxuICAgICAgICAudG8oW09OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzc10pXG4gICAgICAgIC5leHRlcm5hbENoYWluSWQoSU1QT1JUX0lOX1Auc291cmNlQ2hhaW5JZClcbiAgICAgICAgLmRlY29kZWRVdHhvcyhbbXBjVXR4b10pXG4gICAgICAgIC5jb250ZXh0KElNUE9SVF9JTl9QLmNvbnRleHQgYXMgRmxycENvbnRleHQpXG4gICAgICAgIC5mZWVTdGF0ZShJTVBPUlRfSU5fUC5mZWVTdGF0ZSBhcyBhbnkpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyOiBidWlsZCB1bnNpZ25lZCBNUEMgRXhwb3J0SW5QIHR4IGFuZCByZXR1cm4gaXRzIGhleFxuICAgIGFzeW5jIGZ1bmN0aW9uIGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGNvbnN0IG1wY1V0eG8gPSB7XG4gICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICBhbW91bnQ6ICc1MDAwMDAwMCcsXG4gICAgICAgIHR4aWQ6ICdiZ0huRUo2NHRkOHUzMWFackdEYVdjRHF4Wjh2RFY1cUdkN2JtU2lmZ3ZVblVXOHYyJyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICBhZGRyZXNzZXM6IFtPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3NdLFxuICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgbG9ja3RpbWU6ICcwJyxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRFeHBvcnRJblBCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCgxKVxuICAgICAgICAubG9ja3RpbWUoMClcbiAgICAgICAgLmZyb21QdWJLZXkoW09OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzc10pXG4gICAgICAgIC5hbW91bnQoJzMwMDAwMDAwJylcbiAgICAgICAgLmV4dGVybmFsQ2hhaW5JZChFWFBPUlRfSU5fUC5zb3VyY2VDaGFpbklkKVxuICAgICAgICAuZGVjb2RlZFV0eG9zKFttcGNVdHhvXSlcbiAgICAgICAgLmNvbnRleHQoRVhQT1JUX0lOX1AuY29udGV4dCBhcyBGbHJwQ29udGV4dClcbiAgICAgICAgLmZlZVN0YXRlKEVYUE9SVF9JTl9QLmZlZVN0YXRlIGFzIGFueSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9XG5cbiAgICAvLyBIZWxwZXI6IGJ1aWxkIHVuc2lnbmVkIE1QQyBJbXBvcnRJbkMgdHggYW5kIHJldHVybiBpdHMgaGV4XG4gICAgYXN5bmMgZnVuY3Rpb24gYnVpbGRVbnNpZ25lZEltcG9ydEluQygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgY29uc3QgbXBjVXR4byA9IHtcbiAgICAgICAgb3V0cHV0SUQ6IDcsXG4gICAgICAgIGFtb3VudDogJzMwMDAwMDAwJyxcbiAgICAgICAgdHhpZDogJ25TQndOY2dmTGJrNVM0MjViMXFhWWFxVFRDaU1DVjc1S1U0RmJucThTUFVVcUxxMicsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzXSxcbiAgICAgICAgb3V0cHV0aWR4OiAnMScsXG4gICAgICAgIGxvY2t0aW1lOiAnMCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0SW1wb3J0SW5DQnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQoMSlcbiAgICAgICAgLmxvY2t0aW1lKDApXG4gICAgICAgIC5mcm9tUHViS2V5KFtPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3NdKVxuICAgICAgICAudG8oJzB4OTY5OTNCQUViNkFhRTJlMDZCRjk1RjE0NGUyNzc1RDRmOGVmYkQzNScpXG4gICAgICAgIC5mZWUoJzEwMDAwMDAnKVxuICAgICAgICAuZGVjb2RlZFV0eG9zKFttcGNVdHhvXSlcbiAgICAgICAgLmNvbnRleHQoSU1QT1JUX0lOX0MuY29udGV4dCBhcyBGbHJwQ29udGV4dCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9XG5cbiAgICBkZXNjcmliZSgnZ2V0U2lnbmFibGVQYXlsb2FkJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gc2lnbmFibGUgcGF5bG9hZCBmb3IgRXhwb3J0SW5DJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG5cbiAgICAgICAgcGF5bG9hZC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgICBwYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gc2lnbmFibGUgcGF5bG9hZCBmb3IgSW1wb3J0SW5QJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG5cbiAgICAgICAgcGF5bG9hZC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgICBwYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gc2lnbmFibGUgcGF5bG9hZCBmb3IgRXhwb3J0SW5QJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG5cbiAgICAgICAgcGF5bG9hZC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgICBwYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gc2lnbmFibGUgcGF5bG9hZCBmb3IgSW1wb3J0SW5DJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG5cbiAgICAgICAgcGF5bG9hZC5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgICBwYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdhZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjb21wbGV0ZSBnZXRTaWduYWJsZVBheWxvYWQg4oaSIHNpZ24g4oaSIGFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24gcm91bmQtdHJpcCBmb3IgRXhwb3J0SW5DJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJbkMoKTtcblxuICAgICAgICAvLyBHZXQgc2lnbmFibGUgcGF5bG9hZCAod2hhdCBNUEMgY2VyZW1vbnkgd291bGQgcmVjZWl2ZSlcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG5cbiAgICAgICAgLy8gU2ltdWxhdGUgTVBDOiBzaWduIGV4dGVybmFsbHlcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2VjcDI1NmsxLnNpZ24ocGF5bG9hZCwgQnVmZmVyLmZyb20oT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wcml2YXRlS2V5LCAnaGV4JykpO1xuXG4gICAgICAgIC8vIEluamVjdCBzaWduYXR1cmVcbiAgICAgICAgY29uc3Qgc2lnbmVkSGV4ID0gYXdhaXQgYmFzZWNvaW4uYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvbih0eEhleCwgQnVmZmVyLmZyb20oc2lnbmF0dXJlKSk7XG4gICAgICAgIHNpZ25lZEhleC5zaG91bGQubm90LmVxdWFsKHR4SGV4KTtcblxuICAgICAgICAvLyBWZXJpZnkgc2lnbmVkIHR4IGNhbiBiZSBwYXJzZWRcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHNpZ25lZEhleCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC50b0pzb24oKS50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNvbXBsZXRlIHJvdW5kLXRyaXAgZm9yIEltcG9ydEluUCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBzZWNwMjU2azEuc2lnbihwYXlsb2FkLCBCdWZmZXIuZnJvbShPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnByaXZhdGVLZXksICdoZXgnKSk7XG4gICAgICAgIGNvbnN0IHNpZ25lZEhleCA9IGF3YWl0IGJhc2Vjb2luLmFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24odHhIZXgsIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuXG4gICAgICAgIHNpZ25lZEhleC5zaG91bGQubm90LmVxdWFsKHR4SGV4KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5LmZyb20oc2lnbmVkSGV4KS5idWlsZCgpO1xuICAgICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHgudG9Kc29uKCkudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkltcG9ydCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBjb21wbGV0ZSByb3VuZC10cmlwIGZvciBFeHBvcnRJblAnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluUCgpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHR4SGV4KTtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2VjcDI1NmsxLnNpZ24ocGF5bG9hZCwgQnVmZmVyLmZyb20oT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wcml2YXRlS2V5LCAnaGV4JykpO1xuICAgICAgICBjb25zdCBzaWduZWRIZXggPSBhd2FpdCBiYXNlY29pbi5hZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uKHR4SGV4LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcblxuICAgICAgICBzaWduZWRIZXguc2hvdWxkLm5vdC5lcXVhbCh0eEhleCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeS5mcm9tKHNpZ25lZEhleCkuYnVpbGQoKTtcbiAgICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIHR4LnRvSnNvbigpLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgY29tcGxldGUgcm91bmQtdHJpcCBmb3IgSW1wb3J0SW5DJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNlY3AyNTZrMS5zaWduKHBheWxvYWQsIEJ1ZmZlci5mcm9tKE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucHJpdmF0ZUtleSwgJ2hleCcpKTtcbiAgICAgICAgY29uc3Qgc2lnbmVkSGV4ID0gYXdhaXQgYmFzZWNvaW4uYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvbih0eEhleCwgQnVmZmVyLmZyb20oc2lnbmF0dXJlKSk7XG5cbiAgICAgICAgc2lnbmVkSGV4LnNob3VsZC5ub3QuZXF1YWwodHhIZXgpO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnkuZnJvbShzaWduZWRIZXgpLmJ1aWxkKCk7XG4gICAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC50b0pzb24oKS50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuSW1wb3J0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHByb2R1Y2UgdmFsaWQgc2lnbmVkIHR4IHZpYSBib3RoIHNpZ24oKSBhbmQgYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvbigpIGZvciBFeHBvcnRJbkMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnByaXZhdGVLZXk7XG5cbiAgICAgICAgLy8gUGF0aCAxOiBzaWduKCkgdmlhIHNpZ25UcmFuc2FjdGlvblxuICAgICAgICBjb25zdCBzaWduUmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5DKCkgfSxcbiAgICAgICAgICBwcnY6IHByaXZhdGVLZXksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaWduZWRIZXgxID0gKHNpZ25SZXN1bHQgYXMgSGFsZlNpZ25lZEFjY291bnRUcmFuc2FjdGlvbikuaGFsZlNpZ25lZCEudHhIZXghO1xuXG4gICAgICAgIC8vIFBhdGggMjogZ2V0U2lnbmFibGVQYXlsb2FkIOKGkiBleHRlcm5hbCBzaWduIOKGkiBhZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uXG4gICAgICAgIGNvbnN0IHVuc2lnbmVkSGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluQygpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHVuc2lnbmVkSGV4KTtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2VjcDI1NmsxLnNpZ24ocGF5bG9hZCwgQnVmZmVyLmZyb20ocHJpdmF0ZUtleSwgJ2hleCcpKTtcbiAgICAgICAgY29uc3Qgc2lnbmVkSGV4MiA9IGF3YWl0IGJhc2Vjb2luLmFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24odW5zaWduZWRIZXgsIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuXG4gICAgICAgIC8vIEJvdGggcGF0aHMgc2hvdWxkIHByb2R1Y2UgdmFsaWQgc2lnbmVkIHRyYW5zYWN0aW9ucyB3aXRoIDEgc2lnbmF0dXJlXG4gICAgICAgIGNvbnN0IHR4MSA9IGF3YWl0IGZhY3RvcnkuZnJvbShzaWduZWRIZXgxKS5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eDIgPSBhd2FpdCBmYWN0b3J5LmZyb20oc2lnbmVkSGV4MikuYnVpbGQoKTtcbiAgICAgICAgdHgxLnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eDIuc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIHR4MS50b0pzb24oKS50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgICAgdHgyLnRvSnNvbigpLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndmVyaWZ5VHJhbnNhY3Rpb24gd2l0aCBNUEMgcGFyYW1zJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgTVBDIEV4cG9ydEluQyB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5DKCk7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SGV4LCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzcywgYW1vdW50OiBFWFBPUlRfSU5fQy5hbW91bnQgfV0sXG4gICAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IE1QQyBJbXBvcnRJblAgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEltcG9ydEluUCgpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgICB0eXBlOiAnSW1wb3J0JyxcbiAgICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgTVBDIEV4cG9ydEluUCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SGV4LCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzcywgYW1vdW50OiAnMzAwMDAwMDAnIH1dLFxuICAgICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBNUEMgSW1wb3J0SW5DIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXgsIHR4SW5mbzoge30gfTtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4OTY5OTNCQUViNkFhRTJlMDZCRjk1RjE0NGUyNzc1RDRmOGVmYkQzNScsIGFtb3VudDogJzEnIH1dLFxuICAgICAgICAgIHR5cGU6ICdJbXBvcnRUb0MnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHdoZW4gdHhQYXJhbXMudHlwZSBpcyB0aGUgXCJzdGFrZVwiIGludGVudCBhbGlhcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXg6IE1VTFRJU0lHX0RFTEVHQVRJT05fRlVMTFlfU0lHTkVEX1RYX0hFWCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICB0eXBlOiAnc3Rha2UnLCAvLyBpbnRlbnQtdHlwZSBhbGlhcyB1c2VkIGJ5IHdhbGxldC1wbGF0Zm9ybTsgbXVzdCBub3JtYWxpc2UgdG8gQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JcbiAgICAgICAgICBzdGFraW5nT3B0aW9uczoge1xuICAgICAgICAgICAgbm9kZUlEOiBNVUxUSVNJR19ERUxFR0FUSU9OX1BBUkFNUy5ub2RlSUQsXG4gICAgICAgICAgICBhbW91bnQ6IE1VTFRJU0lHX0RFTEVHQVRJT05fUEFSQU1TLnN0YWtlQW1vdW50LFxuICAgICAgICAgICAgZHVyYXRpb25TZWNvbmRzOiBNVUxUSVNJR19ERUxFR0FUSU9OX1BBUkFNUy5kdXJhdGlvbiAqIDI0ICogNjAgKiA2MCxcbiAgICAgICAgICAgIHJld2FyZEFkZHJlc3M6IE1VTFRJU0lHX0RFTEVHQVRJT05fUEFSQU1TLnJld2FyZEFkZHJlc3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiB3aGVuIHR4UGFyYW1zLnR5cGUgaXMgdW5kZWZpbmVkIChNUEMgaW50ZW50IGZsb3cpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBJbiB0aGUgTVBDL1RTUyBzdGFraW5nIGZsb3csIHRoZSB0eFJlcXVlc3QgaXMgY3JlYXRlZCBieSBzdGFraW5nLXNlcnZpY2UgKG5vdCB0aGUgVUkpLlxuICAgICAgICAvLyBUaGUgVUkgb25seSBoYXMgdHhSZXF1ZXN0SWQg4oCUIG5vIGJ1aWxkUGFyYW1zLiBUaGUgU0RLIGZhbGxzIGJhY2sgdG8geyByZWNpcGllbnRzOiBbXSB9XG4gICAgICAgIC8vIHdpdGggbm8gdHlwZSBhbmQgbm8gc3Rha2luZ09wdGlvbnMuIHZlcmlmeVRyYW5zYWN0aW9uIG11c3Qgc3RpbGwgcGFzcyBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBwYXJzZWQgaGV4IChleHBsYWluZWRUeC50eXBlKSBpcyB0aGUgc291cmNlIG9mIHRydXRoIGJ1aWx0IGJ5IHdhbGxldC1wbGF0Zm9ybS5cbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXg6IE1QQ19ERUxFR0FUSU9OX1VOU0lHTkVEX1RYX0hFWCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgICAvLyBubyB0eXBlIOKAlCBzaW11bGF0ZXMgTVBDIHN0YWtpbmcgZmxvdyB3aGVyZSBidWlsZFBhcmFtcyBpcyB1bmF2YWlsYWJsZVxuICAgICAgICAgIC8vIG5vIHN0YWtpbmdPcHRpb25zIOKAlCBub3QgcGFzc2VkIHRocm91Z2ggaW4gdGhlIE1QQyBpbnRlbnQgZmxvd1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZlcmlmeVRyYW5zYWN0aW9uIHdpdGggVFNTIHdhbGxldCAoQXZhbGFuY2hlIGF0b21pYyknLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBUU1MgRXhwb3J0SW5QIHdoZW4gcGFzc2VkIHNlcmlhbGl6ZWRUeEhleCAobm90IHNpZ25hYmxlSGV4KScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gVGhlIFNESydzIHNpZ25SZXF1ZXN0QmFzZSBub3cgcGFzc2VzIHNlcmlhbGl6ZWRUeEhleCAodGhlIGZ1bGxcbiAgICAgICAgLy8gUFZNIHRyYW5zYWN0aW9uIGJ5dGVzKSB0byB2ZXJpZnlUcmFuc2FjdGlvbiBmb3IgQXZhbGFuY2hlIGF0b21pYyB0eHMsXG4gICAgICAgIC8vIGluc3RlYWQgb2Ygc2lnbmFibGVIZXggKGEgMzItYnl0ZSBTSEEtMjU2IGhhc2ggdGhhdCBjYW4ndCBiZSBwYXJzZWQpLlxuICAgICAgICAvLyBUaGlzIHRlc3QgY29uZmlybXMgdmVyaWZ5VHJhbnNhY3Rpb24gc3VjY2VlZHMgd2l0aCB0aGUgYWN0dWFsIHR4IGJ5dGVzLlxuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXgsIHR4SW5mbzoge30gfTtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzLCBhbW91bnQ6ICczMDAwMDAwMCcgfV0sXG4gICAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIEltcG9ydEluUCB3aGVuIHBhc3NlZCBzZXJpYWxpemVkVHhIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEltcG9ydEluUCgpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3MsIGFtb3VudDogJzEnIH1dLFxuICAgICAgICAgIHR5cGU6ICdJbXBvcnQnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IFRTUyBJbXBvcnRJbkMgd2hlbiBwYXNzZWQgc2VyaWFsaXplZFR4SGV4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXgsIHR4SW5mbzoge30gfTtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4OTY5OTNCQUViNkFhRTJlMDZCRjk1RjE0NGUyNzc1RDRmOGVmYkQzNScsIGFtb3VudDogJzEnIH1dLFxuICAgICAgICAgIHR5cGU6ICdJbXBvcnRUb0MnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgICB3YWxsZXRUeXBlOiAndHNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdpc1NpZ25hYmxlUHJlSGFzaGVkIHNob3VsZCBiZSB0cnVlIGZvciBBdmFsYW5jaGUgYXRvbWljIHR4cycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHJhd0hleCA9IHR4SGV4LnN0YXJ0c1dpdGgoJzB4JykgPyB0eEhleC5zdWJzdHJpbmcoMikgOiB0eEhleDtcbiAgICAgICAgY29uc3Qgc2lnbmFibGVIZXggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoQnVmZmVyLmZyb20ocmF3SGV4LCAnaGV4JykpLmRpZ2VzdCgnaGV4Jyk7XG5cbiAgICAgICAgYmFzZWNvaW4uaXNTaWduYWJsZVByZUhhc2hlZCh7IHNlcmlhbGl6ZWRUeEhleDogcmF3SGV4LCBzaWduYWJsZUhleCB9KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICAgIGJhc2Vjb2luXG4gICAgICAgICAgLmlzU2lnbmFibGVQcmVIYXNoZWQoeyBzZXJpYWxpemVkVHhIZXg6ICdmODZjODA4NTA0YTgxN2M4MDA4MjUyMDgnLCBzaWduYWJsZUhleDogJ2Y4NmM4MDg1MDRhODE3YzgwMDgyNTIwOCcgfSlcbiAgICAgICAgICAuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBzaWduYWJsZVBheWxvYWQgaXMgU0hBLTI1NiBvZiBzZXJpYWxpemVkIHR4IChzYW5kYm94LXZlcmlmaWVkKScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gdW5zaWduZWRUeC50b0J5dGVzKCkg4oaSIHNoYTI1NiDihpIgTVBDLnNpZ24oKVxuICAgICAgICAvLyBUaGUgc2lnbmFibGVQYXlsb2FkIG11c3QgYmUgZXhhY3RseSAzMiBieXRlcyAoU0hBLTI1NiBkaWdlc3QpLlxuICAgICAgICAvLyBUaGlzIGlzIHdoYXQgdGhlIFdQIHN0b3JlcyBhcyBzaWduYWJsZUhleCBhbmQgd2hhdCBlY2RzYU1QQ3YyLnRzXG4gICAgICAgIC8vIG11c3QgdXNlIGRpcmVjdGx5IChubyBrZWNjYWsyNTYgcmUtaGFzaGluZykuXG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluUCgpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHR4SGV4KTtcblxuICAgICAgICAvLyBzaWduYWJsZVBheWxvYWQgaXMgU0hBLTI1Nih0eEJvZHkpIOKAlCBhbHdheXMgMzIgYnl0ZXNcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBheWxvYWQubGVuZ3RoLCAzMiwgJ3NpZ25hYmxlUGF5bG9hZCBtdXN0IGJlIDMyIGJ5dGVzIChTSEEtMjU2KScpO1xuXG4gICAgICAgIC8vIFRoZSBzZXJpYWxpemVkVHhIZXggKGFmdGVyIHN0cmlwcGluZyAweCkgc3RhcnRzIHdpdGggQXZhbGFuY2hlIGNvZGVjICcwMDAwJ1xuICAgICAgICAvLyBUaGlzIGlzIGhvdyBlY2RzYU1QQ3YyLnRzIGRldGVjdHMgYXRvbWljIHRyYW5zYWN0aW9uc1xuICAgICAgICBjb25zdCByYXdIZXggPSB0eEhleC5zdGFydHNXaXRoKCcweCcpID8gdHhIZXguc3Vic3RyaW5nKDIpIDogdHhIZXg7XG4gICAgICAgIGFzc2VydC5vayhyYXdIZXguc3RhcnRzV2l0aCgnMDAwMCcpLCAnQXZhbGFuY2hlIGF0b21pYyB0eCBtdXN0IHN0YXJ0IHdpdGggY29kZWMgcHJlZml4IDAwMDAnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBhIFNIQS0yNTYgaGFzaCBhcyB0eEhleCAocHJvdmVzIHRoZSBmaXggaXMgbmVlZGVkKScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hhMjU2SGFzaCA9ICdhJy5yZXBlYXQoNjQpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleDogc2hhMjU2SGFzaCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHsgcmVjaXBpZW50czogW10sIHR5cGU6ICdFeHBvcnQnLCBsb2NrdGltZTogMCB9O1xuXG4gICAgICAgIGxldCB0aHJldyA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldFR5cGU6ICd0c3MnIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyZXcgPSB0cnVlO1xuICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UuaW5jbHVkZXMoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKSwgYEV4cGVjdGVkICdJbnZhbGlkIHRyYW5zYWN0aW9uJywgZ290OiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBhc3NlcnQodGhyZXcsICdFeHBlY3RlZCB2ZXJpZnlUcmFuc2FjdGlvbiB0byB0aHJvdyBmb3IgU0hBLTI1NiBoYXNoIGFzIHR4SGV4Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZVBhaXJlZFdhbGxldCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXRJZCA9ICdhYmMxMjNkZWY0NTZhYmMxMjNkZWY0NTZhYmMxMjNkZSc7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBQT1NUIHRvIGNyZWF0ZS1wYWlyZWQtd2FsbGV0IGFuZCByZXR1cm4gbmV3IHdhbGxldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXNwb25zZTogQ3JlYXRlUGFpcmVkV2FsbGV0UmVzcG9uc2UgPSB7XG4gICAgICAgIGlkOiAnbmV3d2FsbGV0aWQwMDAwMDAwMDAwMDAwMDAwMDAwMDEnLFxuICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgIGxhYmVsOiAnTXkgRkxSIEMgV2FsbGV0JyxcbiAgICAgICAga2V5czogWydrZXkxJywgJ2tleTInLCAna2V5MyddLFxuICAgICAgICBrZXlTaWduYXR1cmVzOiB7IGJhY2t1cFB1YjogJ3NpZzEnLCBiaXRnb1B1YjogJ3NpZzInIH0sXG4gICAgICAgIG06IDIsXG4gICAgICAgIG46IDMsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICBwYWlyZWRXYWxsZXRJZDogd2FsbGV0SWQsXG4gICAgICAgICAgYmFzZUFkZHJlc3M6ICcweDYyNzMwNjA5MGFiYUIzQTZlMTQwMGU5MzQ1YkM2MGM3OGE4QkVmNTcnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvdGZscnAvd2FsbGV0LyR7d2FsbGV0SWR9L2NyZWF0ZS1wYWlyZWQtd2FsbGV0YCwgeyBsYWJlbDogJ015IEZMUiBDIFdhbGxldCcgfSlcbiAgICAgICAgLnJlcGx5KDIwMCwgZXhwZWN0ZWRSZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLmNyZWF0ZVBhaXJlZFdhbGxldCh7IHdhbGxldElkLCBsYWJlbDogJ015IEZMUiBDIFdhbGxldCcgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZFJlc3BvbnNlKTtcbiAgICAgIHJlc3VsdC5jb2luLnNob3VsZC5lcXVhbCgndGZscicpO1xuICAgICAgcmVzdWx0LmNvaW5TcGVjaWZpYy5wYWlyZWRXYWxsZXRJZC5zaG91bGQuZXF1YWwod2FsbGV0SWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBQT1NUIHdpdGhvdXQgYm9keSB3aGVuIGxhYmVsIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXNwb25zZTogQ3JlYXRlUGFpcmVkV2FsbGV0UmVzcG9uc2UgPSB7XG4gICAgICAgIGlkOiAnbmV3d2FsbGV0aWQwMDAwMDAwMDAwMDAwMDAwMDAwMDInLFxuICAgICAgICBjb2luOiAndGZscicsXG4gICAgICAgIGxhYmVsOiAnRkxSIEMgd2FsbGV0IChmcm9tIHRmbHJwIHdhbGxldCBhYmMxMjNkZWY0NTZhYmMxMjNkZWY0NTZhYmMxMjNkZSknLFxuICAgICAgICBrZXlzOiBbJ2tleTEnLCAna2V5MicsICdrZXkzJ10sXG4gICAgICAgIGtleVNpZ25hdHVyZXM6IHt9LFxuICAgICAgICBtOiAyLFxuICAgICAgICBuOiAzLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgICAgY29pblNwZWNpZmljOiB7IHBhaXJlZFdhbGxldElkOiB3YWxsZXRJZCB9LFxuICAgICAgfTtcblxuICAgICAgbm9jayhiZ1VybCkucG9zdChgL2FwaS92Mi90ZmxycC93YWxsZXQvJHt3YWxsZXRJZH0vY3JlYXRlLXBhaXJlZC13YWxsZXRgLCB7fSkucmVwbHkoMjAwLCBleHBlY3RlZFJlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlUGFpcmVkV2FsbGV0KHsgd2FsbGV0SWQgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZFJlc3BvbnNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvcGFnYXRlIEhUVFAgZXJyb3JzIGZyb20gdGhlIHNlcnZlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi90ZmxycC93YWxsZXQvJHt3YWxsZXRJZH0vY3JlYXRlLXBhaXJlZC13YWxsZXRgKVxuICAgICAgICAucmVwbHkoNDAwLCB7IGVycm9yOiAnU291cmNlIEZMUiBQIHdhbGxldCBpcyBub3QgTVBDIChtdWx0aXNpZ1R5cGU6IG9uY2hhaW4pJyB9KTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLmNyZWF0ZVBhaXJlZFdhbGxldCh7IHdhbGxldElkIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdTb3VyY2UgRkxSIFAgd2FsbGV0IGlzIG5vdCBNUEMgKG11bHRpc2lnVHlwZTogb25jaGFpbiknKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
1011
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxycC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9mbHJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXlDO0FBQ3pDLDhDQUEwRDtBQUMxRCxvQ0FBeUM7QUFDekMsbUNBQWlEO0FBQ2pELDRDQUEwQztBQUMxQyw0Q0FBdUM7QUFDdkMsa0RBQXlHO0FBQ3pHLHNFQUFxRTtBQUNyRSxzRUFBcUU7QUFDckUsc0VBQXFFO0FBQ3JFLHNFQUFxRTtBQUNyRSw0RkFJMkQ7QUFDM0QsOENBQXNHO0FBQ3RHLG1EQUFrRDtBQUVsRCxvREFBNEI7QUFDNUIsZ0RBQXdCO0FBR3hCLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNqQyxJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFFYixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLHNCQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsbUJBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxtQkFBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFFaEgsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUU7WUFDbkMsR0FBRyxFQUFFLE1BQU07U0FDWixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsV0FBSyxDQUFDLGNBQWMsQ0FBQyxD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RSxLQUFLO2dCQUNYLFlBQVksRUFBRSxLQUFLO2dCQUNuQixZQUFZLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO2FBQzNDLENBQUM7WUFFRixJQUFBLGNBQUksRUFBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLFFBQVEsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTNHLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMvRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7WUFDdEQsTUFBTSxLQUFLLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRXRELElBQUEsY0FBSSxFQUFDLEtBQUssQ0FBQztpQkFDUixJQUFJLENBQUMsd0JBQXdCLFFBQVEsdUJBQXVCLENBQUM7aUJBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsd0RBQXdELEVBQUUsQ0FBQyxDQUFDO1lBRW5GLE1BQU0sUUFBUTtpQkFDWCxrQkFBa0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO2lCQUNoQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZscnBMaWIgZnJvbSAnLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBGbHJwLCBUZmxyUCB9IGZyb20gJy4uLy4uL3NyYy8nO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCwgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFNFRURfQUNDT1VOVCwgQUNDT1VOVF8xLCBBQ0NPVU5UXzIsIE9OX0NIQUlOX1RFU1RfV0FMTEVULCBDT05URVhUIH0gZnJvbSAnLi4vcmVzb3VyY2VzL2FjY291bnQnO1xuaW1wb3J0IHsgRVhQT1JUX0lOX0MgfSBmcm9tICcuLi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25EYXRhL2V4cG9ydEluQyc7XG5pbXBvcnQgeyBFWFBPUlRfSU5fUCB9IGZyb20gJy4uL3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvZXhwb3J0SW5QJztcbmltcG9ydCB7IElNUE9SVF9JTl9QIH0gZnJvbSAnLi4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uRGF0YS9pbXBvcnRJblAnO1xuaW1wb3J0IHsgSU1QT1JUX0lOX0MgfSBmcm9tICcuLi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25EYXRhL2ltcG9ydEluQyc7XG5pbXBvcnQge1xuICBNVUxUSVNJR19ERUxFR0FUSU9OX0ZVTExZX1NJR05FRF9UWF9IRVgsXG4gIE1VTFRJU0lHX0RFTEVHQVRJT05fUEFSQU1TLFxuICBNUENfREVMRUdBVElPTl9VTlNJR05FRF9UWF9IRVgsXG59IGZyb20gJy4uL3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvbXVsdGlzaWdEZWxlZ2F0aW9uVHgnO1xuaW1wb3J0IHsgSGFsZlNpZ25lZEFjY291bnRUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlLCBNUENBbGdvcml0aG0sIGNvbW1vbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBzZWNwMjU2azEgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgRmxycENvbnRleHQgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IHsgQ3JlYXRlUGFpcmVkV2FsbGV0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi9zcmMvbGliL2lmYWNlJztcblxuZGVzY3JpYmUoJ0ZscnAgdGVzdCBjYXNlcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbk5hbWUgPSAnZmxycCc7XG4gIGNvbnN0IHRjb2luTmFtZSA9ICd0JyArIGNvaW5OYW1lO1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuXG4gIGNvbnN0IGtleWNoYWlucyA9IFt7IHB1YjogU0VFRF9BQ0NPVU5ULnB1YmxpY0tleSB9LCB7IHB1YjogQUNDT1VOVF8xLnB1YmxpY0tleSB9LCB7IHB1YjogQUNDT1VOVF8yLnB1YmxpY0tleSB9XTtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7XG4gICAgICBlbnY6ICdtb2NrJyxcbiAgICB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoY29pbk5hbWUsIEZscnAuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3Rlcih0Y29pbk5hbWUsIFRmbHJQLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4odGNvaW5OYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbnN0YW50aWF0ZSB0aGUgY29pbicsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgbG9jYWxCYXNlY29pbiA9IGJpdGdvLmNvaW4odGNvaW5OYW1lKTtcbiAgICBsb2NhbEJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFRmbHJQKTtcblxuICAgIGxvY2FsQmFzZWNvaW4gPSBiaXRnby5jb2luKGNvaW5OYW1lKTtcbiAgICBsb2NhbEJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZscnApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiAnICsgdGNvaW5OYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwodGNvaW5OYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gZnVsbCBuYW1lJywgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IEZsYXJlIFAtQ2hhaW4nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYmFzZSBmYWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZWNvaW4uZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBjb2luIGZhbWlseScsIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlY29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ2ZscnAnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gZGVmYXVsdCBtdWx0aXNpZyB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgIGJhc2Vjb2luLmdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKS5zaG91bGQuZXF1YWwoJ29uY2hhaW4nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IFRTUycsIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlY29pbi5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gZWNkc2EgYXMgTVBDIGFsZ29yaXRobScsIGZ1bmN0aW9uICgpIHtcbiAgICAoYmFzZWNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgYXMgTVBDQWxnb3JpdGhtKS5zaG91bGQuZXF1YWwoJ2VjZHNhJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlwYWlyczonLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIGtleXBhaXIgZnJvbSByYW5kb20gc2VlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGtleVBhaXIuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3B1YicpO1xuICAgICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJ2Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIGEgc2VlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlZWQgPSBCdWZmZXIuZnJvbShTRUVEX0FDQ09VTlQuc2VlZCwgJ2hleCcpO1xuICAgICAgY29uc3Qga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgICAgIGtleVBhaXIucHViLnNob3VsZC5lcXVhbChTRUVEX0FDQ09VTlQucHVibGljS2V5KTtcbiAgICAgIGtleVBhaXIucHJ2LnNob3VsZC5lcXVhbChTRUVEX0FDQ09VTlQucHJpdmF0ZUtleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoU0VFRF9BQ0NPVU5ULnB1YmxpY0tleSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YihBQ0NPVU5UXzEucHVibGljS2V5KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgYW4gaW52YWxpZCBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1YignaW52YWxpZCcpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgcHJpdmF0ZSBrZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KFNFRURfQUNDT1VOVC5wcml2YXRlS2V5KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHJ2KEFDQ09VTlRfMS5wcml2YXRlS2V5KS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgYW4gaW52YWxpZCBwcml2YXRlIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQcnYoJ2ludmFsaWQnKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gYW4gZXhwb3J0IGZyb20gQy1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBFWFBPUlRfSU5fQy51bnNpZ25lZEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiBFWFBPUlRfSU5fQy5wcml2YXRlS2V5LFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBiYXNlY29pbi5zaWduVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgICAgIHNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdoYWxmU2lnbmVkJyk7XG4gICAgICBjb25zdCBoYWxmU2lnbmVkID0gKHNpZ25lZFR4IGFzIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24pLmhhbGZTaWduZWQ7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZCwgJ2hhbGZTaWduZWQgc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGFzc2VydChoYWxmU2lnbmVkLnR4SGV4LCAndHhIZXggc2hvdWxkIGJlIGRlZmluZWQnKTtcbiAgICAgIGhhbGZTaWduZWQudHhIZXguc2hvdWxkLmVxdWFsKEVYUE9SVF9JTl9DLnNpZ25lZEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNpZ24gYW4gZXhwb3J0IGZyb20gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHByaXZhdGVLZXlzWzJdIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBzaWduYXR1cmUgc2xvdCAoc29ydGVkIGFkZHJlc3Mgb3JkZXI6IDMzMjliZTdkLi4uIGlzIHNsb3QgMSlcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBFWFBPUlRfSU5fUC51bnNpZ25lZEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiBFWFBPUlRfSU5fUC5wcml2YXRlS2V5c1syXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICBzaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaGFsZlNpZ25lZCcpO1xuICAgICAgY29uc3QgaGFsZlNpZ25lZCA9IChzaWduZWRUeCBhcyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uKS5oYWxmU2lnbmVkO1xuICAgICAgYXNzZXJ0KGhhbGZTaWduZWQsICdoYWxmU2lnbmVkIHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZC50eEhleCwgJ3R4SGV4IHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBoYWxmU2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChFWFBPUlRfSU5fUC5oYWxmU2lnbnR4SGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2lnbiBhbiBpbXBvcnQgdG8gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHByaXZhdGVLZXlzWzJdIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBzaWduYXR1cmUgc2xvdCAoc29ydGVkIGFkZHJlc3Mgb3JkZXI6IDMzMjliZTdkLi4uIGlzIHNsb3QgMSlcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgIHR4SGV4OiBJTVBPUlRfSU5fUC51bnNpZ25lZEhleCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJ2OiBJTVBPUlRfSU5fUC5wcml2YXRlS2V5c1syXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgYmFzZWNvaW4uc2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICBzaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaGFsZlNpZ25lZCcpO1xuICAgICAgY29uc3QgaGFsZlNpZ25lZCA9IChzaWduZWRUeCBhcyBIYWxmU2lnbmVkQWNjb3VudFRyYW5zYWN0aW9uKS5oYWxmU2lnbmVkO1xuICAgICAgYXNzZXJ0KGhhbGZTaWduZWQsICdoYWxmU2lnbmVkIHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBhc3NlcnQoaGFsZlNpZ25lZC50eEhleCwgJ3R4SGV4IHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gICAgICBoYWxmU2lnbmVkLnR4SGV4LnNob3VsZC5lcXVhbChJTVBPUlRfSU5fUC5oYWxmU2lnbnR4SGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2lnbiBhbiBpbXBvcnQgdG8gQy1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHByaXZhdGVLZXlzWzJdIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBzaWduYXR1cmUgc2xvdCAoc29ydGVkIGFkZHJlc3Mgb3JkZXIgaW4gVVRYT3MpXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogSU1QT1JUX0lOX0MudW5zaWduZWRIZXgsXG4gICAgICAgIH0sXG4gICAgICAgIHBydjogSU1QT1JUX0lOX0MucHJpdmF0ZUtleXNbMl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2hhbGZTaWduZWQnKTtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWQgPSAoc2lnbmVkVHggYXMgSGFsZlNpZ25lZEFjY291bnRUcmFuc2FjdGlvbikuaGFsZlNpZ25lZDtcbiAgICAgIGFzc2VydChoYWxmU2lnbmVkLCAnaGFsZlNpZ25lZCBzaG91bGQgYmUgZGVmaW5lZCcpO1xuICAgICAgYXNzZXJ0KGhhbGZTaWduZWQudHhIZXgsICd0eEhleCBzaG91bGQgYmUgZGVmaW5lZCcpO1xuICAgICAgaGFsZlNpZ25lZC50eEhleC5zaG91bGQuZXF1YWwoSU1QT1JUX0lOX0MuaGFsZlNpZ250eEhleCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBzaWduaW5nIHdpdGggYW4gaW52YWxpZCBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICB0eEhleDogRVhQT1JUX0lOX0MudW5zaWduZWRIZXgsXG4gICAgICAgIH0sXG4gICAgICAgIHBydjogJ2ludmFsaWQta2V5JyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbihwYXJhbXMpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbiBNZXNzYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2lnbiBhIG1lc3NhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEZscnBMaWIuS2V5UGFpcih7IHBydjogU0VFRF9BQ0NPVU5ULnByaXZhdGVLZXkgfSk7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtZXNzYWdlVG9TaWduID0gQnVmZmVyLmZyb20oU0VFRF9BQ0NPVU5ULm1lc3NhZ2UsICd1dGY4Jyk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlzLCBtZXNzYWdlVG9TaWduLnRvU3RyaW5nKCdoZXgnKSk7XG5cbiAgICAgIHNpZ25hdHVyZS5zaG91bGQuYmUuaW5zdGFuY2VPZihCdWZmZXIpO1xuICAgICAgc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoNjUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzaWduIGEgcmFuZG9tIG1lc3NhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEZscnBMaWIuS2V5UGFpcigpO1xuICAgICAgY29uc3QgcHViS2V5ID0ga2V5UGFpci5nZXRLZXlzKCkucHViO1xuICAgICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAgY29uc3QgbWVzc2FnZVRvU2lnbiA9IEJ1ZmZlci5mcm9tKHJhbmRvbUJ5dGVzKDMyKSk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBiYXNlY29pbi5zaWduTWVzc2FnZShrZXlzLCBtZXNzYWdlVG9TaWduLnRvU3RyaW5nKCdoZXgnKSk7XG5cbiAgICAgIGNvbnN0IHZlcmlmeSA9IEZscnBMaWIuVXRpbHMudmVyaWZ5U2lnbmF0dXJlKFxuICAgICAgICBGbHJwTGliLlV0aWxzLnNoYTI1NihtZXNzYWdlVG9TaWduKSxcbiAgICAgICAgc2lnbmF0dXJlLnNsaWNlKDAsIDY0KSwgLy8gUmVtb3ZlIHJlY292ZXJ5IGJ5dGUgZm9yIHZlcmlmaWNhdGlvblxuICAgICAgICBCdWZmZXIuZnJvbShwdWJLZXksICdoZXgnKVxuICAgICAgKTtcbiAgICAgIHZlcmlmeS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHNpZ24gd2l0aCBtaXNzaW5nIHByaXZhdGUga2V5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBGbHJwTGliLktleVBhaXIoeyBwdWI6IFNFRURfQUNDT1VOVC5wdWJsaWNLZXkgfSk7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgICBjb25zdCBtZXNzYWdlVG9TaWduID0gQnVmZmVyLmZyb20oU0VFRF9BQ0NPVU5ULm1lc3NhZ2UsICd1dGY4Jyk7XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5zaWduTWVzc2FnZShrZXlzLCBtZXNzYWdlVG9TaWduLnRvU3RyaW5nKCdoZXgnKSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRXhwbGFpbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBoYWxmIHNpZ25lZCBleHBvcnQgZnJvbSBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgaGFsZlNpZ25lZDogeyB0eEhleDogRVhQT1JUX0lOX1AuaGFsZlNpZ250eEhleCB9LFxuICAgICAgfSk7XG5cbiAgICAgIHR4RXhwbGFpbi50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIHR4RXhwbGFpbi5mZWUuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZScpO1xuICAgICAgdHhFeHBsYWluLmlucHV0cy5zaG91bGQuYmUuYW4uQXJyYXkoKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VBbW91bnQuc2hvdWxkLmVxdWFsKCcxNDMzOTUyMCcpOyAvLyAweERBQ0RDMCBmcm9tIHRyYW5zYWN0aW9uXG4gICAgICB0eEV4cGxhaW4uY2hhbmdlT3V0cHV0cy5zaG91bGQuYmUuYW4uQXJyYXkoKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKFxuICAgICAgICAnUC1jb3N0d28xMDZnYzVoNXFzd2h5ZThlMHBtdGhxNHd6ZjBla3Y1cXBwc3J2cHV+UC1jb3N0d28xY3VleWdkN2ZkMzdnNTZzNDlrM3JzaHFha2hwNms4dTNhZHp0Nm1+UC1jb3N0d28xeHY1bXVsZ3BlNWx0NHRueDJudG55bHdlNzlhenU5dnBqYTZsdXQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIGV4cG9ydCBmcm9tIFAtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEV4cGxhaW4gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogRVhQT1JUX0lOX1AuZnVsbFNpZ250eEhleCB9KTtcblxuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQpO1xuICAgICAgdHhFeHBsYWluLmlkLnNob3VsZC5lcXVhbChFWFBPUlRfSU5fUC50eGhhc2gpO1xuICAgICAgdHhFeHBsYWluLmZlZS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJyk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZUFtb3VudC5zaG91bGQuZXF1YWwoJzE0MzM5NTIwJyk7IC8vIDB4REFDREMwIGZyb20gdHJhbnNhY3Rpb25cbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLmNoYW5nZU91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdQLWNvc3R3bzEwNmdjNWg1cXN3aHllOGUwcG10aHE0d3pmMGVrdjVxcHBzcnZwdX5QLWNvc3R3bzFjdWV5Z2Q3ZmQzN2c1NnM0OWszcnNocWFraHA2azh1M2FkenQ2bX5QLWNvc3R3bzF4djVtdWxncGU1bHQ0dG54Mm50bnlsd2U3OWF6dTl2cGphNmx1dCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBoYWxmIHNpZ25lZCBpbXBvcnQgdG8gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4RXhwbGFpbiA9IGF3YWl0IGJhc2Vjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIGhhbGZTaWduZWQ6IHsgdHhIZXg6IElNUE9SVF9JTl9QLmhhbGZTaWdudHhIZXggfSxcbiAgICAgIH0pO1xuXG4gICAgICB0eEV4cGxhaW4udHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkltcG9ydCk7XG4gICAgICB0eEV4cGxhaW4uZmVlLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnKTtcbiAgICAgIHR4RXhwbGFpbi5pbnB1dHMuc2hvdWxkLmJlLmFuLkFycmF5KCk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0QW1vdW50LnNob3VsZC5lcXVhbCgnNDg3MzkwMDAnKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4RXhwbGFpbi5jaGFuZ2VPdXRwdXRzLnNob3VsZC5iZS5lbXB0eSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgc2lnbmVkIGltcG9ydCB0byBQLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhFeHBsYWluID0gYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6IElNUE9SVF9JTl9QLnNpZ25lZEhleCB9KTtcblxuICAgICAgdHhFeHBsYWluLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQpO1xuICAgICAgdHhFeHBsYWluLmlkLnNob3VsZC5lcXVhbChJTVBPUlRfSU5fUC50eGhhc2gpO1xuICAgICAgdHhFeHBsYWluLmZlZS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVlJyk7XG4gICAgICB0eEV4cGxhaW4uaW5wdXRzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgdHhFeHBsYWluLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwoJzQ4NzM5MDAwJyk7XG4gICAgICB0eEV4cGxhaW4ub3V0cHV0cy5zaG91bGQuYmUuYW4uQXJyYXkoKTtcbiAgICAgIHR4RXhwbGFpbi5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eEV4cGxhaW4uY2hhbmdlT3V0cHV0cy5zaG91bGQuYmUuZW1wdHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIHRyYW5zYWN0aW9uIGhleCBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe30pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgdHJhbnNhY3Rpb24gaGV4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgdHJhbnNhY3Rpb24gaGV4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYmFzZWNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6ICdpbnZhbGlkJyB9KS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZlcmlmeSBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhbiBleHBvcnQgZnJvbSBDLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IEVYUE9SVF9JTl9DLnNpZ25lZEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgYW1vdW50OiBFWFBPUlRfSU5fQy5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFuIGV4cG9ydCBmcm9tIFAtY2hhaW4gdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogRVhQT1JUX0lOX1AuZnVsbFNpZ250eEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgYW1vdW50OiBFWFBPUlRfSU5fUC5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFuIGltcG9ydCB0byBDLWNoYWluIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IElNUE9SVF9JTl9DLmZ1bGxTaWdudHhIZXgsXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBJTVBPUlRfSU5fQy50byxcbiAgICAgICAgICAgIGFtb3VudDogJzEnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR5cGU6ICdJbXBvcnRUb0MnLFxuICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSBhbiBpbXBvcnQgdG8gUC1jaGFpbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgIHR4SGV4OiBJTVBPUlRfSU5fUC5zaWduZWRIZXgsXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICB0eXBlOiAnSW1wb3J0JyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KTtcbiAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZlcmlmeSBleHBvcnQgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBhbW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogRVhQT1JUX0lOX0Muc2lnbmVkSGV4LFxuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBhbW91bnQ6ICc5OTk5OTk5OTk5OTknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9UeCB0b3RhbCBhbW91bnQgLiogZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0b3RhbCBhbW91bnQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyB0eXBlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IEVYUE9SVF9JTl9DLnNpZ25lZEhleCxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgYW1vdW50OiBFWFBPUlRfSU5fQy5hbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogJ0ltcG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1R4IHR5cGUgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyB0eXBlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgdHhIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEluZm86IHt9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHR4SGV4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6ICdpbnZhbGlkaGV4JyxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW10sXG4gICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBSYXcgdHJhbnNhY3Rpb24gaXMgbm90IGhleCBzdHJpbmcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2ZXJpZnkgaW1wb3J0IHRvIEMtY2hhaW4gd2l0aG91dCByZWNpcGllbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICAgICAgdHhIZXg6IElNUE9SVF9JTl9DLmZ1bGxTaWdudHhIZXgsXG4gICAgICAgIHR4SW5mbzoge30sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICB0eXBlOiAnSW1wb3J0VG9DJyxcbiAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRXhwZWN0ZWQgMSByZWNpcGllbnQgaW4gaW1wb3J0IHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYWlubmV0IFAtY2hhaW4gYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKFNFRURfQUNDT1VOVC5hZGRyZXNzTWFpbm5ldCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdGVzdG5ldCBQLWNoYWluIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkQWRkcmVzcyhTRUVEX0FDQ09VTlQuYWRkcmVzc1Rlc3RuZXQpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFycmF5IG9mIFAtY2hhaW4gYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoRVhQT1JUX0lOX0MucEFkZHJlc3Nlcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdGlsZGUtc2VwYXJhdGVkIG11bHRpc2lnIGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtdWx0aVNpZ0FkZHJlc3MgPSBFWFBPUlRfSU5fQy5wQWRkcmVzc2VzLmpvaW4oJ34nKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKG11bHRpU2lnQWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgQy1jaGFpbiBoZXggYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKEVYUE9SVF9JTl9DLmNIZXhBZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBsb3dlcmNhc2UgQy1jaGFpbiBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoSU1QT1JUX0lOX0MudG8udG9Mb3dlckNhc2UoKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSB1bmRlZmluZWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKHVuZGVmaW5lZCkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoJycpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHZhbGlkYXRlIGludmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKCdpbnZhbGlkLWFkZHJlc3MnKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB2YWxpZGF0ZSBhcnJheSB3aXRoIGludmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3NlcyA9IFsuLi5FWFBPUlRfSU5fQy5wQWRkcmVzc2VzLCAnaW52YWxpZCddO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzc2VzKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1dhbGxldCBBZGRyZXNzIFZlcmlmaWNhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB3YWxsZXQgYWRkcmVzcyB3aXRoIG1hdGNoaW5nIGtleWNoYWlucycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXJzID0gW3sgcHViOiBTRUVEX0FDQ09VTlQucHVibGljS2V5IH0sIHsgcHViOiBBQ0NPVU5UXzEucHVibGljS2V5IH0sIHsgcHViOiBBQ0NPVU5UXzIucHVibGljS2V5IH1dO1xuXG4gICAgICAvLyBEZXJpdmUgYWRkcmVzc2VzIGZyb20gcHVibGljIGtleXMgdG8gZW5zdXJlIHRoZXkgbWF0Y2hcbiAgICAgIGNvbnN0IGRlcml2ZWRBZGRyZXNzZXMgPSBrZXlQYWlycy5tYXAoKGtwKSA9PiBuZXcgRmxycExpYi5LZXlQYWlyKHsgcHViOiBrcC5wdWIgfSkuZ2V0QWRkcmVzcygndGVzdG5ldCcpKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBkZXJpdmVkQWRkcmVzc2VzLmpvaW4oJ34nKTtcblxuICAgICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgIGFkZHJlc3MsXG4gICAgICAgIGtleWNoYWluczoga2V5UGFpcnMsXG4gICAgICB9KTtcblxuICAgICAgaXNWYWxpZC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgTVBDIHdhbGxldCBhZGRyZXNzIHdpdGggc2luZ2xlIGtleWNoYWluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IFNFRURfQUNDT1VOVC5hZGRyZXNzVGVzdG5ldDtcblxuICAgICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgIGFkZHJlc3MsXG4gICAgICAgIGtleWNoYWluczogW3sgcHViOiBTRUVEX0FDQ09VTlQucHVibGljS2V5IH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGlzVmFsaWQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IE1QQyB3YWxsZXQgYWRkcmVzcyB0aGF0IGRvZXMgbm90IG1hdGNoIGtleWNoYWluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IFNFRURfQUNDT1VOVC5hZGRyZXNzVGVzdG5ldDtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIGFzeW5jICgpID0+XG4gICAgICAgICAgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHtcbiAgICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgICAgICBrZXljaGFpbnM6IFt7IHB1YjogQUNDT1VOVF8xLnB1YmxpY0tleSB9XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgL2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlL1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIG11bHRpc2lnIGFkZHJlc3Mgd2l0aCB3cm9uZyBudW1iZXIgb2Yga2V5Y2hhaW5zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gVHdvIHRpbGRlLXNlcGFyYXRlZCBhZGRyZXNzZXMgYnV0IG9ubHkgMiBrZXljaGFpbnNcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBTRUVEX0FDQ09VTlQuYWRkcmVzc1Rlc3RuZXQgKyAnficgKyBBQ0NPVU5UXzEuYWRkcmVzc1Rlc3RuZXQ7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgICBhc3luYyAoKSA9PlxuICAgICAgICAgIGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgICAga2V5Y2hhaW5zOiBbeyBwdWI6IFNFRURfQUNDT1VOVC5wdWJsaWNLZXkgfSwgeyBwdWI6IEFDQ09VTlRfMS5wdWJsaWNLZXkgfV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIC9JbnZhbGlkIGtleWNoYWlucy9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgYXN5bmMgKCkgPT5cbiAgICAgICAgICBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICAgICAgYWRkcmVzczogJ2ludmFsaWQnLFxuICAgICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAvaW52YWxpZCBhZGRyZXNzL1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBhZGRyZXNzIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBrZXljaGFpbiBsZW5ndGgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gU0VFRF9BQ0NPVU5ULmFkZHJlc3NUZXN0bmV0O1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PlxuICAgICAgICBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBhZGRyZXNzZXMgZG8gbm90IG1hdGNoIGtleWNoYWlucycsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFVzZSBhZGRyZXNzZXMgdGhhdCBkb24ndCBtYXRjaCB0aGUga2V5Y2hhaW5zXG4gICAgICBjb25zdCBhZGRyZXNzID0gRVhQT1JUX0lOX0MucEFkZHJlc3Nlcy5qb2luKCd+Jyk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKGFzeW5jICgpID0+XG4gICAgICAgIGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlcnkgU2lnbmF0dXJlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBzaWduYXR1cmUgZnJvbSBzaWduZWQgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShTRUVEX0FDQ09VTlQubWVzc2FnZSwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBCdWZmZXIuZnJvbShTRUVEX0FDQ09VTlQucHJpdmF0ZUtleSwgJ2hleCcpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlID0gRmxycExpYi5VdGlscy5jcmVhdGVTaWduYXR1cmUoYmFzZWNvaW4uX3N0YXRpY3NDb2luLm5ldHdvcmssIG1lc3NhZ2UsIHByaXZhdGVLZXkpO1xuICAgICAgY29uc3QgbWVzc2FnZUhhc2ggPSBGbHJwTGliLlV0aWxzLnNoYTI1NihtZXNzYWdlKTtcbiAgICAgIGNvbnN0IHJlY292ZXJlZFB1YktleSA9IGJhc2Vjb2luLnJlY292ZXJ5U2lnbmF0dXJlKG1lc3NhZ2VIYXNoLCBzaWduYXR1cmUpO1xuXG4gICAgICByZWNvdmVyZWRQdWJLZXkuc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgIHJlY292ZXJlZFB1YktleS5sZW5ndGguc2hvdWxkLmVxdWFsKDMzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0RlbGVnYXRpb24gVHJhbnNhY3Rpb24gVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBkZXNjcmliZSgndmFsaWRhdGVEZWxlZ2F0aW9uVHgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZFN0YWtpbmdPcHRpb25zID0ge1xuICAgICAgICBub2RlSUQ6ICdOb2RlSUQtQUs3c1BCc1pNOXJRd3NlMjNhTGhFRUJQSFpENWdrTHJMJyxcbiAgICAgICAgYW1vdW50OiAnNTAwMDAwMDAwMDAwMDAnLCAvLyA1MCwwMDAgRkxSIGluIG5GTFJcbiAgICAgICAgZHVyYXRpb25TZWNvbmRzOiA4NjQwMCAqIDE0LCAvLyAxNCBkYXlzXG4gICAgICAgIHJld2FyZEFkZHJlc3M6ICdDLWNvc3R3bzF1eXA1bjc2Z2pxbHRyZGR1cjdxbHJzbXQza3loOGZucm13aHFrNycsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2YWxpZEV4cGxhaW5lZFR4ID0ge1xuICAgICAgICBvdXRwdXRBbW91bnQ6ICc1MDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvcixcbiAgICAgICAgaW5wdXRzOiBbXSxcbiAgICAgICAgb3V0cHV0czogW10sXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJzEwMDAnIH0sXG4gICAgICB9O1xuXG4gICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgY29ycmVjdCBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHsgc3Rha2luZ09wdGlvbnM6IHZhbGlkU3Rha2luZ09wdGlvbnMgfTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiBiYXNlY29pbi52YWxpZGF0ZURlbGVnYXRpb25UeCh0eFBhcmFtcywgdmFsaWRFeHBsYWluZWRUeCkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBzdGFraW5nT3B0aW9ucyBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHt9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSxcbiAgICAgICAgICAvRGVsZWdhdGlvbiB0cmFuc2FjdGlvbiByZXF1aXJlcyBzdGFraW5nT3B0aW9ucy9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gbm9kZUlEIGhhcyBpbnZhbGlkIGZvcm1hdCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgc3Rha2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkU3Rha2luZ09wdGlvbnMsXG4gICAgICAgICAgICBub2RlSUQ6ICdJbnZhbGlkUHJlZml4LTEyMycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiYXNlY29pbi52YWxpZGF0ZURlbGVnYXRpb25UeCh0eFBhcmFtcywgdmFsaWRFeHBsYWluZWRUeCksIC9JbnZhbGlkIG5vZGVJRCBmb3JtYXQvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gYW1vdW50IGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHN0YWtpbmdPcHRpb25zOiB7XG4gICAgICAgICAgICAuLi52YWxpZFN0YWtpbmdPcHRpb25zLFxuICAgICAgICAgICAgYW1vdW50OiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAoKSA9PiBiYXNlY29pbi52YWxpZGF0ZURlbGVnYXRpb25UeCh0eFBhcmFtcywgdmFsaWRFeHBsYWluZWRUeCksXG4gICAgICAgICAgL0RlbGVnYXRpb24gdHJhbnNhY3Rpb24gcmVxdWlyZXMgYW1vdW50L1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBkdXJhdGlvblNlY29uZHMgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgc3Rha2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkU3Rha2luZ09wdGlvbnMsXG4gICAgICAgICAgICBkdXJhdGlvblNlY29uZHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IGJhc2Vjb2luLnZhbGlkYXRlRGVsZWdhdGlvblR4KHR4UGFyYW1zLCB2YWxpZEV4cGxhaW5lZFR4KSxcbiAgICAgICAgICAvRGVsZWdhdGlvbiB0cmFuc2FjdGlvbiByZXF1aXJlcyBkdXJhdGlvblNlY29uZHMvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHJld2FyZEFkZHJlc3MgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgc3Rha2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkU3Rha2luZ09wdGlvbnMsXG4gICAgICAgICAgICByZXdhcmRBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAoKSA9PiBiYXNlY29pbi52YWxpZGF0ZURlbGVnYXRpb25UeCh0eFBhcmFtcywgdmFsaWRFeHBsYWluZWRUeCksXG4gICAgICAgICAgL0RlbGVnYXRpb24gdHJhbnNhY3Rpb24gcmVxdWlyZXMgcmV3YXJkQWRkcmVzcy9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gb3V0cHV0QW1vdW50IGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIGFtb3VudCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7IHN0YWtpbmdPcHRpb25zOiB2YWxpZFN0YWtpbmdPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IG1pc21hdGNoZWRFeHBsYWluZWRUeCA9IHtcbiAgICAgICAgICAuLi52YWxpZEV4cGxhaW5lZFR4LFxuICAgICAgICAgIG91dHB1dEFtb3VudDogJzYwMDAwMDAwMDAwMDAwJywgLy8gRGlmZmVyZW50IGZyb20gZXhwZWN0ZWQgNTAwMDAwMDAwMDAwMDBcbiAgICAgICAgfTtcbiAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAoKSA9PiBiYXNlY29pbi52YWxpZGF0ZURlbGVnYXRpb25UeCh0eFBhcmFtcywgbWlzbWF0Y2hlZEV4cGxhaW5lZFR4KSxcbiAgICAgICAgICAvRGVsZWdhdGlvbiBhbW91bnQgbWlzbWF0Y2gvXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ01QQy9UU1MgQ29pbi1MZXZlbCBNZXRob2RzJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3RmbHJwJyk7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBGbHJwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG5cbiAgICAvLyBIZWxwZXI6IGJ1aWxkIHVuc2lnbmVkIE1QQyBFeHBvcnRJbkMgdHggYW5kIHJldHVybiBpdHMgaGV4XG4gICAgYXN5bmMgZnVuY3Rpb24gYnVpbGRVbnNpZ25lZEV4cG9ydEluQygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0RXhwb3J0SW5DQnVpbGRlcigpXG4gICAgICAgIC5mcm9tUHViS2V5KEVYUE9SVF9JTl9DLmNIZXhBZGRyZXNzKVxuICAgICAgICAubm9uY2UoRVhQT1JUX0lOX0Mubm9uY2UpXG4gICAgICAgIC5hbW91bnQoRVhQT1JUX0lOX0MuYW1vdW50KVxuICAgICAgICAudGhyZXNob2xkKDEpXG4gICAgICAgIC5sb2NrdGltZSgwKVxuICAgICAgICAudG8oT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzKVxuICAgICAgICAuZmVlKEVYUE9SVF9JTl9DLmZlZSlcbiAgICAgICAgLmNvbnRleHQoQ09OVEVYVCBhcyBGbHJwQ29udGV4dCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9XG5cbiAgICAvLyBIZWxwZXI6IGJ1aWxkIHVuc2lnbmVkIE1QQyBJbXBvcnRJblAgdHggYW5kIHJldHVybiBpdHMgaGV4XG4gICAgYXN5bmMgZnVuY3Rpb24gYnVpbGRVbnNpZ25lZEltcG9ydEluUCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgY29uc3QgbXBjVXR4byA9IHtcbiAgICAgICAgb3V0cHV0SUQ6IDcsXG4gICAgICAgIGFtb3VudDogJzUwMDAwMDAwJyxcbiAgICAgICAgdHhpZDogJ2FMd1ZRZXF1bWJoaGpmaEw2U3ZmTTZNR1dBQjh3SHdRZko2N2Vvd0ViQUVVcGt1ZU4nLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIGFkZHJlc3NlczogW09OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzc10sXG4gICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICBsb2NrdGltZTogJzAnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldEltcG9ydEluUEJ1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKDEpXG4gICAgICAgIC5sb2NrdGltZSgwKVxuICAgICAgICAuZnJvbVB1YktleShbT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5jb3JldGhBZGRyZXNzXSlcbiAgICAgICAgLnRvKFtPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3NdKVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKElNUE9SVF9JTl9QLnNvdXJjZUNoYWluSWQpXG4gICAgICAgIC5kZWNvZGVkVXR4b3MoW21wY1V0eG9dKVxuICAgICAgICAuY29udGV4dChJTVBPUlRfSU5fUC5jb250ZXh0IGFzIEZscnBDb250ZXh0KVxuICAgICAgICAuZmVlU3RhdGUoSU1QT1JUX0lOX1AuZmVlU3RhdGUgYXMgYW55KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHJldHVybiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH1cblxuICAgIC8vIEhlbHBlcjogYnVpbGQgdW5zaWduZWQgTVBDIEV4cG9ydEluUCB0eCBhbmQgcmV0dXJuIGl0cyBoZXhcbiAgICBhc3luYyBmdW5jdGlvbiBidWlsZFVuc2lnbmVkRXhwb3J0SW5QKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBtcGNVdHhvID0ge1xuICAgICAgICBvdXRwdXRJRDogNyxcbiAgICAgICAgYW1vdW50OiAnNTAwMDAwMDAnLFxuICAgICAgICB0eGlkOiAnYmdIbkVKNjR0ZDh1MzFhWnJHRGFXY0RxeFo4dkRWNXFHZDdibVNpZmd2VW5VVzh2MicsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzXSxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIGxvY2t0aW1lOiAnMCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0RXhwb3J0SW5QQnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQoMSlcbiAgICAgICAgLmxvY2t0aW1lKDApXG4gICAgICAgIC5mcm9tUHViS2V5KFtPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3NdKVxuICAgICAgICAuYW1vdW50KCczMDAwMDAwMCcpXG4gICAgICAgIC5leHRlcm5hbENoYWluSWQoRVhQT1JUX0lOX1Auc291cmNlQ2hhaW5JZClcbiAgICAgICAgLmRlY29kZWRVdHhvcyhbbXBjVXR4b10pXG4gICAgICAgIC5jb250ZXh0KEVYUE9SVF9JTl9QLmNvbnRleHQgYXMgRmxycENvbnRleHQpXG4gICAgICAgIC5mZWVTdGF0ZShFWFBPUlRfSU5fUC5mZWVTdGF0ZSBhcyBhbnkpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyOiBidWlsZCB1bnNpZ25lZCBNUEMgSW1wb3J0SW5DIHR4IGFuZCByZXR1cm4gaXRzIGhleFxuICAgIGFzeW5jIGZ1bmN0aW9uIGJ1aWxkVW5zaWduZWRJbXBvcnRJbkMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGNvbnN0IG1wY1V0eG8gPSB7XG4gICAgICAgIG91dHB1dElEOiA3LFxuICAgICAgICBhbW91bnQ6ICczMDAwMDAwMCcsXG4gICAgICAgIHR4aWQ6ICduU0J3TmNnZkxiazVTNDI1YjFxYVlhcVRUQ2lNQ1Y3NUtVNEZibnE4U1BVVXFMcTInLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIGFkZHJlc3NlczogW09OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzc10sXG4gICAgICAgIG91dHB1dGlkeDogJzEnLFxuICAgICAgICBsb2NrdGltZTogJzAnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldEltcG9ydEluQ0J1aWxkZXIoKVxuICAgICAgICAudGhyZXNob2xkKDEpXG4gICAgICAgIC5sb2NrdGltZSgwKVxuICAgICAgICAuZnJvbVB1YktleShbT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzXSlcbiAgICAgICAgLnRvKCcweDk2OTkzQkFFYjZBYUUyZTA2QkY5NUYxNDRlMjc3NUQ0ZjhlZmJEMzUnKVxuICAgICAgICAuZmVlKCcxMDAwMDAwJylcbiAgICAgICAgLmRlY29kZWRVdHhvcyhbbXBjVXR4b10pXG4gICAgICAgIC5jb250ZXh0KElNUE9SVF9JTl9DLmNvbnRleHQgYXMgRmxycENvbnRleHQpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgfVxuXG4gICAgZGVzY3JpYmUoJ2dldFNpZ25hYmxlUGF5bG9hZCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNpZ25hYmxlIHBheWxvYWQgZm9yIEV4cG9ydEluQycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5DKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIHBheWxvYWQuc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgICAgcGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNpZ25hYmxlIHBheWxvYWQgZm9yIEltcG9ydEluUCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIHBheWxvYWQuc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgICAgcGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNpZ25hYmxlIHBheWxvYWQgZm9yIEV4cG9ydEluUCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIHBheWxvYWQuc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgICAgcGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNpZ25hYmxlIHBheWxvYWQgZm9yIEltcG9ydEluQycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5DKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIHBheWxvYWQuc2hvdWxkLmJlLmluc3RhbmNlT2YoQnVmZmVyKTtcbiAgICAgICAgcGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgY29tcGxldGUgZ2V0U2lnbmFibGVQYXlsb2FkIOKGkiBzaWduIOKGkiBhZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uIHJvdW5kLXRyaXAgZm9yIEV4cG9ydEluQycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5DKCk7XG5cbiAgICAgICAgLy8gR2V0IHNpZ25hYmxlIHBheWxvYWQgKHdoYXQgTVBDIGNlcmVtb255IHdvdWxkIHJlY2VpdmUpXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIC8vIFNpbXVsYXRlIE1QQzogc2lnbiBleHRlcm5hbGx5XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNlY3AyNTZrMS5zaWduKHBheWxvYWQsIEJ1ZmZlci5mcm9tKE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucHJpdmF0ZUtleSwgJ2hleCcpKTtcblxuICAgICAgICAvLyBJbmplY3Qgc2lnbmF0dXJlXG4gICAgICAgIGNvbnN0IHNpZ25lZEhleCA9IGF3YWl0IGJhc2Vjb2luLmFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24odHhIZXgsIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgICAgICBzaWduZWRIZXguc2hvdWxkLm5vdC5lcXVhbCh0eEhleCk7XG5cbiAgICAgICAgLy8gVmVyaWZ5IHNpZ25lZCB0eCBjYW4gYmUgcGFyc2VkXG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbShzaWduZWRIZXgpO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHgudG9Kc29uKCkudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkV4cG9ydCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBjb21wbGV0ZSByb3VuZC10cmlwIGZvciBJbXBvcnRJblAnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEltcG9ydEluUCgpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgYmFzZWNvaW4uZ2V0U2lnbmFibGVQYXlsb2FkKHR4SGV4KTtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2VjcDI1NmsxLnNpZ24ocGF5bG9hZCwgQnVmZmVyLmZyb20oT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wcml2YXRlS2V5LCAnaGV4JykpO1xuICAgICAgICBjb25zdCBzaWduZWRIZXggPSBhd2FpdCBiYXNlY29pbi5hZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uKHR4SGV4LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcblxuICAgICAgICBzaWduZWRIZXguc2hvdWxkLm5vdC5lcXVhbCh0eEhleCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgZmFjdG9yeS5mcm9tKHNpZ25lZEhleCkuYnVpbGQoKTtcbiAgICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIHR4LnRvSnNvbigpLnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgY29tcGxldGUgcm91bmQtdHJpcCBmb3IgRXhwb3J0SW5QJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh0eEhleCk7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNlY3AyNTZrMS5zaWduKHBheWxvYWQsIEJ1ZmZlci5mcm9tKE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucHJpdmF0ZUtleSwgJ2hleCcpKTtcbiAgICAgICAgY29uc3Qgc2lnbmVkSGV4ID0gYXdhaXQgYmFzZWNvaW4uYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvbih0eEhleCwgQnVmZmVyLmZyb20oc2lnbmF0dXJlKSk7XG5cbiAgICAgICAgc2lnbmVkSGV4LnNob3VsZC5ub3QuZXF1YWwodHhIZXgpO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGZhY3RvcnkuZnJvbShzaWduZWRIZXgpLmJ1aWxkKCk7XG4gICAgICAgIHR4LnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC50b0pzb24oKS50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNvbXBsZXRlIHJvdW5kLXRyaXAgZm9yIEltcG9ydEluQycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5DKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBzZWNwMjU2azEuc2lnbihwYXlsb2FkLCBCdWZmZXIuZnJvbShPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnByaXZhdGVLZXksICdoZXgnKSk7XG4gICAgICAgIGNvbnN0IHNpZ25lZEhleCA9IGF3YWl0IGJhc2Vjb2luLmFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24odHhIZXgsIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuXG4gICAgICAgIHNpZ25lZEhleC5zaG91bGQubm90LmVxdWFsKHR4SGV4KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBmYWN0b3J5LmZyb20oc2lnbmVkSGV4KS5idWlsZCgpO1xuICAgICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHgudG9Kc29uKCkudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkltcG9ydCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwcm9kdWNlIHZhbGlkIHNpZ25lZCB0eCB2aWEgYm90aCBzaWduKCkgYW5kIGFkZFNpZ25hdHVyZVRvVHJhbnNhY3Rpb24oKSBmb3IgRXhwb3J0SW5DJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwcml2YXRlS2V5ID0gT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wcml2YXRlS2V5O1xuXG4gICAgICAgIC8vIFBhdGggMTogc2lnbigpIHZpYSBzaWduVHJhbnNhY3Rpb25cbiAgICAgICAgY29uc3Qgc2lnblJlc3VsdCA9IGF3YWl0IGJhc2Vjb2luLnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluQygpIH0sXG4gICAgICAgICAgcHJ2OiBwcml2YXRlS2V5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2lnbmVkSGV4MSA9IChzaWduUmVzdWx0IGFzIEhhbGZTaWduZWRBY2NvdW50VHJhbnNhY3Rpb24pLmhhbGZTaWduZWQhLnR4SGV4ITtcblxuICAgICAgICAvLyBQYXRoIDI6IGdldFNpZ25hYmxlUGF5bG9hZCDihpIgZXh0ZXJuYWwgc2lnbiDihpIgYWRkU2lnbmF0dXJlVG9UcmFuc2FjdGlvblxuICAgICAgICBjb25zdCB1bnNpZ25lZEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJbkMoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGJhc2Vjb2luLmdldFNpZ25hYmxlUGF5bG9hZCh1bnNpZ25lZEhleCk7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNlY3AyNTZrMS5zaWduKHBheWxvYWQsIEJ1ZmZlci5mcm9tKHByaXZhdGVLZXksICdoZXgnKSk7XG4gICAgICAgIGNvbnN0IHNpZ25lZEhleDIgPSBhd2FpdCBiYXNlY29pbi5hZGRTaWduYXR1cmVUb1RyYW5zYWN0aW9uKHVuc2lnbmVkSGV4LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcblxuICAgICAgICAvLyBCb3RoIHBhdGhzIHNob3VsZCBwcm9kdWNlIHZhbGlkIHNpZ25lZCB0cmFuc2FjdGlvbnMgd2l0aCAxIHNpZ25hdHVyZVxuICAgICAgICBjb25zdCB0eDEgPSBhd2FpdCBmYWN0b3J5LmZyb20oc2lnbmVkSGV4MSkuYnVpbGQoKTtcbiAgICAgICAgY29uc3QgdHgyID0gYXdhaXQgZmFjdG9yeS5mcm9tKHNpZ25lZEhleDIpLmJ1aWxkKCk7XG4gICAgICAgIHR4MS5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHgyLnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eDEudG9Kc29uKCkudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkV4cG9ydCk7XG4gICAgICAgIHR4Mi50b0pzb24oKS50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRXhwb3J0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZlcmlmeVRyYW5zYWN0aW9uIHdpdGggTVBDIHBhcmFtcycsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IE1QQyBFeHBvcnRJbkMgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluQygpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3MsIGFtb3VudDogRVhQT1JUX0lOX0MuYW1vdW50IH1dLFxuICAgICAgICAgIHR5cGU6ICdFeHBvcnQnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBNUEMgSW1wb3J0SW5QIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRJbXBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXgsIHR4SW5mbzoge30gfTtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW10sXG4gICAgICAgICAgdHlwZTogJ0ltcG9ydCcsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IE1QQyBJbXBvcnRJblAgdHJhbnNhY3Rpb24gd2hlbiB0eFBhcmFtcy50eXBlIGlzIHRoZSBcImltcG9ydFwiIGludGVudCBhbGlhcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SGV4LCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICAgIHR5cGU6ICdpbXBvcnQnLFxuICAgICAgICAgIGxvY2t0aW1lOiAwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBNUEMgRXhwb3J0SW5QIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhIZXgsIHR4SW5mbzoge30gfTtcbiAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogT05fQ0hBSU5fVEVTVF9XQUxMRVQudXNlci5wQ2hhaW5BZGRyZXNzLCBhbW91bnQ6ICczMDAwMDAwMCcgfV0sXG4gICAgICAgICAgdHlwZTogJ0V4cG9ydCcsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IE1QQyBJbXBvcnRJbkMgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEltcG9ydEluQygpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHg5Njk5M0JBRWI2QWFFMmUwNkJGOTVGMTQ0ZTI3NzVENGY4ZWZiRDM1JywgYW1vdW50OiAnMScgfV0sXG4gICAgICAgICAgdHlwZTogJ0ltcG9ydFRvQycsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24gd2hlbiB0eFBhcmFtcy50eXBlIGlzIHRoZSBcInN0YWtlXCIgaW50ZW50IGFsaWFzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleDogTVVMVElTSUdfREVMRUdBVElPTl9GVUxMWV9TSUdORURfVFhfSEVYLCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHR5cGU6ICdzdGFrZScsIC8vIGludGVudC10eXBlIGFsaWFzIHVzZWQgYnkgd2FsbGV0LXBsYXRmb3JtOyBtdXN0IG5vcm1hbGlzZSB0byBBZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvclxuICAgICAgICAgIHN0YWtpbmdPcHRpb25zOiB7XG4gICAgICAgICAgICBub2RlSUQ6IE1VTFRJU0lHX0RFTEVHQVRJT05fUEFSQU1TLm5vZGVJRCxcbiAgICAgICAgICAgIGFtb3VudDogTVVMVElTSUdfREVMRUdBVElPTl9QQVJBTVMuc3Rha2VBbW91bnQsXG4gICAgICAgICAgICBkdXJhdGlvblNlY29uZHM6IE1VTFRJU0lHX0RFTEVHQVRJT05fUEFSQU1TLmR1cmF0aW9uICogMjQgKiA2MCAqIDYwLFxuICAgICAgICAgICAgcmV3YXJkQWRkcmVzczogTVVMVElTSUdfREVMRUdBVElPTl9QQVJBTVMucmV3YXJkQWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzVmVyaWZpZWQgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHdoZW4gdHhQYXJhbXMudHlwZSBpcyB1bmRlZmluZWQgKE1QQyBpbnRlbnQgZmxvdyknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIEluIHRoZSBNUEMvVFNTIHN0YWtpbmcgZmxvdywgdGhlIHR4UmVxdWVzdCBpcyBjcmVhdGVkIGJ5IHN0YWtpbmctc2VydmljZSAobm90IHRoZSBVSSkuXG4gICAgICAgIC8vIFRoZSBVSSBvbmx5IGhhcyB0eFJlcXVlc3RJZCDigJQgbm8gYnVpbGRQYXJhbXMuIFRoZSBTREsgZmFsbHMgYmFjayB0byB7IHJlY2lwaWVudHM6IFtdIH1cbiAgICAgICAgLy8gd2l0aCBubyB0eXBlIGFuZCBubyBzdGFraW5nT3B0aW9ucy4gdmVyaWZ5VHJhbnNhY3Rpb24gbXVzdCBzdGlsbCBwYXNzIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIHBhcnNlZCBoZXggKGV4cGxhaW5lZFR4LnR5cGUpIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggYnVpbHQgYnkgd2FsbGV0LXBsYXRmb3JtLlxuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleDogTVBDX0RFTEVHQVRJT05fVU5TSUdORURfVFhfSEVYLCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgICAgIC8vIG5vIHR5cGUg4oCUIHNpbXVsYXRlcyBNUEMgc3Rha2luZyBmbG93IHdoZXJlIGJ1aWxkUGFyYW1zIGlzIHVuYXZhaWxhYmxlXG4gICAgICAgICAgLy8gbm8gc3Rha2luZ09wdGlvbnMg4oCUIG5vdCBwYXNzZWQgdGhyb3VnaCBpbiB0aGUgTVBDIGludGVudCBmbG93XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSk7XG4gICAgICAgIGlzVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndmVyaWZ5VHJhbnNhY3Rpb24gd2l0aCBUU1Mgd2FsbGV0IChBdmFsYW5jaGUgYXRvbWljKScsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IFRTUyBFeHBvcnRJblAgd2hlbiBwYXNzZWQgc2VyaWFsaXplZFR4SGV4IChub3Qgc2lnbmFibGVIZXgpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBUaGUgU0RLJ3Mgc2lnblJlcXVlc3RCYXNlIG5vdyBwYXNzZXMgc2VyaWFsaXplZFR4SGV4ICh0aGUgZnVsbFxuICAgICAgICAvLyBQVk0gdHJhbnNhY3Rpb24gYnl0ZXMpIHRvIHZlcmlmeVRyYW5zYWN0aW9uIGZvciBBdmFsYW5jaGUgYXRvbWljIHR4cyxcbiAgICAgICAgLy8gaW5zdGVhZCBvZiBzaWduYWJsZUhleCAoYSAzMi1ieXRlIFNIQS0yNTYgaGFzaCB0aGF0IGNhbid0IGJlIHBhcnNlZCkuXG4gICAgICAgIC8vIFRoaXMgdGVzdCBjb25maXJtcyB2ZXJpZnlUcmFuc2FjdGlvbiBzdWNjZWVkcyB3aXRoIHRoZSBhY3R1YWwgdHggYnl0ZXMuXG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEV4cG9ydEluUCgpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiBPTl9DSEFJTl9URVNUX1dBTExFVC51c2VyLnBDaGFpbkFkZHJlc3MsIGFtb3VudDogJzMwMDAwMDAwJyB9XSxcbiAgICAgICAgICB0eXBlOiAnRXhwb3J0JyxcbiAgICAgICAgICBsb2NrdGltZTogMCxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zLFxuICAgICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgICAgd2FsbGV0VHlwZTogJ3RzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBpc1ZlcmlmaWVkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZlcmlmeSBUU1MgSW1wb3J0SW5QIHdoZW4gcGFzc2VkIHNlcmlhbGl6ZWRUeEhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkSW1wb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SGV4LCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IE9OX0NIQUlOX1RFU1RfV0FMTEVULnVzZXIucENoYWluQWRkcmVzcywgYW1vdW50OiAnMScgfV0sXG4gICAgICAgICAgdHlwZTogJ0ltcG9ydCcsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2ZXJpZnkgVFNTIEltcG9ydEluQyB3aGVuIHBhc3NlZCBzZXJpYWxpemVkVHhIZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgYnVpbGRVbnNpZ25lZEltcG9ydEluQygpO1xuICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEhleCwgdHhJbmZvOiB7fSB9O1xuICAgICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHg5Njk5M0JBRWI2QWFFMmUwNkJGOTVGMTQ0ZTI3NzVENGY4ZWZiRDM1JywgYW1vdW50OiAnMScgfV0sXG4gICAgICAgICAgdHlwZTogJ0ltcG9ydFRvQycsXG4gICAgICAgICAgbG9ja3RpbWU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgIHdhbGxldFR5cGU6ICd0c3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgaXNWZXJpZmllZC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2lzU2lnbmFibGVQcmVIYXNoZWQgc2hvdWxkIGJlIHRydWUgZm9yIEF2YWxhbmNoZSBhdG9taWMgdHhzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGJ1aWxkVW5zaWduZWRFeHBvcnRJblAoKTtcbiAgICAgICAgY29uc3QgcmF3SGV4ID0gdHhIZXguc3RhcnRzV2l0aCgnMHgnKSA/IHR4SGV4LnN1YnN0cmluZygyKSA6IHR4SGV4O1xuICAgICAgICBjb25zdCBzaWduYWJsZUhleCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShCdWZmZXIuZnJvbShyYXdIZXgsICdoZXgnKSkuZGlnZXN0KCdoZXgnKTtcblxuICAgICAgICBiYXNlY29pbi5pc1NpZ25hYmxlUHJlSGFzaGVkKHsgc2VyaWFsaXplZFR4SGV4OiByYXdIZXgsIHNpZ25hYmxlSGV4IH0pLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgICAgYmFzZWNvaW5cbiAgICAgICAgICAuaXNTaWduYWJsZVByZUhhc2hlZCh7IHNlcmlhbGl6ZWRUeEhleDogJ2Y4NmM4MDg1MDRhODE3YzgwMDgyNTIwOCcsIHNpZ25hYmxlSGV4OiAnZjg2YzgwODUwNGE4MTdjODAwODI1MjA4JyB9KVxuICAgICAgICAgIC5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmVyaWZ5IHNpZ25hYmxlUGF5bG9hZCBpcyBTSEEtMjU2IG9mIHNlcmlhbGl6ZWQgdHggKHNhbmRib3gtdmVyaWZpZWQpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyB1bnNpZ25lZFR4LnRvQnl0ZXMoKSDihpIgc2hhMjU2IOKGkiBNUEMuc2lnbigpXG4gICAgICAgIC8vIFRoZSBzaWduYWJsZVBheWxvYWQgbXVzdCBiZSBleGFjdGx5IDMyIGJ5dGVzIChTSEEtMjU2IGRpZ2VzdCkuXG4gICAgICAgIC8vIFRoaXMgaXMgd2hhdCB0aGUgV1Agc3RvcmVzIGFzIHNpZ25hYmxlSGV4IGFuZCB3aGF0IGVjZHNhTVBDdjIudHNcbiAgICAgICAgLy8gbXVzdCB1c2UgZGlyZWN0bHkgKG5vIGtlY2NhazI1NiByZS1oYXNoaW5nKS5cbiAgICAgICAgY29uc3QgdHhIZXggPSBhd2FpdCBidWlsZFVuc2lnbmVkRXhwb3J0SW5QKCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBiYXNlY29pbi5nZXRTaWduYWJsZVBheWxvYWQodHhIZXgpO1xuXG4gICAgICAgIC8vIHNpZ25hYmxlUGF5bG9hZCBpcyBTSEEtMjU2KHR4Qm9keSkg4oCUIGFsd2F5cyAzMiBieXRlc1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGF5bG9hZC5sZW5ndGgsIDMyLCAnc2lnbmFibGVQYXlsb2FkIG11c3QgYmUgMzIgYnl0ZXMgKFNIQS0yNTYpJyk7XG5cbiAgICAgICAgLy8gVGhlIHNlcmlhbGl6ZWRUeEhleCAoYWZ0ZXIgc3RyaXBwaW5nIDB4KSBzdGFydHMgd2l0aCBBdmFsYW5jaGUgY29kZWMgJzAwMDAnXG4gICAgICAgIC8vIFRoaXMgaXMgaG93IGVjZHNhTVBDdjIudHMgZGV0ZWN0cyBhdG9taWMgdHJhbnNhY3Rpb25zXG4gICAgICAgIGNvbnN0IHJhd0hleCA9IHR4SGV4LnN0YXJ0c1dpdGgoJzB4JykgPyB0eEhleC5zdWJzdHJpbmcoMikgOiB0eEhleDtcbiAgICAgICAgYXNzZXJ0Lm9rKHJhd0hleC5zdGFydHNXaXRoKCcwMDAwJyksICdBdmFsYW5jaGUgYXRvbWljIHR4IG11c3Qgc3RhcnQgd2l0aCBjb2RlYyBwcmVmaXggMDAwMCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGEgU0hBLTI1NiBoYXNoIGFzIHR4SGV4IChwcm92ZXMgdGhlIGZpeCBpcyBuZWVkZWQpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaGEyNTZIYXNoID0gJ2EnLnJlcGVhdCg2NCk7XG4gICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SGV4OiBzaGEyNTZIYXNoLCB0eEluZm86IHt9IH07XG4gICAgICAgIGNvbnN0IHR4UGFyYW1zID0geyByZWNpcGllbnRzOiBbXSwgdHlwZTogJ0V4cG9ydCcsIGxvY2t0aW1lOiAwIH07XG5cbiAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgYmFzZWNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0VHlwZTogJ3RzcycgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJldyA9IHRydWU7XG4gICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZS5pbmNsdWRlcygnSW52YWxpZCB0cmFuc2FjdGlvbicpLCBgRXhwZWN0ZWQgJ0ludmFsaWQgdHJhbnNhY3Rpb24nLCBnb3Q6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydCh0aHJldywgJ0V4cGVjdGVkIHZlcmlmeVRyYW5zYWN0aW9uIHRvIHRocm93IGZvciBTSEEtMjU2IGhhc2ggYXMgdHhIZXgnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlUGFpcmVkV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldElkID0gJ2FiYzEyM2RlZjQ1NmFiYzEyM2RlZjQ1NmFiYzEyM2RlJztcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrLmNsZWFuQWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIFBPU1QgdG8gY3JlYXRlLXBhaXJlZC13YWxsZXQgYW5kIHJldHVybiBuZXcgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3BvbnNlOiBDcmVhdGVQYWlyZWRXYWxsZXRSZXNwb25zZSA9IHtcbiAgICAgICAgaWQ6ICduZXd3YWxsZXRpZDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgbGFiZWw6ICdNeSBGTFIgQyBXYWxsZXQnLFxuICAgICAgICBrZXlzOiBbJ2tleTEnLCAna2V5MicsICdrZXkzJ10sXG4gICAgICAgIGtleVNpZ25hdHVyZXM6IHsgYmFja3VwUHViOiAnc2lnMScsIGJpdGdvUHViOiAnc2lnMicgfSxcbiAgICAgICAgbTogMixcbiAgICAgICAgbjogMyxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIHBhaXJlZFdhbGxldElkOiB3YWxsZXRJZCxcbiAgICAgICAgICBiYXNlQWRkcmVzczogJzB4NjI3MzA2MDkwYWJhQjNBNmUxNDAwZTkzNDViQzYwYzc4YThCRWY1NycsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi90ZmxycC93YWxsZXQvJHt3YWxsZXRJZH0vY3JlYXRlLXBhaXJlZC13YWxsZXRgLCB7IGxhYmVsOiAnTXkgRkxSIEMgV2FsbGV0JyB9KVxuICAgICAgICAucmVwbHkoMjAwLCBleHBlY3RlZFJlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZWNvaW4uY3JlYXRlUGFpcmVkV2FsbGV0KHsgd2FsbGV0SWQsIGxhYmVsOiAnTXkgRkxSIEMgV2FsbGV0JyB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKGV4cGVjdGVkUmVzcG9uc2UpO1xuICAgICAgcmVzdWx0LmNvaW4uc2hvdWxkLmVxdWFsKCd0ZmxyJyk7XG4gICAgICByZXN1bHQuY29pblNwZWNpZmljLnBhaXJlZFdhbGxldElkLnNob3VsZC5lcXVhbCh3YWxsZXRJZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIFBPU1Qgd2l0aG91dCBib2R5IHdoZW4gbGFiZWwgaXMgbm90IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3BvbnNlOiBDcmVhdGVQYWlyZWRXYWxsZXRSZXNwb25zZSA9IHtcbiAgICAgICAgaWQ6ICduZXd3YWxsZXRpZDAwMDAwMDAwMDAwMDAwMDAwMDAwMicsXG4gICAgICAgIGNvaW46ICd0ZmxyJyxcbiAgICAgICAgbGFiZWw6ICdGTFIgQyB3YWxsZXQgKGZyb20gdGZscnAgd2FsbGV0IGFiYzEyM2RlZjQ1NmFiYzEyM2RlZjQ1NmFiYzEyM2RlKScsXG4gICAgICAgIGtleXM6IFsna2V5MScsICdrZXkyJywgJ2tleTMnXSxcbiAgICAgICAga2V5U2lnbmF0dXJlczoge30sXG4gICAgICAgIG06IDIsXG4gICAgICAgIG46IDMsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHsgcGFpcmVkV2FsbGV0SWQ6IHdhbGxldElkIH0sXG4gICAgICB9O1xuXG4gICAgICBub2NrKGJnVXJsKS5wb3N0KGAvYXBpL3YyL3RmbHJwL3dhbGxldC8ke3dhbGxldElkfS9jcmVhdGUtcGFpcmVkLXdhbGxldGAsIHt9KS5yZXBseSgyMDAsIGV4cGVjdGVkUmVzcG9uc2UpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlY29pbi5jcmVhdGVQYWlyZWRXYWxsZXQoeyB3YWxsZXRJZCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKGV4cGVjdGVkUmVzcG9uc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcm9wYWdhdGUgSFRUUCBlcnJvcnMgZnJvbSB0aGUgc2VydmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyL3RmbHJwL3dhbGxldC8ke3dhbGxldElkfS9jcmVhdGUtcGFpcmVkLXdhbGxldGApXG4gICAgICAgIC5yZXBseSg0MDAsIHsgZXJyb3I6ICdTb3VyY2UgRkxSIFAgd2FsbGV0IGlzIG5vdCBNUEMgKG11bHRpc2lnVHlwZTogb25jaGFpbiknIH0pO1xuXG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAuY3JlYXRlUGFpcmVkV2FsbGV0KHsgd2FsbGV0SWQgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1NvdXJjZSBGTFIgUCB3YWxsZXQgaXMgbm90IE1QQyAobXVsdGlzaWdUeXBlOiBvbmNoYWluKScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|