@bitgo/sdk-core 38.12.0 → 38.13.0

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.
Files changed (39) hide show
  1. package/dist/src/account-lib/baseCoin/enum.d.ts +2 -1
  2. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/enum.js +3 -1
  4. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +2 -0
  5. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/baseCoin.js +3 -3
  7. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -0
  8. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  9. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  10. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  11. package/dist/src/bitgo/keychain/keychains.js +14 -1
  12. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +27 -6
  13. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -1
  14. package/dist/src/bitgo/safe/derivableEd25519Pub.js +68 -20
  15. package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
  16. package/dist/src/bitgo/safe/safes.js +10 -1
  17. package/dist/src/bitgo/wallet/iWallet.d.ts +28 -0
  18. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  19. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  20. package/dist/src/bitgo/wallet/iWallets.d.ts +3 -1
  21. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  22. package/dist/src/bitgo/wallet/iWallets.js +4 -3
  23. package/dist/src/bitgo/wallet/wallet.d.ts +6 -1
  24. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  25. package/dist/src/bitgo/wallet/wallet.js +28 -3
  26. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  27. package/dist/src/bitgo/wallet/wallets.js +18 -2
  28. package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
  29. package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
  30. package/dist/test/unit/bitgo/keychain/keychains.js +138 -0
  31. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +21 -6
  32. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +114 -62
  33. package/dist/test/unit/bitgo/safe/safes.js +28 -2
  34. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
  35. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
  36. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
  37. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +4 -1
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +5 -5
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const sinon = __importStar(require("sinon"));
37
37
  require("should");
38
38
  const src_1 = require("../../../../src");
39
+ /** A derivable slot-④ backup root pub: 56-char StrKey || 52-char base32 chain code. */
40
+ const COMPOSITE_BACKUP_PUB = 'GA5WUJ54Z23KILLCUOUNAKTPBVZWKMQVO4O6EQ5GHLAERIMLLHNCSKYH' + 'TIHTY7I6LMUEMCXT3EWG5ANXAU72JQXJRUL3MBKDUL6I4GOXWBDA';
39
41
  describe('Safes', function () {
40
42
  let safes;
41
43
  let mockBitGo;
@@ -91,7 +93,12 @@ describe('Safes', function () {
91
93
  return {
92
94
  create: sinon.stub().returns({ pub: `${coin}-pub`, prv: `${coin}-prv` }),
93
95
  add: sinon.stub().resolves({ id: `${coin}-user` }),
94
- createBackup: sinon.stub().resolves({ id: `${coin}-backup` }),
96
+ // txlm is the ed25519Multisig root coin, so its backup pub comes back composite —
97
+ // createMultisigRoot asserts that before returning the triplet.
98
+ createBackup: sinon.stub().resolves({
99
+ id: `${coin}-backup`,
100
+ ...(coin === 'txlm' || coin === 'xlm' ? { pub: COMPOSITE_BACKUP_PUB } : {}),
101
+ }),
95
102
  createBitGo: sinon.stub().resolves({ id: `${coin}-bitgo` }),
96
103
  createMpc: sinon.stub().resolves({
97
104
  userKeychain: { id: `${coin}-user` },
@@ -123,6 +130,25 @@ describe('Safes', function () {
123
130
  },
124
131
  });
125
132
  });
133
+ it('rejects an ed25519Multisig backup root that came back non-derivable', async function () {
134
+ // createBackup infers slot ④ from the generated pub's shape; if that inference ever misses,
135
+ // the root is silently non-derivable and the wallets minted from it are unrecoverable.
136
+ keychainsByCoin['txlm'] = makeKeychains('txlm');
137
+ // A bare 56-char StrKey: the pub createBackup would post if it failed to recognise slot ④.
138
+ keychainsByCoin['txlm'].createBackup.resolves({
139
+ id: 'txlm-backup',
140
+ pub: 'GA5WUJ54Z23KILLCUOUNAKTPBVZWKMQVO4O6EQ5GHLAERIMLLHNCSKYH',
141
+ });
142
+ await safes
143
+ .createSafeKeys({ label: 'my safe', passphrase: 'pw', safeId: 'safe-1' })
144
+ .should.be.rejectedWith(/ed25519Multisig backup root is not derivable/);
145
+ });
146
+ it('does not apply the derivable check to the secp256k1Multisig slot', async function () {
147
+ // Slot ① backup roots are xpubs, which already carry a chain code and are never composed.
148
+ keychainsByCoin['tbtc'] = makeKeychains('tbtc');
149
+ keychainsByCoin['tbtc'].createBackup.resolves({ id: 'tbtc-backup' });
150
+ await safes.createSafeKeys({ label: 'my safe', passphrase: 'pw', safeId: 'safe-1' }).should.be.fulfilled();
151
+ });
126
152
  it('tags every multisig key registration with safeId and the correct source', async function () {
127
153
  await safes.createSafeKeys({ label: 'my safe', passphrase: 'pw', safeId: 'safe-1' });
128
154
  const btc = keychainsByCoin['tbtc'];
@@ -335,4 +361,4 @@ describe('Safes', function () {
335
361
  });
336
362
  });
337
363
  });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFFaEIseUNBQW9FO0FBRXBFLFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxTQUFjLENBQUM7SUFDbkIsTUFBTSxZQUFZLEdBQUc7UUFDbkIsRUFBRSxFQUFFLGNBQWM7UUFDbEIsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixPQUFPLEVBQUUsWUFBWTtRQUNyQixLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbEUsU0FBUyxFQUFFLDBCQUEwQjtLQUN0QyxDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNuQixDQUFDO1FBQ0YsS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLEVBQUUsQ0FBQywwRUFBMEUsRUFBRSxLQUFLO1lBQ2xGLE1BQU0s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LFNBQVMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRXhELE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyw0REFBNEQ7WUFDNUQsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDZCQUE2QixFQUFFO1FBQ3RDLEVBQUUsQ0FBQyxtREFBbUQsRUFBRTtZQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFVLENBQUMsU0FBUyxFQUFFLEVBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdkYsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IEluaXRpYWxpemVTYWZlUmVzcG9uc2UgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEVudGVycHJpc2UsIFNhZmUsIFNhZmVLZXlzLCBTYWZlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmVzOiBTYWZlcztcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBjb25zdCBzYWZlRGF0YVdpcmUgPSB7XG4gICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgbGFiZWw6ICdteSBzYWZlJyxcbiAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICB1c2VyczogW3sgdXNlcklkOiAnY3JlYXRvci1pZCcsIHBlcm1pc3Npb25zOiBbJ2FkbWluJywgJ3NwZW5kJ10gfV0sXG4gICAgY3JlYXRlZEF0OiAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlcyA9IG5ldyBTYWZlcyhtb2NrQml0R28sICd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0aWFsaXplU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnUE9TVHMgdG8gdGhlIHNhZmVzIGNvbGxlY3Rpb24gVVJMIGFuZCByZXR1cm5zIHRoZSBpbml0aWFsaXppbmcgaWQvc3RhdHVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZVJlc3BvbnNlV2lyZSA9IHsgaWQ6ICd0ZXN0LXNhZmUtaWQnLCBzdGF0dXM6ICdpbml0aWFsaXppbmcnIH07XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhpbml0aWFsaXplUmVzcG9uc2VXaXJlKSB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5pbml0aWFsaXplU2FmZSh7IGxhYmVsOiAnbXkgc2FmZScgfSk7XG5cbiAgICAgIHJlc3VsdC5pZC5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2luaXRpYWxpemluZycpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHNlbmQsIHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNvZGVzIGVuYWJsZWRSb290U2xvdHMgd2hlbiB0aGUgc2VydmVyIHJldHVybnMgdGhlbScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVSZXNwb25zZVdpcmUgPSB7XG4gICAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgc3RhdHVzOiAnaW5pdGlhbGl6aW5nJyxcbiAgICAgICAgZW5hYmxlZFJvb3RTbG90czogWydzZWNwMjU2azFNdWx0aXNpZycsICdlY2RzYU1wYyddLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKGluaXRpYWxpemVSZXNwb25zZVdpcmUpIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcblxuICAgICAgaWYgKHJlc3VsdC5lbmFibGVkUm9vdFNsb3RzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBlbmFibGVkUm9vdFNsb3RzJyk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZW5hYmxlZFJvb3RTbG90cy5zaG91bGQuZGVlcEVxdWFsKFsnc2VjcDI1NmsxTXVsdGlzaWcnLCAnZWNkc2FNcGMnXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjcmVhdGVTYWZlS2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBQZXItY29pbiBrZXljaGFpbnMoKSBtb2NrOiBtdWx0aXNpZyBjb2lucyB1c2UgY3JlYXRlL2FkZC9jcmVhdGVCYWNrdXAvY3JlYXRlQml0R287IE1QQyBjb2luc1xuICAgIC8vIHVzZSBjcmVhdGVNcGMuIElkcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBjb2luIG5hbWUgc28gd2UgY2FuIGFzc2VydCBwZXItc2xvdCBjb2luIHJvdXRpbmcuXG4gICAgZnVuY3Rpb24gbWFrZUtleWNoYWlucyhjb2luOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNyZWF0ZTogc2lub24uc3R1YigpLnJldHVybnMoeyBwdWI6IGAke2NvaW59LXB1YmAsIHBydjogYCR7Y29pbn0tcHJ2YCB9KSxcbiAgICAgICAgYWRkOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogYCR7Y29pbn0tdXNlcmAgfSksXG4gICAgICAgIGNyZWF0ZUJhY2t1cDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6IGAke2NvaW59LWJhY2t1cGAgfSksXG4gICAgICAgIGNyZWF0ZUJpdEdvOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogYCR7Y29pbn0tYml0Z29gIH0pLFxuICAgICAgICBjcmVhdGVNcGM6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiBgJHtjb2lufS11c2VyYCB9LFxuICAgICAgICAgIGJhY2t1cEtleWNoYWluOiB7IGlkOiBgJHtjb2lufS1iYWNrdXBgIH0sXG4gICAgICAgICAgYml0Z29LZXljaGFpbjogeyBpZDogYCR7Y29pbn0tYml0Z29gIH0sXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQga2V5Y2hhaW5zQnlDb2luOiBSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBtYWtlS2V5Y2hhaW5zPj47XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGtleWNoYWluc0J5Q29pbiA9IHt9O1xuICAgICAgbW9ja0JpdEdvLmdldEVudiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCd0ZXN0Jyk7IC8vIHRlc3RuZXQgY29pbiBtYXBcbiAgICAgIG1vY2tCaXRHby5lbmNyeXB0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKCdlbmNyeXB0ZWQtcHJ2Jyk7XG4gICAgICBtb2NrQml0R28uY29pbiA9IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBrZXljaGFpbnNCeUNvaW5bbmFtZV0gPSBrZXljaGFpbnNCeUNvaW5bbmFtZV0gfHwgbWFrZUtleWNoYWlucyhuYW1lKTtcbiAgICAgICAgcmV0dXJuIHsga2V5Y2hhaW5zOiAoKSA9PiBrZXljaGFpbnNCeUNvaW5bbmFtZV0gfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3J1bnMgdGhlIDQgcm9vdCBjZXJlbW9uaWVzIGFuZCByZXR1cm5zIDEyIGlkcyBhcyBvcmRlcmVkIHRyaXBsZXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHJvb3RLZXlzOiB7XG4gICAgICAgICAgaG90OiB7XG4gICAgICAgICAgICBzZWNwMjU2azFNdWx0aXNpZzogWyd0YnRjLXVzZXInLCAndGJ0Yy1iYWNrdXAnLCAndGJ0Yy1iaXRnbyddLFxuICAgICAgICAgICAgZWNkc2FNcGM6IFsnaHRldGgtdXNlcicsICdodGV0aC1iYWNrdXAnLCAnaHRldGgtYml0Z28nXSxcbiAgICAgICAgICAgIGVkZHNhTXBjOiBbJ3Rzb2wtdXNlcicsICd0c29sLWJhY2t1cCcsICd0c29sLWJpdGdvJ10sXG4gICAgICAgICAgICBlZDI1NTE5TXVsdGlzaWc6IFsndHhsbS11c2VyJywgJ3R4bG0tYmFja3VwJywgJ3R4bG0tYml0Z28nXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGFncyBldmVyeSBtdWx0aXNpZyBrZXkgcmVnaXN0cmF0aW9uIHdpdGggc2FmZUlkIGFuZCB0aGUgY29ycmVjdCBzb3VyY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIGNvbnN0IGJ0YyA9IGtleWNoYWluc0J5Q29pblsndGJ0YyddO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChidGMuYWRkLCB7XG4gICAgICAgIHB1YjogJ3RidGMtcHViJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiAnZW5jcnlwdGVkLXBydicsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBzYWZlSWQ6ICdzYWZlLTEnLFxuICAgICAgfSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGJ0Yy5jcmVhdGVCYWNrdXAsIHsgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goYnRjLmNyZWF0ZUJpdEdvLCB7IGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RocmVhZHMgc2FmZUlkICsgZW50ZXJwcmlzZSBpbnRvIGJvdGggTVBDIGNlcmVtb25pZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goa2V5Y2hhaW5zQnlDb2luWydodGV0aCddLmNyZWF0ZU1wYywge1xuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgc2FmZUlkOiAnc2FmZS0xJyxcbiAgICAgIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXS5jcmVhdGVNcGMsIHtcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgICAgcGFzc3BocmFzZTogJ3B3JyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHNhZmVJZDogJ3NhZmUtMScsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzZWxlY3RzIG1haW5uZXQgY29pbnMgaW4gYSBwcm9kIGVudmlyb25tZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbW9ja0JpdEdvLmdldEVudiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdwcm9kJyk7XG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCAnYnRjJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uY29pbiwgJ2V0aCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICdzb2wnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCAneGxtJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncnVucyB0aGUgNCByb290IGNlcmVtb25pZXMgaW4gcGFyYWxsZWwgKG5vbmUgYXdhaXRzIGFub3RoZXIpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gR2F0ZSBleGFjdGx5IG9uZSBjYWxsIHBlciByb290IG9uIGEgc2hhcmVkIGxhdGNoIHRoYXQgb25seSBvcGVucyBvbmNlIGFsbCA0IHJvb3RzIGhhdmVcbiAgICAgIC8vIGVudGVyZWQuIElmIHRoZSByb290cyByYW4gc2VxdWVudGlhbGx5LCB0aGUgZmlyc3Qgd291bGQgYXdhaXQgdGhlIGxhdGNoIGZvcmV2ZXIg4oaSIHRoZVxuICAgICAgLy8gdGVzdCB3b3VsZCB0aW1lIG91dDsgY29tcGxldGluZyBwcm92ZXMgYWxsIDQgd2VyZSBpbiBmbGlnaHQgY29uY3VycmVudGx5LlxuICAgICAgbGV0IHJlbGVhc2U6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBnYXRlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IChyZWxlYXNlID0gcmVzb2x2ZSkpO1xuICAgICAgbGV0IHN0YXJ0ZWQgPSAwO1xuICAgICAgY29uc3QgZ2F0ZWQgPSAocmVzdWx0OiBhbnkpID0+XG4gICAgICAgIHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICgrK3N0YXJ0ZWQgPT09IDQpIHtcbiAgICAgICAgICAgIHJlbGVhc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgZ2F0ZTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICAgIC8vIG9uZSBnYXRlZCBlbnRyeSBwb2ludCBwZXIgcm9vdDogbXVsdGlzaWcgcm9vdHMgdmlhIGNyZWF0ZUJpdEdvLCBNUEMgcm9vdHMgdmlhIGNyZWF0ZU1wY1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0YnRjJ10gPSBtYWtlS2V5Y2hhaW5zKCd0YnRjJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3RidGMnXS5jcmVhdGVCaXRHbyA9IGdhdGVkKHsgaWQ6ICd0YnRjLWJpdGdvJyB9KTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHhsbSddID0gbWFrZUtleWNoYWlucygndHhsbScpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10uY3JlYXRlQml0R28gPSBnYXRlZCh7IGlkOiAndHhsbS1iaXRnbycgfSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10gPSBtYWtlS2V5Y2hhaW5zKCdodGV0aCcpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWydodGV0aCddLmNyZWF0ZU1wYyA9IGdhdGVkKHtcbiAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiAnaHRldGgtdXNlcicgfSxcbiAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6ICdodGV0aC1iYWNrdXAnIH0sXG4gICAgICAgIGJpdGdvS2V5Y2hhaW46IHsgaWQ6ICdodGV0aC1iaXRnbycgfSxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0c29sJ10gPSBtYWtlS2V5Y2hhaW5zKCd0c29sJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXS5jcmVhdGVNcGMgPSBnYXRlZCh7XG4gICAgICAgIHVzZXJLZXljaGFpbjogeyBpZDogJ3Rzb2wtdXNlcicgfSxcbiAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6ICd0c29sLWJhY2t1cCcgfSxcbiAgICAgICAgYml0Z29LZXljaGFpbjogeyBpZDogJ3Rzb2wtYml0Z28nIH0sXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgc2FmZXMuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuICAgICAgc3RhcnRlZC5zaG91bGQuZXF1YWwoNCk7XG4gICAgfSk7XG5cbiAgICBpdCgncnVucyBvbmx5IHRoZSBlbmFibGVkIGNlcmVtb25pZXMgd2hlbiBlbmFibGVkUm9vdFNsb3RzIGlzIGEgc3Vic2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuY3JlYXRlU2FmZUtleXMoe1xuICAgICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBzYWZlSWQ6ICdzYWZlLTEnLFxuICAgICAgICBlbmFibGVkUm9vdFNsb3RzOiBbJ2VjZHNhTXBjJywgJ2VkZHNhTXBjJ10sXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICByb290S2V5czoge1xuICAgICAgICAgIGhvdDoge1xuICAgICAgICAgICAgZWNkc2FNcGM6IFsnaHRldGgtdXNlcicsICdodGV0aC1iYWNrdXAnLCAnaHRldGgtYml0Z28nXSxcbiAgICAgICAgICAgIGVkZHNhTXBjOiBbJ3Rzb2wtdXNlcicsICd0c29sLWJhY2t1cCcsICd0c29sLWJpdGdvJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQnlDb2luLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgndGJ0YycpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgndHhsbScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmVzIHRoZSBzYWZlIGFuZCB0aHJvd3MgbGlzdGluZyBldmVyeSBmYWlsZWQgY2VyZW1vbnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUd28gY2VyZW1vbmllcyBmYWlsIChhbiBNUEMgYW5kIGEgbXVsdGlzaWcgcm9vdCkuXG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10gPSBtYWtlS2V5Y2hhaW5zKCdodGV0aCcpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWydodGV0aCddLmNyZWF0ZU1wYyA9IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignZGtscyBib29tJykpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10gPSBtYWtlS2V5Y2hhaW5zKCd0eGxtJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXS5jcmVhdGVCaXRHbyA9IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignYml0Z28ga2V5IGJvb20nKSk7XG4gICAgICAvLyBhcmNoaXZlIHN1Y2NlZWRzLCByZXR1cm5pbmcgYSB2YWxpZCAoYXJjaGl2ZWQpIFNhZmVEYXRhXG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IC4uLnNhZmVEYXRhV2lyZSwgc3RhdHVzOiAnYXJjaGl2ZWQnIH0pLFxuICAgICAgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZCB9KTtcblxuICAgICAgY29uc3QgZXJyID0gYXdhaXQgc2FmZXNcbiAgICAgICAgLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvU2FmZSBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQgZm9yIDIgcm9vdC8pO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLm1hdGNoKC9lY2RzYU1wYzogZGtscyBib29tLyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubWF0Y2goL2VkMjU1MTlNdWx0aXNpZzogYml0Z28ga2V5IGJvb20vKTtcbiAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5tYXRjaCgvaGFzIGJlZW4gYXJjaGl2ZWQvKTtcbiAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5ub3QubWF0Y2goL2FyY2hpdmluZyB0aGUgc2FmZSBhbHNvIGZhaWxlZC8pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvc2FmZS0xL2FyY2hpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdub3RlcyB3aGVuIGFyY2hpdmluZyBhbHNvIGZhaWxzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0c29sJ10gPSBtYWtlS2V5Y2hhaW5zKCd0c29sJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXS5jcmVhdGVNcGMgPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2VkZHNhIGJvb20nKSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHtcbiAgICAgICAgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignYXJjaGl2ZSA1MDAnKSkgfSksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgc2FmZXNcbiAgICAgICAgLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvYXJjaGl2aW5nIHRoZSBzYWZlIGFsc28gZmFpbGVkIFxcKGFyY2hpdmUgNTAwXFwpLiphcmNoaXZlIGl0IG1hbnVhbGx5Lyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmaW5hbGl6ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgcm9vdEtleXMgPSB7XG4gICAgICBob3Q6IHtcbiAgICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6IFsndTEnLCAnYjEnLCAnZzEnXSBhcyBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgIGVjZHNhTXBjOiBbJ3UyJywgJ2IyJywgJ2cyJ10gYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICBlZGRzYU1wYzogWyd1MycsICdiMycsICdnMyddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgICAgZWQyNTUxOU11bHRpc2lnOiBbJ3U0JywgJ2I0JywgJ2c0J10gYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaXQoJ1BPU1RzIHRoZSByb290S2V5cyB0byB0aGUgZmluYWxpemUgVVJMIGFuZCByZXR1cm5zIHRoZSBhY3RpdmUgU2FmZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHNhZmVEYXRhV2lyZSkgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZCB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuZmluYWxpemVTYWZlKCd0ZXN0LXNhZmUtaWQnLCB7IHJvb3RLZXlzIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICByZXN1bHQuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9maW5hbGl6ZScpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChzZW5kLCB7IHJvb3RLZXlzIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYXJjaGl2ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ1BPU1RzIHRvIHRoZSBhcmNoaXZlIFVSTCBhbmQgcmV0dXJucyB0aGUgYXJjaGl2ZWQgU2FmZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgLi4uc2FmZURhdGFXaXJlLCBzdGF0dXM6ICdhcmNoaXZlZCcgfSkgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZCB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuYXJjaGl2ZVNhZmUoJ3Rlc3Qtc2FmZS1pZCcpO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICByZXN1bHQuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhcmNoaXZlZCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dlbmVyYXRlU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnY2hhaW5zIGluaXRpYWxpemUg4oaSIGNyZWF0ZVNhZmVLZXlzIOKGkiBmaW5hbGl6ZSwgdGhyZWFkaW5nIHRoZSBzYWZlSWQgYW5kIGVuYWJsZWRSb290U2xvdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbml0aWFsaXppbmc6IEluaXRpYWxpemVTYWZlUmVzcG9uc2UgPSB7XG4gICAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgc3RhdHVzOiAnaW5pdGlhbGl6aW5nJyxcbiAgICAgICAgZW5hYmxlZFJvb3RTbG90czogWydlY2RzYU1wYycsICdlZGRzYU1wYyddLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJvb3RLZXlzOiBTYWZlS2V5cyA9IHsgcm9vdEtleXM6IHsgaG90OiB7fSB9IH07XG4gICAgICBjb25zdCBpbml0U3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdpbml0aWFsaXplU2FmZScpLnJlc29sdmVzKGluaXRpYWxpemluZyk7XG4gICAgICBjb25zdCBrZXlzU3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdjcmVhdGVTYWZlS2V5cycpLnJlc29sdmVzKHJvb3RLZXlzKTtcbiAgICAgIGNvbnN0IGZpbmFsaXplU3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdmaW5hbGl6ZVNhZmUnKS5yZXNvbHZlcyhuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhV2lyZSBhcyBhbnkpKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuZ2VuZXJhdGVTYWZlKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChpbml0U3R1YiwgeyBsYWJlbDogJ215IHNhZmUnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXlzU3R1Yiwge1xuICAgICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBlbmFibGVkUm9vdFNsb3RzOiBbJ2VjZHNhTXBjJywgJ2VkZHNhTXBjJ10sXG4gICAgICB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGZpbmFsaXplU3R1YiwgJ3Rlc3Qtc2FmZS1pZCcsIHJvb3RLZXlzKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsT3JkZXIoaW5pdFN0dWIsIGtleXNTdHViLCBmaW5hbGl6ZVN0dWIpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ0dFVHMgdGhlIHNhZmUgVVJMIGFuZCByZXR1cm5zIGEgU2FmZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHNhZmVEYXRhV2lyZSkgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmdldCh7IGlkOiAndGVzdC1zYWZlLWlkJyB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5nZXQsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdHRVRzIHRoZSBzYWZlcyBjb2xsZWN0aW9uIGFuZCBtYXBzIHRoZSByZXNwb25zZSB0byBTYWZlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2lub24uc3R1YigpLnJldHVybnNUaGlzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzYWZlczogW3NhZmVEYXRhV2lyZV0sIG5leHRCYXRjaFByZXZJZDogJ25leHQtcGFnZS1pZCcgfSk7XG4gICAgICBtb2NrQml0R28uZ2V0ID0gc2lub24uc3R1YigpLnJldHVybnMoeyBxdWVyeSwgcmVzdWx0IH0pO1xuXG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgc2FmZXMubGlzdCgpO1xuXG4gICAgICBwYWdlLnNhZmVzLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgIHBhZ2Uuc2FmZXNbMF0uc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICBwYWdlLnNhZmVzWzBdLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHBhZ2Uuc2hvdWxkLmhhdmUucHJvcGVydHkoJ25leHRDdXJzb3InLCAnbmV4dC1wYWdlLWlkJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uZ2V0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzJyk7XG4gICAgICAvLyBubyBjdXJzb3IvbGltaXQgcGFzc2VkIOKGkiBlbXB0eSBxdWVyeVxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgocXVlcnksIHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdtYXBzIGN1cnNvcuKGknByZXZJZCBhbmQgbGltaXQgb250byB0aGUgcXVlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zVGhpcygpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2FmZXM6IFtdIH0pO1xuICAgICAgbW9ja0JpdEdvLmdldCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcXVlcnksIHJlc3VsdCB9KTtcblxuICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHNhZmVzLmxpc3QoeyBjdXJzb3I6ICdwcmV2LXBhZ2UtaWQnLCBsaW1pdDogNTAgfSk7XG5cbiAgICAgIHBhZ2Uuc2FmZXMuc2hvdWxkLmhhdmUubGVuZ3RoKDApO1xuICAgICAgLy8gYWJzZW50IG5leHRCYXRjaFByZXZJZCDihpIgdW5kZWZpbmVkIG5leHRDdXJzb3IgKGxhc3QgcGFnZSlcbiAgICAgIChwYWdlLm5leHRDdXJzb3IgPT09IHVuZGVmaW5lZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHF1ZXJ5LCB7IGxpbWl0OiA1MCwgcHJldklkOiAncHJldi1wYWdlLWlkJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0VudGVycHJpc2Uuc2FmZXMoKSBhY2Nlc3NvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIFNhZmVzIGluc3RhbmNlIHNjb3BlZCB0byB0aGUgZW50ZXJwcmlzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVudGVycHJpc2UgPSBuZXcgRW50ZXJwcmlzZShtb2NrQml0R28sIHt9IGFzIGFueSwgeyBpZDogJ2VudC1pZCcsIG5hbWU6ICdlbnQnIH0pO1xuICAgICAgZW50ZXJwcmlzZS5zYWZlcygpLnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmVzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFFaEIseUNBQW9FO0FBRXBFLHVGQUF1RjtBQUN2RixNQUFNLG9CQUFvQixHQUN4QiwwREFBMEQsR0FBRyxzREFBc0QsQ0FBQztBQUV0SCxRQUFRLENBQUMsT0FBTyxFQUFFO0lBQ2hCLElBQUksS0FBWSxDQUFDO0lBQ2pCLElBQUksU0FBYyxDQUFDO0lBQ25CLE1BQU0sWUFBWSxHQUFHO1FBQ25CLEVBQUUsRUFBRSxjQUFjO1FBQ2xCLFlBQVksRUFBRSxvQkFBb0I7UUFDbEMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsT0FBTyxFQUFFLFlBQVk7UUFDckIsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2xFLFNBQVMsRUFBRSwwQkFBMEI7S0FDdEMsQ0FBQztJQUVGLFVBQVUsQ0FBQztRQUNULFNBQVMsR0FBRztZQUNWLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDbkQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7U0FDbkIsQ0FBQztRQUNGLEtBQUssR0FBRyxJQUFJLFdBQUssQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEs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bXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBJbml0aWFsaXplU2FmZVJlc3BvbnNlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBFbnRlcnByaXNlLCBTYWZlLCBTYWZlS2V5cywgU2FmZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG4vKiogQSBkZXJpdmFibGUgc2xvdC3ikaMgYmFja3VwIHJvb3QgcHViOiA1Ni1jaGFyIFN0cktleSB8fCA1Mi1jaGFyIGJhc2UzMiBjaGFpbiBjb2RlLiAqL1xuY29uc3QgQ09NUE9TSVRFX0JBQ0tVUF9QVUIgPVxuICAnR0E1V1VKNTRaMjNLSUxMQ1VPVU5BS1RQQlZaV0tNUVZPNE82RVE1R0hMQUVSSU1MTEhOQ1NLWUgnICsgJ1RJSFRZN0k2TE1VRU1DWFQzRVdHNUFOWEFVNzJKUVhKUlVMM01CS0RVTDZJNEdPWFdCREEnO1xuXG5kZXNjcmliZSgnU2FmZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBzYWZlczogU2FmZXM7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgY29uc3Qgc2FmZURhdGFXaXJlID0ge1xuICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICBlbnRlcnByaXNlSWQ6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICBjcmVhdG9yOiAnY3JlYXRvci1pZCcsXG4gICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgIGNyZWF0ZWRBdDogJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicsXG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgIH07XG4gICAgc2FmZXMgPSBuZXcgU2FmZXMobW9ja0JpdEdvLCAndGVzdC1lbnRlcnByaXNlLWlkJyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW5pdGlhbGl6ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ1BPU1RzIHRvIHRoZSBzYWZlcyBjb2xsZWN0aW9uIFVSTCBhbmQgcmV0dXJucyB0aGUgaW5pdGlhbGl6aW5nIGlkL3N0YXR1cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVSZXNwb25zZVdpcmUgPSB7IGlkOiAndGVzdC1zYWZlLWlkJywgc3RhdHVzOiAnaW5pdGlhbGl6aW5nJyB9O1xuICAgICAgY29uc3Qgc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoaW5pdGlhbGl6ZVJlc3BvbnNlV2lyZSkgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZCB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuaW5pdGlhbGl6ZVNhZmUoeyBsYWJlbDogJ215IHNhZmUnIH0pO1xuXG4gICAgICByZXN1bHQuaWQuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHJlc3VsdC5zdGF0dXMuc2hvdWxkLmVxdWFsKCdpbml0aWFsaXppbmcnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChzZW5kLCB7IGxhYmVsOiAnbXkgc2FmZScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVjb2RlcyBlbmFibGVkUm9vdFNsb3RzIHdoZW4gdGhlIHNlcnZlciByZXR1cm5zIHRoZW0nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbml0aWFsaXplUmVzcG9uc2VXaXJlID0ge1xuICAgICAgICBpZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICAgIHN0YXR1czogJ2luaXRpYWxpemluZycsXG4gICAgICAgIGVuYWJsZWRSb290U2xvdHM6IFsnc2VjcDI1NmsxTXVsdGlzaWcnLCAnZWNkc2FNcGMnXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhpbml0aWFsaXplUmVzcG9uc2VXaXJlKSB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5pbml0aWFsaXplU2FmZSh7IGxhYmVsOiAnbXkgc2FmZScgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQuZW5hYmxlZFJvb3RTbG90cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgZW5hYmxlZFJvb3RTbG90cycpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmVuYWJsZWRSb290U2xvdHMuc2hvdWxkLmRlZXBFcXVhbChbJ3NlY3AyNTZrMU11bHRpc2lnJywgJ2VjZHNhTXBjJ10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlU2FmZUtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUGVyLWNvaW4ga2V5Y2hhaW5zKCkgbW9jazogbXVsdGlzaWcgY29pbnMgdXNlIGNyZWF0ZS9hZGQvY3JlYXRlQmFja3VwL2NyZWF0ZUJpdEdvOyBNUEMgY29pbnNcbiAgICAvLyB1c2UgY3JlYXRlTXBjLiBJZHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgY29pbiBuYW1lIHNvIHdlIGNhbiBhc3NlcnQgcGVyLXNsb3QgY29pbiByb3V0aW5nLlxuICAgIGZ1bmN0aW9uIG1ha2VLZXljaGFpbnMoY29pbjogc3RyaW5nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjcmVhdGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcHViOiBgJHtjb2lufS1wdWJgLCBwcnY6IGAke2NvaW59LXBydmAgfSksXG4gICAgICAgIGFkZDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6IGAke2NvaW59LXVzZXJgIH0pLFxuICAgICAgICAvLyB0eGxtIGlzIHRoZSBlZDI1NTE5TXVsdGlzaWcgcm9vdCBjb2luLCBzbyBpdHMgYmFja3VwIHB1YiBjb21lcyBiYWNrIGNvbXBvc2l0ZSDigJRcbiAgICAgICAgLy8gY3JlYXRlTXVsdGlzaWdSb290IGFzc2VydHMgdGhhdCBiZWZvcmUgcmV0dXJuaW5nIHRoZSB0cmlwbGV0LlxuICAgICAgICBjcmVhdGVCYWNrdXA6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgICAgaWQ6IGAke2NvaW59LWJhY2t1cGAsXG4gICAgICAgICAgLi4uKGNvaW4gPT09ICd0eGxtJyB8fCBjb2luID09PSAneGxtJyA/IHsgcHViOiBDT01QT1NJVEVfQkFDS1VQX1BVQiB9IDoge30pLFxuICAgICAgICB9KSxcbiAgICAgICAgY3JlYXRlQml0R286IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSksXG4gICAgICAgIGNyZWF0ZU1wYzogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LXVzZXJgIH0sXG4gICAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LWJhY2t1cGAgfSxcbiAgICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBrZXljaGFpbnNCeUNvaW46IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIG1ha2VLZXljaGFpbnM+PjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAga2V5Y2hhaW5zQnlDb2luID0ge307XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Rlc3QnKTsgLy8gdGVzdG5ldCBjb2luIG1hcFxuICAgICAgbW9ja0JpdEdvLmVuY3J5cHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGtleWNoYWluc0J5Q29pbltuYW1lXSA9IGtleWNoYWluc0J5Q29pbltuYW1lXSB8fCBtYWtlS2V5Y2hhaW5zKG5hbWUpO1xuICAgICAgICByZXR1cm4geyBrZXljaGFpbnM6ICgpID0+IGtleWNoYWluc0J5Q29pbltuYW1lXSB9O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncnVucyB0aGUgNCByb290IGNlcmVtb25pZXMgYW5kIHJldHVybnMgMTIgaWRzIGFzIG9yZGVyZWQgdHJpcGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgcm9vdEtleXM6IHtcbiAgICAgICAgICBob3Q6IHtcbiAgICAgICAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiBbJ3RidGMtdXNlcicsICd0YnRjLWJhY2t1cCcsICd0YnRjLWJpdGdvJ10sXG4gICAgICAgICAgICBlY2RzYU1wYzogWydodGV0aC11c2VyJywgJ2h0ZXRoLWJhY2t1cCcsICdodGV0aC1iaXRnbyddLFxuICAgICAgICAgICAgZWRkc2FNcGM6IFsndHNvbC11c2VyJywgJ3Rzb2wtYmFja3VwJywgJ3Rzb2wtYml0Z28nXSxcbiAgICAgICAgICAgIGVkMjU1MTlNdWx0aXNpZzogWyd0eGxtLXVzZXInLCAndHhsbS1iYWNrdXAnLCAndHhsbS1iaXRnbyddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGVkMjU1MTlNdWx0aXNpZyBiYWNrdXAgcm9vdCB0aGF0IGNhbWUgYmFjayBub24tZGVyaXZhYmxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gY3JlYXRlQmFja3VwIGluZmVycyBzbG90IOKRoyBmcm9tIHRoZSBnZW5lcmF0ZWQgcHViJ3Mgc2hhcGU7IGlmIHRoYXQgaW5mZXJlbmNlIGV2ZXIgbWlzc2VzLFxuICAgICAgLy8gdGhlIHJvb3QgaXMgc2lsZW50bHkgbm9uLWRlcml2YWJsZSBhbmQgdGhlIHdhbGxldHMgbWludGVkIGZyb20gaXQgYXJlIHVucmVjb3ZlcmFibGUuXG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXSA9IG1ha2VLZXljaGFpbnMoJ3R4bG0nKTtcbiAgICAgIC8vIEEgYmFyZSA1Ni1jaGFyIFN0cktleTogdGhlIHB1YiBjcmVhdGVCYWNrdXAgd291bGQgcG9zdCBpZiBpdCBmYWlsZWQgdG8gcmVjb2duaXNlIHNsb3Qg4pGjLlxuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10uY3JlYXRlQmFja3VwLnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd0eGxtLWJhY2t1cCcsXG4gICAgICAgIHB1YjogJ0dBNVdVSjU0WjIzS0lMTENVT1VOQUtUUEJWWldLTVFWTzRPNkVRNUdITEFFUklNTExITkNTS1lIJyxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9lZDI1NTE5TXVsdGlzaWcgYmFja3VwIHJvb3QgaXMgbm90IGRlcml2YWJsZS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGFwcGx5IHRoZSBkZXJpdmFibGUgY2hlY2sgdG8gdGhlIHNlY3AyNTZrMU11bHRpc2lnIHNsb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTbG90IOKRoCBiYWNrdXAgcm9vdHMgYXJlIHhwdWJzLCB3aGljaCBhbHJlYWR5IGNhcnJ5IGEgY2hhaW4gY29kZSBhbmQgYXJlIG5ldmVyIGNvbXBvc2VkLlxuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0YnRjJ10gPSBtYWtlS2V5Y2hhaW5zKCd0YnRjJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3RidGMnXS5jcmVhdGVCYWNrdXAucmVzb2x2ZXMoeyBpZDogJ3RidGMtYmFja3VwJyB9KTtcblxuICAgICAgYXdhaXQgc2FmZXMuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pLnNob3VsZC5iZS5mdWxmaWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCd0YWdzIGV2ZXJ5IG11bHRpc2lnIGtleSByZWdpc3RyYXRpb24gd2l0aCBzYWZlSWQgYW5kIHRoZSBjb3JyZWN0IHNvdXJjZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgY29uc3QgYnRjID0ga2V5Y2hhaW5zQnlDb2luWyd0YnRjJ107XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGJ0Yy5hZGQsIHtcbiAgICAgICAgcHViOiAndGJ0Yy1wdWInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIHNhZmVJZDogJ3NhZmUtMScsXG4gICAgICB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goYnRjLmNyZWF0ZUJhY2t1cCwgeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChidGMuY3JlYXRlQml0R28sIHsgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyZWFkcyBzYWZlSWQgKyBlbnRlcnByaXNlIGludG8gYm90aCBNUEMgY2VyZW1vbmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjLCB7XG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwdycsXG4gICAgICAgIGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgICBzYWZlSWQ6ICdzYWZlLTEnLFxuICAgICAgfSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYywge1xuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgc2FmZUlkOiAnc2FmZS0xJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NlbGVjdHMgbWFpbm5ldCBjb2lucyBpbiBhIHByb2QgZW52aXJvbm1lbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Byb2QnKTtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICdidGMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCAnZXRoJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uY29pbiwgJ3NvbCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICd4bG0nKTtcbiAgICB9KTtcblxuICAgIGl0KCdydW5zIHRoZSA0IHJvb3QgY2VyZW1vbmllcyBpbiBwYXJhbGxlbCAobm9uZSBhd2FpdHMgYW5vdGhlciknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBHYXRlIGV4YWN0bHkgb25lIGNhbGwgcGVyIHJvb3Qgb24gYSBzaGFyZWQgbGF0Y2ggdGhhdCBvbmx5IG9wZW5zIG9uY2UgYWxsIDQgcm9vdHMgaGF2ZVxuICAgICAgLy8gZW50ZXJlZC4gSWYgdGhlIHJvb3RzIHJhbiBzZXF1ZW50aWFsbHksIHRoZSBmaXJzdCB3b3VsZCBhd2FpdCB0aGUgbGF0Y2ggZm9yZXZlciDihpIgdGhlXG4gICAgICAvLyB0ZXN0IHdvdWxkIHRpbWUgb3V0OyBjb21wbGV0aW5nIHByb3ZlcyBhbGwgNCB3ZXJlIGluIGZsaWdodCBjb25jdXJyZW50bHkuXG4gICAgICBsZXQgcmVsZWFzZTogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGdhdGUgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKHJlbGVhc2UgPSByZXNvbHZlKSk7XG4gICAgICBsZXQgc3RhcnRlZCA9IDA7XG4gICAgICBjb25zdCBnYXRlZCA9IChyZXN1bHQ6IGFueSkgPT5cbiAgICAgICAgc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCsrc3RhcnRlZCA9PT0gNCkge1xuICAgICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBnYXRlO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgLy8gb25lIGdhdGVkIGVudHJ5IHBvaW50IHBlciByb290OiBtdWx0aXNpZyByb290cyB2aWEgY3JlYXRlQml0R28sIE1QQyByb290cyB2aWEgY3JlYXRlTXBjXG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3RidGMnXSA9IG1ha2VLZXljaGFpbnMoJ3RidGMnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndGJ0YyddLmNyZWF0ZUJpdEdvID0gZ2F0ZWQoeyBpZDogJ3RidGMtYml0Z28nIH0pO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10gPSBtYWtlS2V5Y2hhaW5zKCd0eGxtJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXS5jcmVhdGVCaXRHbyA9IGdhdGVkKHsgaWQ6ICd0eGxtLWJpdGdvJyB9KTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXSA9IG1ha2VLZXljaGFpbnMoJ2h0ZXRoJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjID0gZ2F0ZWQoe1xuICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6ICdodGV0aC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJhY2t1cCcgfSxcbiAgICAgICAgYml0Z29LZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJpdGdvJyB9LFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXSA9IG1ha2VLZXljaGFpbnMoJ3Rzb2wnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYyA9IGdhdGVkKHtcbiAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiAndHNvbC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ3Rzb2wtYmFja3VwJyB9LFxuICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiAndHNvbC1iaXRnbycgfSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgICBzdGFydGVkLnNob3VsZC5lcXVhbCg0KTtcbiAgICB9KTtcblxuICAgIGl0KCdydW5zIG9ubHkgdGhlIGVuYWJsZWQgY2VyZW1vbmllcyB3aGVuIGVuYWJsZWRSb290U2xvdHMgaXMgYSBzdWJzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7XG4gICAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwdycsXG4gICAgICAgIHNhZmVJZDogJ3NhZmUtMScsXG4gICAgICAgIGVuYWJsZWRSb290U2xvdHM6IFsnZWNkc2FNcGMnLCAnZWRkc2FNcGMnXSxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIHJvb3RLZXlzOiB7XG4gICAgICAgICAgaG90OiB7XG4gICAgICAgICAgICBlY2RzYU1wYzogWydodGV0aC11c2VyJywgJ2h0ZXRoLWJhY2t1cCcsICdodGV0aC1iaXRnbyddLFxuICAgICAgICAgICAgZWRkc2FNcGM6IFsndHNvbC11c2VyJywgJ3Rzb2wtYmFja3VwJywgJ3Rzb2wtYml0Z28nXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW4uc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCd0YnRjJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW4uc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCd0eGxtJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYXJjaGl2ZXMgdGhlIHNhZmUgYW5kIHRocm93cyBsaXN0aW5nIGV2ZXJ5IGZhaWxlZCBjZXJlbW9ueScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFR3byBjZXJlbW9uaWVzIGZhaWwgKGFuIE1QQyBhbmQgYSBtdWx0aXNpZyByb290KS5cbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXSA9IG1ha2VLZXljaGFpbnMoJ2h0ZXRoJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdka2xzIGJvb20nKSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXSA9IG1ha2VLZXljaGFpbnMoJ3R4bG0nKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHhsbSddLmNyZWF0ZUJpdEdvID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdiaXRnbyBrZXkgYm9vbScpKTtcbiAgICAgIC8vIGFyY2hpdmUgc3VjY2VlZHMsIHJldHVybmluZyBhIHZhbGlkIChhcmNoaXZlZCkgU2FmZURhdGFcbiAgICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgLi4uc2FmZURhdGFXaXJlLCBzdGF0dXM6ICdhcmNoaXZlZCcgfSksXG4gICAgICB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCBlcnIgPSBhd2FpdCBzYWZlc1xuICAgICAgICAuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9TYWZlIGtleSBnZW5lcmF0aW9uIGZhaWxlZCBmb3IgMiByb290Lyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubWF0Y2goL2VjZHNhTXBjOiBka2xzIGJvb20vKTtcbiAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5tYXRjaCgvZWQyNTUxOU11bHRpc2lnOiBiaXRnbyBrZXkgYm9vbS8pO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLm1hdGNoKC9oYXMgYmVlbiBhcmNoaXZlZC8pO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLm5vdC5tYXRjaCgvYXJjaGl2aW5nIHRoZSBzYWZlIGFsc28gZmFpbGVkLyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28ucG9zdCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy9zYWZlLTEvYXJjaGl2ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ25vdGVzIHdoZW4gYXJjaGl2aW5nIGFsc28gZmFpbHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXSA9IG1ha2VLZXljaGFpbnMoJ3Rzb2wnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYyA9IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignZWRkc2EgYm9vbScpKTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoe1xuICAgICAgICBzZW5kOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdhcmNoaXZlIDUwMCcpKSB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9hcmNoaXZpbmcgdGhlIHNhZmUgYWxzbyBmYWlsZWQgXFwoYXJjaGl2ZSA1MDBcXCkuKmFyY2hpdmUgaXQgbWFudWFsbHkvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZpbmFsaXplU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByb290S2V5cyA9IHtcbiAgICAgIGhvdDoge1xuICAgICAgICBzZWNwMjU2azFNdWx0aXNpZzogWyd1MScsICdiMScsICdnMSddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgICAgZWNkc2FNcGM6IFsndTInLCAnYjInLCAnZzInXSBhcyBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgIGVkZHNhTXBjOiBbJ3UzJywgJ2IzJywgJ2czJ10gYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICBlZDI1NTE5TXVsdGlzaWc6IFsndTQnLCAnYjQnLCAnZzQnXSBhcyBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpdCgnUE9TVHMgdGhlIHJvb3RLZXlzIHRvIHRoZSBmaW5hbGl6ZSBVUkwgYW5kIHJldHVybnMgdGhlIGFjdGl2ZSBTYWZlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoc2FmZURhdGFXaXJlKSB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5maW5hbGl6ZVNhZmUoJ3Rlc3Qtc2FmZS1pZCcsIHsgcm9vdEtleXMgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuYmUuaW5zdGFuY2VvZihTYWZlKTtcbiAgICAgIHJlc3VsdC5zdGF0dXMoKS5zaG91bGQuZXF1YWwoJ2FjdGl2ZScpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2ZpbmFsaXplJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKHNlbmQsIHsgcm9vdEtleXMgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhcmNoaXZlU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnUE9TVHMgdG8gdGhlIGFyY2hpdmUgVVJMIGFuZCByZXR1cm5zIHRoZSBhcmNoaXZlZCBTYWZlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyB9KSB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5hcmNoaXZlU2FmZSgndGVzdC1zYWZlLWlkJyk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuYmUuaW5zdGFuY2VvZihTYWZlKTtcbiAgICAgIHJlc3VsdC5zdGF0dXMoKS5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28ucG9zdCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvYXJjaGl2ZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2VuZXJhdGVTYWZlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdjaGFpbnMgaW5pdGlhbGl6ZSDihpIgY3JlYXRlU2FmZUtleXMg4oaSIGZpbmFsaXplLCB0aHJlYWRpbmcgdGhlIHNhZmVJZCBhbmQgZW5hYmxlZFJvb3RTbG90cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemluZzogSW5pdGlhbGl6ZVNhZmVSZXNwb25zZSA9IHtcbiAgICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBzdGF0dXM6ICdpbml0aWFsaXppbmcnLFxuICAgICAgICBlbmFibGVkUm9vdFNsb3RzOiBbJ2VjZHNhTXBjJywgJ2VkZHNhTXBjJ10sXG4gICAgICB9O1xuICAgICAgY29uc3Qgcm9vdEtleXM6IFNhZmVLZXlzID0geyByb290S2V5czogeyBob3Q6IHt9IH0gfTtcbiAgICAgIGNvbnN0IGluaXRTdHViID0gc2lub24uc3R1YihzYWZlcywgJ2luaXRpYWxpemVTYWZlJykucmVzb2x2ZXMoaW5pdGlhbGl6aW5nKTtcbiAgICAgIGNvbnN0IGtleXNTdHViID0gc2lub24uc3R1YihzYWZlcywgJ2NyZWF0ZVNhZmVLZXlzJykucmVzb2x2ZXMocm9vdEtleXMpO1xuICAgICAgY29uc3QgZmluYWxpemVTdHViID0gc2lub24uc3R1YihzYWZlcywgJ2ZpbmFsaXplU2FmZScpLnJlc29sdmVzKG5ldyBTYWZlKG1vY2tCaXRHbywgc2FmZURhdGFXaXJlIGFzIGFueSkpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5nZW5lcmF0ZVNhZmUoeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnIH0pO1xuXG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGluaXRTdHViLCB7IGxhYmVsOiAnbXkgc2FmZScgfSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGtleXNTdHViLCB7XG4gICAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwdycsXG4gICAgICAgIHNhZmVJZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICAgIGVuYWJsZWRSb290U2xvdHM6IFsnZWNkc2FNcGMnLCAnZWRkc2FNcGMnXSxcbiAgICAgIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoZmluYWxpemVTdHViLCAndGVzdC1zYWZlLWlkJywgcm9vdEtleXMpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihpbml0U3R1Yiwga2V5c1N0dWIsIGZpbmFsaXplU3R1Yik7XG4gICAgICByZXN1bHQuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnR0VUcyB0aGUgc2FmZSBVUkwgYW5kIHJldHVybnMgYSBTYWZlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbW9ja0JpdEdvLmdldCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoc2FmZURhdGFXaXJlKSB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuZ2V0KHsgaWQ6ICd0ZXN0LXNhZmUtaWQnIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICByZXN1bHQuaWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmdldCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ0dFVHMgdGhlIHNhZmVzIGNvbGxlY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3BvbnNlIHRvIFNhZmVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJuc1RoaXMoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHNhZmVzOiBbc2FmZURhdGFXaXJlXSwgbmV4dEJhdGNoUHJldklkOiAnbmV4dC1wYWdlLWlkJyB9KTtcbiAgICAgIG1vY2tCaXRHby5nZXQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHF1ZXJ5LCByZXN1bHQgfSk7XG5cbiAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBzYWZlcy5saXN0KCk7XG5cbiAgICAgIHBhZ2Uuc2FmZXMuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgcGFnZS5zYWZlc1swXS5zaG91bGQuYmUuaW5zdGFuY2VvZihTYWZlKTtcbiAgICAgIHBhZ2Uuc2FmZXNbMF0uaWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgcGFnZS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmV4dEN1cnNvcicsICduZXh0LXBhZ2UtaWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5nZXQsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMnKTtcbiAgICAgIC8vIG5vIGN1cnNvci9saW1pdCBwYXNzZWQg4oaSIGVtcHR5IHF1ZXJ5XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChxdWVyeSwge30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hcHMgY3Vyc29y4oaScHJldklkIGFuZCBsaW1pdCBvbnRvIHRoZSBxdWVyeScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2lub24uc3R1YigpLnJldHVybnNUaGlzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzYWZlczogW10gfSk7XG4gICAgICBtb2NrQml0R28uZ2V0ID0gc2lub24uc3R1YigpLnJldHVybnMoeyBxdWVyeSwgcmVzdWx0IH0pO1xuXG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgc2FmZXMubGlzdCh7IGN1cnNvcjogJ3ByZXYtcGFnZS1pZCcsIGxpbWl0OiA1MCB9KTtcblxuICAgICAgcGFnZS5zYWZlcy5zaG91bGQuaGF2ZS5sZW5ndGgoMCk7XG4gICAgICAvLyBhYnNlbnQgbmV4dEJhdGNoUHJldklkIOKGkiB1bmRlZmluZWQgbmV4dEN1cnNvciAobGFzdCBwYWdlKVxuICAgICAgKHBhZ2UubmV4dEN1cnNvciA9PT0gdW5kZWZpbmVkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgocXVlcnksIHsgbGltaXQ6IDUwLCBwcmV2SWQ6ICdwcmV2LXBhZ2UtaWQnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRW50ZXJwcmlzZS5zYWZlcygpIGFjY2Vzc29yJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIGEgU2FmZXMgaW5zdGFuY2Ugc2NvcGVkIHRvIHRoZSBlbnRlcnByaXNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZW50ZXJwcmlzZSA9IG5ldyBFbnRlcnByaXNlKG1vY2tCaXRHbywge30gYXMgYW55LCB7IGlkOiAnZW50LWlkJywgbmFtZTogJ2VudCcgfSk7XG4gICAgICBlbnRlcnByaXNlLnNhZmVzKCkuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZXMpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=getPotentialStuckTxs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPotentialStuckTxs.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/getPotentialStuckTxs.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const sinon = __importStar(require("sinon"));
37
+ require("should");
38
+ const src_1 = require("../../../../src");
39
+ describe('Wallet - getPotentialStuckTxs', function () {
40
+ let wallet;
41
+ let mockBitGo;
42
+ let mockBaseCoin;
43
+ beforeEach(function () {
44
+ mockBitGo = { get: sinon.stub() };
45
+ mockBaseCoin = {
46
+ url: sinon.stub().returns('/api/v2/btc'),
47
+ supportsTss: sinon.stub().returns(false),
48
+ };
49
+ wallet = new src_1.Wallet(mockBitGo, mockBaseCoin, {
50
+ id: 'test-wallet-id',
51
+ keys: ['user-key', 'backup-key', 'bitgo-key'],
52
+ });
53
+ });
54
+ afterEach(function () {
55
+ sinon.restore();
56
+ });
57
+ function stubGet() {
58
+ const response = [{ txId: 'tx-id' }];
59
+ const resultStub = sinon.stub().resolves(response);
60
+ const queryStub = sinon.stub().returns({ result: resultStub });
61
+ mockBitGo.get.returns({ query: queryStub });
62
+ return { response, queryStub };
63
+ }
64
+ it('does not add age filters when no options are supplied', async function () {
65
+ const { response, queryStub } = stubGet();
66
+ const result = await wallet.getPotentialStuckTxs();
67
+ result.should.deepEqual(response);
68
+ sinon.assert.calledWith(mockBitGo.get, '/api/v2/btc');
69
+ sinon.assert.calledWith(mockBaseCoin.url, '/wallet/test-wallet-id/potentialStuckTxs');
70
+ sinon.assert.calledWith(queryStub, {});
71
+ });
72
+ it('forwards the minimum unconfirmed minutes filter', async function () {
73
+ const { queryStub } = stubGet();
74
+ await wallet.getPotentialStuckTxs({ minUnconfirmedMinutes: 30 });
75
+ sinon.assert.calledWith(queryStub, { minUnconfirmedMinutes: 30 });
76
+ });
77
+ it('forwards the minimum unconfirmed blocks filter', async function () {
78
+ const { queryStub } = stubGet();
79
+ await wallet.getPotentialStuckTxs({ minUnconfirmedBlocks: 6 });
80
+ sinon.assert.calledWith(queryStub, { minUnconfirmedBlocks: 6 });
81
+ });
82
+ it('forwards both age filters together', async function () {
83
+ const { queryStub } = stubGet();
84
+ await wallet.getPotentialStuckTxs({ minUnconfirmedMinutes: 30, minUnconfirmedBlocks: 6 });
85
+ sinon.assert.calledWith(queryStub, { minUnconfirmedMinutes: 30, minUnconfirmedBlocks: 6 });
86
+ });
87
+ });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UG90ZW50aWFsU3R1Y2tUeHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vd2FsbGV0L2dldFBvdGVudGlhbFN0dWNrVHhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQix5Q0FBeUM7QUFFekMsUUFBUSxDQUFDLCtCQUErQixFQUFFO0lBQ3hDLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksU0FBYyxDQUFDO0lBQ25CLElBQUksWUFBaUIsQ0FBQztJQUV0QixVQUFVLENBQUM7UUFDVCxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDbEMsWUFBWSxHQUFHO1lBQ2IsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUN6QyxDQUFDO1FBQ0YsTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUU7WUFDM0MsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQztTQUM5QyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsT0FBTztRQUNkLE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLO1FBQy9ELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFMUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVuRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsMENBQTBDLENBQUMsQ0FBQztRQUN0RixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztRQUN6RCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFaEMsTUFBTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSztRQUN4RCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFaEMsTUFBTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSztRQUM1QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFaEMsTUFBTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ1dhbGxldCAtIGdldFBvdGVudGlhbFN0dWNrVHhzJywgZnVuY3Rpb24gKCkge1xuICBsZXQgd2FsbGV0OiBXYWxsZXQ7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgbGV0IG1vY2tCYXNlQ29pbjogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHsgZ2V0OiBzaW5vbi5zdHViKCkgfTtcbiAgICBtb2NrQmFzZUNvaW4gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCcvYXBpL3YyL2J0YycpLFxuICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICB9O1xuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4sIHtcbiAgICAgIGlkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgICAga2V5czogWyd1c2VyLWtleScsICdiYWNrdXAta2V5JywgJ2JpdGdvLWtleSddLFxuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gc3R1YkdldCgpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IFt7IHR4SWQ6ICd0eC1pZCcgfV07XG4gICAgY29uc3QgcmVzdWx0U3R1YiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhyZXNwb25zZSk7XG4gICAgY29uc3QgcXVlcnlTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgbW9ja0JpdEdvLmdldC5yZXR1cm5zKHsgcXVlcnk6IHF1ZXJ5U3R1YiB9KTtcbiAgICByZXR1cm4geyByZXNwb25zZSwgcXVlcnlTdHViIH07XG4gIH1cblxuICBpdCgnZG9lcyBub3QgYWRkIGFnZSBmaWx0ZXJzIHdoZW4gbm8gb3B0aW9ucyBhcmUgc3VwcGxpZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeyByZXNwb25zZSwgcXVlcnlTdHViIH0gPSBzdHViR2V0KCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWxsZXQuZ2V0UG90ZW50aWFsU3R1Y2tUeHMoKTtcblxuICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHJlc3BvbnNlKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uZ2V0LCAnL2FwaS92Mi9idGMnKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQmFzZUNvaW4udXJsLCAnL3dhbGxldC90ZXN0LXdhbGxldC1pZC9wb3RlbnRpYWxTdHVja1R4cycpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHF1ZXJ5U3R1Yiwge30pO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZHMgdGhlIG1pbmltdW0gdW5jb25maXJtZWQgbWludXRlcyBmaWx0ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeyBxdWVyeVN0dWIgfSA9IHN0dWJHZXQoKTtcblxuICAgIGF3YWl0IHdhbGxldC5nZXRQb3RlbnRpYWxTdHVja1R4cyh7IG1pblVuY29uZmlybWVkTWludXRlczogMzAgfSk7XG5cbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChxdWVyeVN0dWIsIHsgbWluVW5jb25maXJtZWRNaW51dGVzOiAzMCB9KTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRzIHRoZSBtaW5pbXVtIHVuY29uZmlybWVkIGJsb2NrcyBmaWx0ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgeyBxdWVyeVN0dWIgfSA9IHN0dWJHZXQoKTtcblxuICAgIGF3YWl0IHdhbGxldC5nZXRQb3RlbnRpYWxTdHVja1R4cyh7IG1pblVuY29uZmlybWVkQmxvY2tzOiA2IH0pO1xuXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgocXVlcnlTdHViLCB7IG1pblVuY29uZmlybWVkQmxvY2tzOiA2IH0pO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZHMgYm90aCBhZ2UgZmlsdGVycyB0b2dldGhlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB7IHF1ZXJ5U3R1YiB9ID0gc3R1YkdldCgpO1xuXG4gICAgYXdhaXQgd2FsbGV0LmdldFBvdGVudGlhbFN0dWNrVHhzKHsgbWluVW5jb25maXJtZWRNaW51dGVzOiAzMCwgbWluVW5jb25maXJtZWRCbG9ja3M6IDYgfSk7XG5cbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChxdWVyeVN0dWIsIHsgbWluVW5jb25maXJtZWRNaW51dGVzOiAzMCwgbWluVW5jb25maXJtZWRCbG9ja3M6IDYgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -30,6 +30,9 @@ describe('wallet options codecs with encryptionVersion', () => {
30
30
  it('GenerateLightningWalletOptionsCodec works without encryptionVersion', () => {
31
31
  assert_1.default.ok((0, Either_1.isRight)(iWallets_1.GenerateLightningWalletOptionsCodec.decode(lightningBase)));
32
32
  });
33
+ it('GenerateLightningWalletOptionsCodec accepts encryptionVersion: 1 during the v2-decrypt rollout window', () => {
34
+ assert_1.default.ok((0, Either_1.isRight)(iWallets_1.GenerateLightningWalletOptionsCodec.decode({ ...lightningBase, encryptionVersion: 1 })));
35
+ });
33
36
  it('GenerateGoAccountWalletOptionsCodec accepts encryptionVersion: 2', () => {
34
37
  assert_1.default.ok((0, Either_1.isRight)(iWallets_1.GenerateGoAccountWalletOptionsCodec.decode({ ...goAccountBase, encryptionVersion: 2 })));
35
38
  });
@@ -63,4 +66,4 @@ describe('wallet options codecs with encryptionVersion', () => {
63
66
  })));
64
67
  });
65
68
  });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0T3B0aW9uc0NvZGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby93YWxsZXQvd2FsbGV0T3B0aW9uc0NvZGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qix5Q0FBK0M7QUFFL0Msb0VBRytDO0FBRS9DLFFBQVEsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsTUFBTSxhQUFhLEdBQUc7UUFDcEIsS0FBSyxFQUFFLE1BQU07UUFDYixVQUFVLEVBQUUsTUFBTTtRQUNsQixVQUFVLEVBQUUsS0FBSztRQUNqQixzQkFBc0IsRUFBRSxNQUFNO1FBQzlCLE9BQU8sRUFBRSxrQkFBMkI7S0FDckMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLEtBQUssRUFBRSxNQUFNO1FBQ2IsVUFBVSxFQUFFLE1BQU07UUFDbEIsVUFBVSxFQUFFLEtBQUs7UUFDakIsc0JBQXNCLEVBQUUsTUFBTTtRQUM5QixJQUFJLEVBQUUsU0FBa0I7S0FDekIsQ0FBQztJQUVGLEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7UUFDMUUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxHQUFHLEVBQUU7UUFDN0UsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzFFLGdCQUFNLENBQUMsRUFBRSxDQUFDLElBQUEsZ0JBQU8sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7UUFDMUUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxlQUFNLEVBQUMsOENBQW1DLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUUsR0FBRyxFQUFFO1FBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLElBQUEsZ0JBQU8sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtGQUErRixFQUFFLEdBQUcsRUFBRTtRQUN2RyxnQkFBTSxDQUFDLEVBQUUsQ0FDUCxJQUFBLGdCQUFPLEVBQ0wsOENBQW1DLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEdBQUcsYUFBYTtZQUNoQixzQkFBc0IsRUFBRSxLQUFLO1NBQzlCLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1R0FBdUcsRUFBRSxHQUFHLEVBQUU7UUFDL0csZ0JBQU0sQ0FBQyxFQUFFLENBQ1AsSUFBQSxnQkFBTyxFQUNMLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQztZQUN6QyxLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLElBQUksRUFBRSxTQUFTO1lBQ2Ysc0JBQXNCLEVBQUUsS0FBSztTQUM5QixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUdBQXVHLEVBQUUsR0FBRyxFQUFFO1FBQy9HLGdCQUFNLENBQUMsRUFBRSxDQUNQLElBQUEsZUFBTSxFQUNKLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQztZQUN6QyxLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLElBQUksRUFBRSxTQUFTO1lBQ2Ysc0JBQXNCLEVBQUUsS0FBSztTQUM5QixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGlzUmlnaHQsIGlzTGVmdCB9IGZyb20gJ2ZwLXRzL0VpdGhlcic7XG5cbmltcG9ydCB7XG4gIEdlbmVyYXRlTGlnaHRuaW5nV2FsbGV0T3B0aW9uc0NvZGVjLFxuICBHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9pV2FsbGV0cyc7XG5cbmRlc2NyaWJlKCd3YWxsZXQgb3B0aW9ucyBjb2RlY3Mgd2l0aCBlbmNyeXB0aW9uVmVyc2lvbicsICgpID0+IHtcbiAgY29uc3QgbGlnaHRuaW5nQmFzZSA9IHtcbiAgICBsYWJlbDogJ3Rlc3QnLFxuICAgIHBhc3NwaHJhc2U6ICdwYXNzJyxcbiAgICBlbnRlcnByaXNlOiAnZW50JyxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlOiAnY29kZScsXG4gICAgc3ViVHlwZTogJ2xpZ2h0bmluZ0N1c3RvZHknIGFzIGNvbnN0LFxuICB9O1xuXG4gIGNvbnN0IGdvQWNjb3VudEJhc2UgPSB7XG4gICAgbGFiZWw6ICd0ZXN0JyxcbiAgICBwYXNzcGhyYXNlOiAncGFzcycsXG4gICAgZW50ZXJwcmlzZTogJ2VudCcsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogJ2NvZGUnLFxuICAgIHR5cGU6ICd0cmFkaW5nJyBhcyBjb25zdCxcbiAgfTtcblxuICBpdCgnR2VuZXJhdGVMaWdodG5pbmdXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBlbmNyeXB0aW9uVmVyc2lvbjogMicsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNSaWdodChHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoeyAuLi5saWdodG5pbmdCYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVMaWdodG5pbmdXYWxsZXRPcHRpb25zQ29kZWMgcmVqZWN0cyBlbmNyeXB0aW9uVmVyc2lvbjogMycsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNMZWZ0KEdlbmVyYXRlTGlnaHRuaW5nV2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7IC4uLmxpZ2h0bmluZ0Jhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAzIH0pKSk7XG4gIH0pO1xuXG4gIGl0KCdHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYyB3b3JrcyB3aXRob3V0IGVuY3J5cHRpb25WZXJzaW9uJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhpc1JpZ2h0KEdlbmVyYXRlTGlnaHRuaW5nV2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZShsaWdodG5pbmdCYXNlKSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBlbmNyeXB0aW9uVmVyc2lvbjogMicsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNSaWdodChHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoeyAuLi5nb0FjY291bnRCYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgcmVqZWN0cyBlbmNyeXB0aW9uVmVyc2lvbjogMycsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNMZWZ0KEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7IC4uLmdvQWNjb3VudEJhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAzIH0pKSk7XG4gIH0pO1xuXG4gIGl0KCdHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYyB3b3JrcyB3aXRob3V0IGVuY3J5cHRpb25WZXJzaW9uJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhpc1JpZ2h0KEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZShnb0FjY291bnRCYXNlKSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBwYXNzd29yZCBmaWVsZHMgd2hlbiB1c2VyIGtleSBzaWduaW5nIGlzIGRpc2FibGVkJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhcbiAgICAgIGlzUmlnaHQoXG4gICAgICAgIEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7XG4gICAgICAgICAgLi4uZ29BY2NvdW50QmFzZSxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBvbWl0dGVkIHBhc3N3b3JkIGZpZWxkcyB3aGVuIHVzZXIga2V5IHNpZ25pbmcgaXMgZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgaXNSaWdodChcbiAgICAgICAgR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMuZGVjb2RlKHtcbiAgICAgICAgICBsYWJlbDogJ3Rlc3QnLFxuICAgICAgICAgIGVudGVycHJpc2U6ICdlbnQnLFxuICAgICAgICAgIHR5cGU6ICd0cmFkaW5nJyxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgcmVqZWN0cyBhIHNpbmdsZSBwYXNzd29yZCBmaWVsZCB3aGVuIHVzZXIga2V5IHNpZ25pbmcgaXMgZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgaXNMZWZ0KFxuICAgICAgICBHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoe1xuICAgICAgICAgIGxhYmVsOiAndGVzdCcsXG4gICAgICAgICAgcGFzc3BocmFzZTogJ3Bhc3MnLFxuICAgICAgICAgIGVudGVycHJpc2U6ICdlbnQnLFxuICAgICAgICAgIHR5cGU6ICd0cmFkaW5nJyxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcbn0pO1xuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0T3B0aW9uc0NvZGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby93YWxsZXQvd2FsbGV0T3B0aW9uc0NvZGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qix5Q0FBK0M7QUFFL0Msb0VBRytDO0FBRS9DLFFBQVEsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsTUFBTSxhQUFhLEdBQUc7UUFDcEIsS0FBSyxFQUFFLE1BQU07UUFDYixVQUFVLEVBQUUsTUFBTTtRQUNsQixVQUFVLEVBQUUsS0FBSztRQUNqQixzQkFBc0IsRUFBRSxNQUFNO1FBQzlCLE9BQU8sRUFBRSxrQkFBMkI7S0FDckMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLEtBQUssRUFBRSxNQUFNO1FBQ2IsVUFBVSxFQUFFLE1BQU07UUFDbEIsVUFBVSxFQUFFLEtBQUs7UUFDakIsc0JBQXNCLEVBQUUsTUFBTTtRQUM5QixJQUFJLEVBQUUsU0FBa0I7S0FDekIsQ0FBQztJQUVGLEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7UUFDMUUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxHQUFHLEVBQUU7UUFDN0UsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUdBQXVHLEVBQUUsR0FBRyxFQUFFO1FBQy9HLGdCQUFNLENBQUMsRUFBRSxDQUFDLElBQUEsZ0JBQU8sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7UUFDMUUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyw4Q0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxHQUFHLEVBQUU7UUFDN0UsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBQSxnQkFBTyxFQUFDLDhDQUFtQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0ZBQStGLEVBQUUsR0FBRyxFQUFFO1FBQ3ZHLGdCQUFNLENBQUMsRUFBRSxDQUNQLElBQUEsZ0JBQU8sRUFDTCw4Q0FBbUMsQ0FBQyxNQUFNLENBQUM7WUFDekMsR0FBRyxhQUFhO1lBQ2hCLHNCQUFzQixFQUFFLEtBQUs7U0FDOUIsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVHQUF1RyxFQUFFLEdBQUcsRUFBRTtRQUMvRyxnQkFBTSxDQUFDLEVBQUUsQ0FDUCxJQUFBLGdCQUFPLEVBQ0wsOENBQW1DLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLFNBQVM7WUFDZixzQkFBc0IsRUFBRSxLQUFLO1NBQzlCLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1R0FBdUcsRUFBRSxHQUFHLEVBQUU7UUFDL0csZ0JBQU0sQ0FBQyxFQUFFLENBQ1AsSUFBQSxlQUFNLEVBQ0osOENBQW1DLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFLE1BQU07WUFDbEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLFNBQVM7WUFDZixzQkFBc0IsRUFBRSxLQUFLO1NBQzlCLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgaXNSaWdodCwgaXNMZWZ0IH0gZnJvbSAnZnAtdHMvRWl0aGVyJztcblxuaW1wb3J0IHtcbiAgR2VuZXJhdGVMaWdodG5pbmdXYWxsZXRPcHRpb25zQ29kZWMsXG4gIEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L2lXYWxsZXRzJztcblxuZGVzY3JpYmUoJ3dhbGxldCBvcHRpb25zIGNvZGVjcyB3aXRoIGVuY3J5cHRpb25WZXJzaW9uJywgKCkgPT4ge1xuICBjb25zdCBsaWdodG5pbmdCYXNlID0ge1xuICAgIGxhYmVsOiAndGVzdCcsXG4gICAgcGFzc3BocmFzZTogJ3Bhc3MnLFxuICAgIGVudGVycHJpc2U6ICdlbnQnLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGU6ICdjb2RlJyxcbiAgICBzdWJUeXBlOiAnbGlnaHRuaW5nQ3VzdG9keScgYXMgY29uc3QsXG4gIH07XG5cbiAgY29uc3QgZ29BY2NvdW50QmFzZSA9IHtcbiAgICBsYWJlbDogJ3Rlc3QnLFxuICAgIHBhc3NwaHJhc2U6ICdwYXNzJyxcbiAgICBlbnRlcnByaXNlOiAnZW50JyxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlOiAnY29kZScsXG4gICAgdHlwZTogJ3RyYWRpbmcnIGFzIGNvbnN0LFxuICB9O1xuXG4gIGl0KCdHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYyBhY2NlcHRzIGVuY3J5cHRpb25WZXJzaW9uOiAyJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhpc1JpZ2h0KEdlbmVyYXRlTGlnaHRuaW5nV2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7IC4uLmxpZ2h0bmluZ0Jhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAyIH0pKSk7XG4gIH0pO1xuXG4gIGl0KCdHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYyByZWplY3RzIGVuY3J5cHRpb25WZXJzaW9uOiAzJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhpc0xlZnQoR2VuZXJhdGVMaWdodG5pbmdXYWxsZXRPcHRpb25zQ29kZWMuZGVjb2RlKHsgLi4ubGlnaHRuaW5nQmFzZSwgZW5jcnlwdGlvblZlcnNpb246IDMgfSkpKTtcbiAgfSk7XG5cbiAgaXQoJ0dlbmVyYXRlTGlnaHRuaW5nV2FsbGV0T3B0aW9uc0NvZGVjIHdvcmtzIHdpdGhvdXQgZW5jcnlwdGlvblZlcnNpb24nLCAoKSA9PiB7XG4gICAgYXNzZXJ0Lm9rKGlzUmlnaHQoR2VuZXJhdGVMaWdodG5pbmdXYWxsZXRPcHRpb25zQ29kZWMuZGVjb2RlKGxpZ2h0bmluZ0Jhc2UpKSk7XG4gIH0pO1xuXG4gIGl0KCdHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYyBhY2NlcHRzIGVuY3J5cHRpb25WZXJzaW9uOiAxIGR1cmluZyB0aGUgdjItZGVjcnlwdCByb2xsb3V0IHdpbmRvdycsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNSaWdodChHZW5lcmF0ZUxpZ2h0bmluZ1dhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoeyAuLi5saWdodG5pbmdCYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMSB9KSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBlbmNyeXB0aW9uVmVyc2lvbjogMicsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNSaWdodChHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoeyAuLi5nb0FjY291bnRCYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgcmVqZWN0cyBlbmNyeXB0aW9uVmVyc2lvbjogMycsICgpID0+IHtcbiAgICBhc3NlcnQub2soaXNMZWZ0KEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7IC4uLmdvQWNjb3VudEJhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAzIH0pKSk7XG4gIH0pO1xuXG4gIGl0KCdHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYyB3b3JrcyB3aXRob3V0IGVuY3J5cHRpb25WZXJzaW9uJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhpc1JpZ2h0KEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZShnb0FjY291bnRCYXNlKSkpO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBwYXNzd29yZCBmaWVsZHMgd2hlbiB1c2VyIGtleSBzaWduaW5nIGlzIGRpc2FibGVkJywgKCkgPT4ge1xuICAgIGFzc2VydC5vayhcbiAgICAgIGlzUmlnaHQoXG4gICAgICAgIEdlbmVyYXRlR29BY2NvdW50V2FsbGV0T3B0aW9uc0NvZGVjLmRlY29kZSh7XG4gICAgICAgICAgLi4uZ29BY2NvdW50QmFzZSxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgYWNjZXB0cyBvbWl0dGVkIHBhc3N3b3JkIGZpZWxkcyB3aGVuIHVzZXIga2V5IHNpZ25pbmcgaXMgZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgaXNSaWdodChcbiAgICAgICAgR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMuZGVjb2RlKHtcbiAgICAgICAgICBsYWJlbDogJ3Rlc3QnLFxuICAgICAgICAgIGVudGVycHJpc2U6ICdlbnQnLFxuICAgICAgICAgIHR5cGU6ICd0cmFkaW5nJyxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcblxuICBpdCgnR2VuZXJhdGVHb0FjY291bnRXYWxsZXRPcHRpb25zQ29kZWMgcmVqZWN0cyBhIHNpbmdsZSBwYXNzd29yZCBmaWVsZCB3aGVuIHVzZXIga2V5IHNpZ25pbmcgaXMgZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgaXNMZWZ0KFxuICAgICAgICBHZW5lcmF0ZUdvQWNjb3VudFdhbGxldE9wdGlvbnNDb2RlYy5kZWNvZGUoe1xuICAgICAgICAgIGxhYmVsOiAndGVzdCcsXG4gICAgICAgICAgcGFzc3BocmFzZTogJ3Bhc3MnLFxuICAgICAgICAgIGVudGVycHJpc2U6ICdlbnQnLFxuICAgICAgICAgIHR5cGU6ICd0cmFkaW5nJyxcbiAgICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9KTtcbn0pO1xuIl19