@bitgo/sdk-core 38.10.0 → 38.11.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 (70) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +8 -1
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/keychain/iKeychains.d.ts +5 -1
  5. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  6. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  7. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  8. package/dist/src/bitgo/keychain/keychains.js +3 -1
  9. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  10. package/dist/src/bitgo/safe/safe.js +3 -1
  11. package/dist/src/bitgo/safe/safeDerivation.d.ts +19 -4
  12. package/dist/src/bitgo/safe/safeDerivation.d.ts.map +1 -1
  13. package/dist/src/bitgo/safe/safeDerivation.js +60 -17
  14. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +12 -1
  15. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
  16. package/dist/src/bitgo/tss/bitgoPubKeys.js +22 -2
  17. package/dist/src/bitgo/tss/common.d.ts +2 -1
  18. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  19. package/dist/src/bitgo/tss/common.js +1 -1
  20. package/dist/src/bitgo/utils/opengpgUtils.d.ts +1 -0
  21. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  22. package/dist/src/bitgo/utils/opengpgUtils.js +5 -1
  23. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +6 -2
  24. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  25. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +31 -7
  26. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -0
  27. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  28. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  29. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  30. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +9 -1
  31. package/dist/src/bitgo/utils/tss/index.d.ts +2 -0
  32. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  33. package/dist/src/bitgo/utils/tss/index.js +4 -2
  34. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  35. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  36. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +128 -0
  37. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  38. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  39. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  40. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +30 -0
  41. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  42. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +46 -0
  43. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +46 -0
  44. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  45. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  46. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  47. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  48. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  49. package/dist/src/bitgo/wallet/safeKeychain.d.ts +2 -2
  50. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
  51. package/dist/src/bitgo/wallet/safeKeychain.js +9 -9
  52. package/dist/src/bitgo/wallet/wallet.d.ts +4 -0
  53. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  54. package/dist/src/bitgo/wallet/wallet.js +6 -4
  55. package/dist/test/unit/bitgo/safe/safe.js +16 -1
  56. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  57. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  58. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  59. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  60. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  61. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +81 -0
  62. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  63. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  64. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +281 -0
  65. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  66. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  67. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  68. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +83 -4
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/package.json +6 -6
@@ -145,6 +145,7 @@ describe('Safe', function () {
145
145
  });
146
146
  describe('createWallet (WCN-1203)', function () {
147
147
  const childAt0 = (0, src_1.deriveSafeChildHardenedFromXprv)(ROOT_XPRV, 0);
148
+ const childAt7 = (0, src_1.deriveSafeChildHardenedFromXprv)(ROOT_XPRV, 7);
148
149
  let keychainsAdd;
149
150
  let keychainsGet;
150
151
  let derivationQuery;
@@ -204,9 +205,11 @@ describe('Safe', function () {
204
205
  keyType: 'independent',
205
206
  parent: 'user-root-id',
206
207
  safeId: 'test-safe-id',
208
+ derivedFromParentWithHardenedPath: "m/0'",
207
209
  });
208
210
  addArgs.should.not.have.property('encryptedPrv');
209
211
  addArgs.should.not.have.property('derivedFromParentWithSeed');
212
+ addArgs.should.not.have.property('path');
210
213
  mockBitGo.post.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id/wallets').should.be.true();
211
214
  mintSend.firstCall.args[0].should.eql({
212
215
  coin: 'tbtc',
@@ -222,6 +225,18 @@ describe('Safe', function () {
222
225
  }
223
226
  mintedSafeId.should.equal('test-safe-id');
224
227
  });
228
+ it('registers the child with derivedFromParentWithHardenedPath at a non-zero mint index', async function () {
229
+ derivationQuery.returns({
230
+ result: sinon.stub().resolves({ slot: 'secp256k1Multisig', index: 7 }),
231
+ });
232
+ keychainsAdd.resolves({ id: 'child-key-id', pub: childAt7.pub, type: 'independent' });
233
+ await safe.createWallet({ coin: 'tbtc', label: 'desk 8', passphrase: 'pw' });
234
+ const addArgs = keychainsAdd.firstCall.args[0];
235
+ addArgs.pub.should.equal(childAt7.pub);
236
+ addArgs.derivedFromParentWithHardenedPath.should.equal("m/7'");
237
+ addArgs.should.not.have.property('path');
238
+ addArgs.should.not.have.property('derivedFromParentWithSeed');
239
+ });
225
240
  it('rejects TSS minting', async function () {
226
241
  await safe
227
242
  .createWallet({ coin: 'hteth', label: 'evm', passphrase: 'pw', multisigType: 'tss' })
@@ -259,4 +274,4 @@ describe('Safe', function () {
259
274
  });
260
275
  });
261
276
  });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUFnRztBQUVoRyxNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNsQixDQUFD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RUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUs7WUFDckMsTUFBTSxJQUFJO2lCQUNQLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQzFELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsS0FBSztZQUNwQyxNQUFNLElBQUk7aUJBQ1AsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDOUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsNEJBQXNCLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBTYWZlRGF0YSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgSW5jb3JyZWN0UGFzc3dvcmRFcnJvciwgU2FmZSwgZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmNvbnN0IFJPT1RfWFBSViA9XG4gICd4cHJ2OXMyMVpyUUgxNDNLM2hla3lOajdUY2lSNFhOWWUxa01qNjhXMmlwakpHTkhFVFdQN280MkFqRG5TUGdLaGRaNHg4TkJBdmFMNzJSclhqdVhOZG1rTXFMRVJaemE3M29ZdWdHdGJMRlhHOGcnO1xuXG5kZXNjcmliZSgnU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmU6IFNhZmU7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgbGV0IHNhZmVEYXRhOiBTYWZlRGF0YTtcbiAgLy8gd2lyZS1zaGFwZWQgU2FmZURhdGEgKHRpbWVzdGFtcHMgYXMgSVNPIHN0cmluZ3MpIGZvciBtb2NrZWQgUkVTVCByZXNwb25zZXMgdGhhdCBnZXQgZGVjb2RlZFxuICBsZXQgc2FmZURhdGFXaXJlOiBhbnk7XG5cbiAgY29uc3Qgc2VjcDI1NmsxTXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsndXNlci1yb290LWlkJywgJ2JhY2t1cC1yb290LWlkJywgJ2JpdGdvLXJvb3QtaWQnXTtcbiAgY29uc3QgZWNkc2FNcGM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWNkc2EtdXNlcicsICdlY2RzYS1iYWNrdXAnLCAnZWNkc2EtYml0Z28nXTtcbiAgY29uc3QgZWRkc2FNcGM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWRkc2EtdXNlcicsICdlZGRzYS1iYWNrdXAnLCAnZWRkc2EtYml0Z28nXTtcbiAgY29uc3QgZWQyNTUxOU11bHRpc2lnOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10gPSBbJ2VkLXVzZXInLCAnZWQtYmFja3VwJywgJ2VkLWJpdGdvJ107XG4gIGNvbnN0IHJvb3RLZXlzID0ge1xuICAgIGhvdDoge1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWcsXG4gICAgICBlY2RzYU1wYyxcbiAgICAgIGVkZHNhTXBjLFxuICAgICAgZWQyNTUxOU11bHRpc2lnLFxuICAgIH0sXG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlRGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgcm9vdEtleXMsXG4gICAgfTtcbiAgICBzYWZlRGF0YVdpcmUgPSB7XG4gICAgICBpZDogJ3Rlc3Qtc2FmZS1pZCcsXG4gICAgICBlbnRlcnByaXNlSWQ6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgbGFiZWw6ICdteSBzYWZlJyxcbiAgICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gICAgICBjcmVhdG9yOiAnY3JlYXRvci1pZCcsXG4gICAgICB1c2VyczogW3sgdXNlcklkOiAnY3JlYXRvci1pZCcsIHBlcm1pc3Npb25zOiBbJ2FkbWluJywgJ3NwZW5kJ10gfV0sXG4gICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA3LTA3VDAwOjAwOjAwLjAwMFonLFxuICAgICAgcm9vdEtleXMsXG4gICAgfTtcbiAgICBzYWZlID0gbmV3IFNhZmUobW9ja0JpdEdvLCBzYWZlRGF0YSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0dGVycycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZXhwb3NlcyBpZC9lbnRlcnByaXNlSWQvbGFiZWwvc3RhdHVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS5pZCgpLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgICBzYWZlLmVudGVycHJpc2VJZCgpLnNob3VsZC5lcXVhbCgndGVzdC1lbnRlcnByaXNlLWlkJyk7XG4gICAgICBzYWZlLmxhYmVsKCkuc2hvdWxkLmVxdWFsKCdteSBzYWZlJyk7XG4gICAgICBzYWZlLnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9KU09OIHJldHVybnMgdGhlIHVuZGVybHlpbmcgZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhZmUudG9KU09OKCkuc2hvdWxkLmVxdWFsKHNhZmVEYXRhKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VybCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYnVpbGRzIHRoZSBlbnRlcnByaXNlLXNjb3BlZCB2MiBwYXRoJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS51cmwoKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUudXJsKCcvZnJlZXplJykuc2hvdWxkLmVxdWFsKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2ZyZWV6ZScpO1xuICAgICAgbW9ja0JpdEdvLnVybC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkJywgMikuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZyZWV6ZSAvIGFyY2hpdmUgUkVTVCBwbHVtYmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBzdHViUG9zdChyZXNwb25zZTogdW5rbm93bikge1xuICAgICAgY29uc3QgcmVzdWx0U3R1YiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhyZXNwb25zZSk7XG4gICAgICBjb25zdCBzZW5kU3R1YiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiByZXN1bHRTdHViIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQ6IHNlbmRTdHViIH0pO1xuICAgICAgcmV0dXJuIHsgc2VuZFN0dWIgfTtcbiAgICB9XG5cbiAgICBpdCgnZnJlZXplIHBvc3RzIHRoZSBlbmNvZGVkIGJvZHkgdG8gdGhlIGZyZWV6ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZyb3plbiA9IHsgLi4uc2FmZURhdGFXaXJlLCBmcmVlemU6IHsgcmVhc29uOiAnaW5jaWRlbnQnIH0gfTtcbiAgICAgIGNvbnN0IHsgc2VuZFN0dWIgfSA9IHN0dWJQb3N0KGZyb3plbik7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlLmZyZWV6ZSh7IHJlYXNvbjogJ2luY2lkZW50JyB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNlbmRTdHViLmNhbGxlZFdpdGgoeyByZWFzb246ICdpbmNpZGVudCcgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5mcmVlemUhLnJlYXNvbiEuc2hvdWxkLmVxdWFsKCdpbmNpZGVudCcpO1xuICAgICAgcmVzdWx0LmNyZWF0ZWRBdC5zaG91bGQuYmUuaW5zdGFuY2VvZihEYXRlKTtcbiAgICB9KTtcblxuICAgIGl0KCdhcmNoaXZlIHBvc3RzIGFuIGVtcHR5IGJvZHkgdG8gdGhlIGFyY2hpdmUgcm91dGUgYW5kIGRlY29kZXMgU2FmZURhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmNoaXZlZCA9IHsgLi4uc2FmZURhdGFXaXJlLCBzdGF0dXM6ICdhcmNoaXZlZCcgYXMgY29uc3QgfTtcbiAgICAgIGNvbnN0IHsgc2VuZFN0dWIgfSA9IHN0dWJQb3N0KGFyY2hpdmVkKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuYXJjaGl2ZSgpO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9hcmNoaXZlJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNlbmRTdHViLmNhbGxlZFdpdGhFeGFjdGx5KCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHJlc3VsdC5zdGF0dXMuc2hvdWxkLmVxdWFsKCdhcmNoaXZlZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWVtYmVyL3NoYXJlIG1ldGhvZHMgYXJlIHN0dWJiZWQgKFdDTi0xMjA0KScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYWRkTWVtYmVyIHRocm93cyBub3QtaW1wbGVtZW50ZWQgKFdDTi0xMjA0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWRkTWVtYmVyKHsgdXNlcklkOiAndScsIHBlcm1pc3Npb25zOiBbJ3ZpZXcnXSB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZE1lbWJlclRvV2FsbGV0IHRocm93cyBub3QtaW1wbGVtZW50ZWQgKFdDTi0xMjA0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWRkTWVtYmVyVG9XYWxsZXQoeyB3YWxsZXRJZDogJ3cnLCB3YWxsZXRQYXNzcGhyYXNlOiAncCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdsaXN0U2hhcmVzIHRocm93cyBub3QtaW1wbGVtZW50ZWQgKFdDTi0xMjA0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUubGlzdFNoYXJlcygpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0U2hhcmUgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hY2NlcHRTaGFyZSh7IHNhZmVTaGFyZUlkOiAncycgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZVdhbGxldCAoV0NOLTEyMDMpJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNoaWxkQXQwID0gZGVyaXZlU2FmZUNoaWxkSGFyZGVuZWRGcm9tWHBydihST09UX1hQUlYsIDApO1xuICAgIGxldCBrZXljaGFpbnNBZGQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQga2V5Y2hhaW5zR2V0OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IGRlcml2YXRpb25RdWVyeTogc2lub24uU2lub25TdHViO1xuICAgIGxldCBtaW50U2VuZDogc2lub24uU2lub25TdHViO1xuXG4gICAgZnVuY3Rpb24gc3R1YkNvaW4oY2hhaW46IHN0cmluZywgb3B0czogeyBnZXREZWZhdWx0TXVsdGlzaWdUeXBlPzogc3RyaW5nIH0gPSB7fSkge1xuICAgICAga2V5Y2hhaW5zR2V0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBgZW5jOiR7Uk9PVF9YUFJWfWAsXG4gICAgICAgIHB1YjogJ3Jvb3QteHB1YicsXG4gICAgICAgIHR5cGU6ICdpbmRlcGVuZGVudCcsXG4gICAgICB9KTtcbiAgICAgIGtleWNoYWluc0FkZCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAnY2hpbGQta2V5LWlkJywgcHViOiBjaGlsZEF0MC5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG4gICAgICBtb2NrQml0R28uY29pbiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgZ2V0Q2hhaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGNoYWluKSxcbiAgICAgICAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZTogc2lub24uc3R1YigpLnJldHVybnMob3B0cy5nZXREZWZhdWx0TXVsdGlzaWdUeXBlKSxcbiAgICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgICAga2V5Y2hhaW5zOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IGdldDoga2V5Y2hhaW5zR2V0LCBhZGQ6IGtleWNoYWluc0FkZCB9KSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ3RidGMnKTtcbiAgICAgIG1vY2tCaXRHby5kZWNyeXB0ID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgoeyBpbnB1dCwgcGFzc3dvcmQgfTogeyBpbnB1dDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAncHcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgcGFzc3dvcmQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgnZW5jOicpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpbnB1dC5zbGljZSg0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgY2lwaGVydGV4dCcpO1xuICAgICAgfSk7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7IHF1ZXJ5OiBkZXJpdmF0aW9uUXVlcnkgfSk7XG4gICAgICBjb25zdCBtaW50UmVzdWx0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd3YWxsZXQtaWQnLFxuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGtleXM6IFsnY2hpbGQta2V5LWlkJywgJ2JhY2t1cC1jaGlsZCcsICdiaXRnby1jaGlsZCddLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgICBzYWZlOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIH0pO1xuICAgICAgbWludFNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogbWludFJlc3VsdCB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBtaW50U2VuZCB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwZWVrcyB0aGUgaW5kZXgsIHJlZ2lzdGVycyBhIHB1YmxpYy1vbmx5IHVzZXIgY2hpbGQsIGFuZCBtaW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldCA9IGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgMScsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIGRlcml2YXRpb25RdWVyeS5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICd1c2VyLXJvb3QtaWQnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNBZGQuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgYWRkQXJncyA9IGtleWNoYWluc0FkZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgIHB1YjogY2hpbGRBdDAucHViLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAga2V5VHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgICAgcGFyZW50OiAndXNlci1yb290LWlkJyxcbiAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIH0pO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnKTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC93YWxsZXRzJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGxhYmVsOiAnZGVzayAxJyxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBrZXlzOiBbJ2NoaWxkLWtleS1pZCddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgICAgY29uc3QgbWludGVkU2FmZUlkID0gd2FsbGV0LnNhZmVJZCgpO1xuICAgICAgaWYgKG1pbnRlZFNhZmVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgbWludGVkIHdhbGxldCB0byBpbmNsdWRlIHNhZmVJZCcpO1xuICAgICAgfVxuICAgICAgbWludGVkU2FmZUlkLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBUU1MgbWludGluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICdodGV0aCcsIGxhYmVsOiAnZXZtJywgcGFzc3BocmFzZTogJ3B3JywgbXVsdGlzaWdUeXBlOiAndHNzJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvTVBDIHNhZmUgd2FsbGV0IG1pbnRpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBUU1MtZGVmYXVsdCBjb2luIGV2ZW4gd2l0aG91dCBtdWx0aXNpZ1R5cGUgdHNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ2h0ZXRoJywgeyBnZXREZWZhdWx0TXVsdGlzaWdUeXBlOiAndHNzJyB9KTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICdodGV0aCcsIGxhYmVsOiAnZXZtJywgcGFzc3BocmFzZTogJ3B3JyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvTVBDIHNhZmUgd2FsbGV0IG1pbnRpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBwZWVrZWQgZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIHdyb25nIHNsb3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ2VjZHNhTXBjJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICdkZXNrIDEnLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9yZXR1cm5lZCBzbG90ICdlY2RzYU1wYycvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGVkMjU1MTkgb25jaGFpbiBjb2lucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0dWJDb2luKCd0eGxtJyk7XG4gICAgICBhd2FpdCBzYWZlXG4gICAgICAgIC5jcmVhdGVXYWxsZXQoeyBjb2luOiAndHhsbScsIGxhYmVsOiAneGxtJywgcGFzc3BocmFzZTogJ3B3JyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvZWQyNTUxOSBjb2luIHNhZmUgd2FsbGV0IG1pbnRpbmcgaXMgbm90IHlldCBzdXBwb3J0ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGVtcHR5IHBhc3NwaHJhc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlXG4gICAgICAgIC5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAndycsIHBhc3NwaHJhc2U6ICcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9wYXNzcGhyYXNlIGlzIHJlcXVpcmVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHdyb25nIHBhc3NwaHJhc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlXG4gICAgICAgIC5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAndycsIHBhc3NwaHJhc2U6ICdub3BlJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChJbmNvcnJlY3RQYXNzd29yZEVycm9yKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUFnRztBQUVoRyxNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNsQixDQUFD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Q0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsS0FBSztZQUNyQyxNQUFNLElBQUk7aUJBQ1AsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLO1lBQ3BDLE1BQU0sSUFBSTtpQkFDUCxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUM5RCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw0QkFBc0IsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFNhZmVEYXRhIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBJbmNvcnJlY3RQYXNzd29yZEVycm9yLCBTYWZlLCBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBjb25zdCBzZWNwMjU2azFNdWx0aXNpZzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyd1c2VyLXJvb3QtaWQnLCAnYmFja3VwLXJvb3QtaWQnLCAnYml0Z28tcm9vdC1pZCddO1xuICBjb25zdCBlY2RzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlY2RzYS11c2VyJywgJ2VjZHNhLWJhY2t1cCcsICdlY2RzYS1iaXRnbyddO1xuICBjb25zdCBlZGRzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlZGRzYS11c2VyJywgJ2VkZHNhLWJhY2t1cCcsICdlZGRzYS1iaXRnbyddO1xuICBjb25zdCBlZDI1NTE5TXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWQtdXNlcicsICdlZC1iYWNrdXAnLCAnZWQtYml0Z28nXTtcbiAgY29uc3Qgcm9vdEtleXMgPSB7XG4gICAgaG90OiB7XG4gICAgICBzZWNwMjU2azFNdWx0aXNpZyxcbiAgICAgIGVjZHNhTXBjLFxuICAgICAgZWRkc2FNcGMsXG4gICAgICBlZDI1NTE5TXVsdGlzaWcsXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuICAgIHNhZmVEYXRhID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyksXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmVEYXRhV2lyZSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicsXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmUgPSBuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXR0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdleHBvc2VzIGlkL2VudGVycHJpc2VJZC9sYWJlbC9zdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUuZW50ZXJwcmlzZUlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICAgIHNhZmUuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b0pTT04gcmV0dXJucyB0aGUgdW5kZXJseWluZyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS50b0pTT04oKS5zaG91bGQuZXF1YWwoc2FmZURhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXJsJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdidWlsZHMgdGhlIGVudGVycHJpc2Utc2NvcGVkIHYyIHBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnVybCgpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS51cmwoJy9mcmVlemUnKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJyk7XG4gICAgICBtb2NrQml0R28udXJsLmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnLCAyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJlZXplIC8gYXJjaGl2ZSBSRVNUIHBsdW1iaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0dWJQb3N0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2VuZFN0dWIgfSk7XG4gICAgICByZXR1cm4geyBzZW5kU3R1YiB9O1xuICAgIH1cblxuICAgIGl0KCdmcmVlemUgcG9zdHMgdGhlIGVuY29kZWQgYm9keSB0byB0aGUgZnJlZXplIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZnJvemVuID0geyAuLi5zYWZlRGF0YVdpcmUsIGZyZWV6ZTogeyByZWFzb246ICdpbmNpZGVudCcgfSB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoZnJvemVuKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuZnJlZXplKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aCh7IHJlYXNvbjogJ2luY2lkZW50JyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LmZyZWV6ZSEucmVhc29uIS5zaG91bGQuZXF1YWwoJ2luY2lkZW50Jyk7XG4gICAgICByZXN1bHQuY3JlYXRlZEF0LnNob3VsZC5iZS5pbnN0YW5jZW9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmUgcG9zdHMgYW4gZW1wdHkgYm9keSB0byB0aGUgYXJjaGl2ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVkID0geyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyBhcyBjb25zdCB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoYXJjaGl2ZWQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5hcmNoaXZlKCk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtZW1iZXIvc2hhcmUgbWV0aG9kcyBhcmUgc3R1YmJlZCAoV0NOLTEyMDQpJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhZGRNZW1iZXIgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hZGRNZW1iZXIoeyB1c2VySWQ6ICd1JywgcGVybWlzc2lvbnM6IFsndmlldyddIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkTWVtYmVyVG9XYWxsZXQgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hZGRNZW1iZXJUb1dhbGxldCh7IHdhbGxldElkOiAndycsIHdhbGxldFBhc3NwaHJhc2U6ICdwJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2xpc3RTaGFyZXMgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5saXN0U2hhcmVzKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRTaGFyZSB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFjY2VwdFNoYXJlKHsgc2FmZVNoYXJlSWQ6ICdzJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlV2FsbGV0IChXQ04tMTIwMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY2hpbGRBdDAgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgMCk7XG4gICAgY29uc3QgY2hpbGRBdDcgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgNyk7XG4gICAgbGV0IGtleWNoYWluc0FkZDogc2lub24uU2lub25TdHViO1xuICAgIGxldCBrZXljaGFpbnNHZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZGVyaXZhdGlvblF1ZXJ5OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IG1pbnRTZW5kOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBmdW5jdGlvbiBzdHViQ29pbihjaGFpbjogc3RyaW5nLCBvcHRzOiB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU/OiBzdHJpbmcgfSA9IHt9KSB7XG4gICAgICBrZXljaGFpbnNHZXQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3VzZXItcm9vdC1pZCcsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6IGBlbmM6JHtST09UX1hQUlZ9YCxcbiAgICAgICAgcHViOiAncm9vdC14cHViJyxcbiAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGNoaWxkQXQwLnB1YiwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICBnZXRDaGFpbjogc2lub24uc3R1YigpLnJldHVybnMoY2hhaW4pLFxuICAgICAgICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlOiBzaW5vbi5zdHViKCkucmV0dXJucyhvcHRzLmdldERlZmF1bHRNdWx0aXNpZ1R5cGUpLFxuICAgICAgICBzdXBwb3J0c1Rzczogc2lub24uc3R1YigpLnJldHVybnMoZmFsc2UpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgZ2V0OiBrZXljaGFpbnNHZXQsIGFkZDoga2V5Y2hhaW5zQWRkIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbigndGJ0YycpO1xuICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKCh7IGlucHV0LCBwYXNzd29yZCB9OiB7IGlucHV0OiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICBpZiAocGFzc3dvcmQgIT09ICdwdycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBwYXNzd29yZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKCdlbmM6JykpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGlucHV0LnNsaWNlKDQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBjaXBoZXJ0ZXh0Jyk7XG4gICAgICB9KTtcbiAgICAgIGRlcml2YXRpb25RdWVyeSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgbW9ja0JpdEdvLmdldC5yZXR1cm5zKHsgcXVlcnk6IGRlcml2YXRpb25RdWVyeSB9KTtcbiAgICAgIGNvbnN0IG1pbnRSZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3dhbGxldC1pZCcsXG4gICAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnLCAnYmFja3VwLWNoaWxkJywgJ2JpdGdvLWNoaWxkJ10sXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHNhZmU6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgfSk7XG4gICAgICBtaW50U2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBtaW50UmVzdWx0IH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQ6IG1pbnRTZW5kIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3BlZWtzIHRoZSBpbmRleCwgcmVnaXN0ZXJzIGEgcHVibGljLW9ubHkgdXNlciBjaGlsZCwgYW5kIG1pbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAnZGVzayAxJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0dldC5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBpZDogJ3VzZXItcm9vdC1pZCcgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0FkZC5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBjb25zdCBhZGRBcmdzID0ga2V5Y2hhaW5zQWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkQXJncy5zaG91bGQuZXFsKHtcbiAgICAgICAgcHViOiBjaGlsZEF0MC5wdWIsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBrZXlUeXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgICBwYXJlbnQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGg6IFwibS8wJ1wiLFxuICAgICAgfSk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkUHJ2Jyk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ3BhdGgnKTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC93YWxsZXRzJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGxhYmVsOiAnZGVzayAxJyxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBrZXlzOiBbJ2NoaWxkLWtleS1pZCddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgICAgY29uc3QgbWludGVkU2FmZUlkID0gd2FsbGV0LnNhZmVJZCgpO1xuICAgICAgaWYgKG1pbnRlZFNhZmVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgbWludGVkIHdhbGxldCB0byBpbmNsdWRlIHNhZmVJZCcpO1xuICAgICAgfVxuICAgICAgbWludGVkU2FmZUlkLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVnaXN0ZXJzIHRoZSBjaGlsZCB3aXRoIGRlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCBhdCBhIG5vbi16ZXJvIG1pbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgaW5kZXg6IDcgfSksXG4gICAgICB9KTtcbiAgICAgIGtleWNoYWluc0FkZC5yZXNvbHZlcyh7IGlkOiAnY2hpbGQta2V5LWlkJywgcHViOiBjaGlsZEF0Ny5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgOCcsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBhZGRBcmdzLnB1Yi5zaG91bGQuZXF1YWwoY2hpbGRBdDcucHViKTtcbiAgICAgIGFkZEFyZ3MuZGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoLnNob3VsZC5lcXVhbChcIm0vNydcIik7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgncGF0aCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIFRTUyBtaW50aW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ2h0ZXRoJywgbGFiZWw6ICdldm0nLCBwYXNzcGhyYXNlOiAncHcnLCBtdWx0aXNpZ1R5cGU6ICd0c3MnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9NUEMgc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIFRTUy1kZWZhdWx0IGNvaW4gZXZlbiB3aXRob3V0IG11bHRpc2lnVHlwZSB0c3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbignaHRldGgnLCB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU6ICd0c3MnIH0pO1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ2h0ZXRoJywgbGFiZWw6ICdldm0nLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9NUEMgc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHBlZWtlZCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgd3Jvbmcgc2xvdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcml2YXRpb25RdWVyeS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnZWNkc2FNcGMnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgMScsIHBhc3NwaHJhc2U6ICdwdycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3JldHVybmVkIHNsb3QgJ2VjZHNhTXBjJy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZWQyNTUxOSBvbmNoYWluIGNvaW5zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ3R4bG0nKTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0eGxtJywgbGFiZWw6ICd4bG0nLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9lZDI1NTE5IGNvaW4gc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IHN1cHBvcnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gZW1wdHkgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3Bhc3NwaHJhc2UgaXMgcmVxdWlyZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgd3JvbmcgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJ25vcGUnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKEluY29ycmVjdFBhc3N3b3JkRXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bitgoPubKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitgoPubKeys.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/tss/bitgoPubKeys.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
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 assert = __importStar(require("assert"));
37
+ const bitgoPubKeys_1 = require("../../../../src/bitgo/tss/bitgoPubKeys");
38
+ describe('bitgoPubKeys RedPallas MPCv2 key config', function () {
39
+ it('getBitgoMpcGpgPubKey returns a key for redpallasMpcv2 across env/hsmType combos', function () {
40
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('test', 'nitro', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test);
41
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('prod', 'nitro', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.prod);
42
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('test', 'onprem', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.onprem.test);
43
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('prod', 'onprem', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.onprem.prod);
44
+ });
45
+ it('non-prod/non-adminProd envs default to the test key for redpallasMpcv2', function () {
46
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('staging', 'nitro', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test);
47
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('adminTest', 'onprem', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.onprem.test);
48
+ });
49
+ it('adminProd resolves to the prod key for redpallasMpcv2', function () {
50
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('adminProd', 'nitro', 'redpallasMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.prod);
51
+ });
52
+ it('isBitgoRedpallasMpcv2PubKey identifies known redpallasMpcv2 keys', function () {
53
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoRedpallasMpcv2PubKey)(bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test), true);
54
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoRedpallasMpcv2PubKey)(bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.onprem.prod), true);
55
+ });
56
+ it('isBitgoRedpallasMpcv2PubKey rejects keys from other mpc versions', function () {
57
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoRedpallasMpcv2PubKey)(bitgoPubKeys_1.bitgoMpcGpgPubKeys.mpcv1.nitro.test), false);
58
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoRedpallasMpcv2PubKey)('not-a-real-key'), false);
59
+ });
60
+ it('does not affect eddsaMpcv2 key lookups', function () {
61
+ assert.strictEqual((0, bitgoPubKeys_1.getBitgoMpcGpgPubKey)('test', 'nitro', 'eddsaMpcv2'), bitgoPubKeys_1.bitgoMpcGpgPubKeys.eddsaMpcv2.nitro.test);
62
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoEddsaMpcv2PubKey)(bitgoPubKeys_1.bitgoMpcGpgPubKeys.eddsaMpcv2.nitro.test), true);
63
+ assert.strictEqual((0, bitgoPubKeys_1.isBitgoEddsaMpcv2PubKey)(bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test), true); // interim: same key material
64
+ });
65
+ });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Z29QdWJLZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3Rzcy9iaXRnb1B1YktleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMseUVBS2dEO0FBRWhELFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRTtJQUNsRCxFQUFFLENBQUMsaUZBQWlGLEVBQUU7UUFDcEYsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQ3ZELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM3QyxDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQ3ZELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM3QyxDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQ3hELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM5QyxDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQ3hELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM5QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0VBQXdFLEVBQUU7UUFDM0UsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQzFELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM3QyxDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQzdELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM5QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUU7UUFDMUQsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBQSxtQ0FBb0IsRUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQzVELGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM3QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUU7UUFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLDBDQUEyQixFQUFDLGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLDBDQUEyQixFQUFDLGlDQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUU7UUFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLDBDQUEyQixFQUFDLGlDQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUYsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLDBDQUEyQixFQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUU7UUFDM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLG1DQUFvQixFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQUUsaUNBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsSCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsc0NBQXVCLEVBQUMsaUNBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsc0NBQXVCLEVBQUMsaUNBQWtCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUNoSSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBiaXRnb01wY0dwZ1B1YktleXMsXG4gIGdldEJpdGdvTXBjR3BnUHViS2V5LFxuICBpc0JpdGdvRWRkc2FNcGN2MlB1YktleSxcbiAgaXNCaXRnb1JlZHBhbGxhc01wY3YyUHViS2V5LFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2JpdGdvUHViS2V5cyc7XG5cbmRlc2NyaWJlKCdiaXRnb1B1YktleXMgUmVkUGFsbGFzIE1QQ3YyIGtleSBjb25maWcnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdnZXRCaXRnb01wY0dwZ1B1YktleSByZXR1cm5zIGEga2V5IGZvciByZWRwYWxsYXNNcGN2MiBhY3Jvc3MgZW52L2hzbVR5cGUgY29tYm9zJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGdldEJpdGdvTXBjR3BnUHViS2V5KCd0ZXN0JywgJ25pdHJvJywgJ3JlZHBhbGxhc01wY3YyJyksXG4gICAgICBiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIubml0cm8udGVzdFxuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgZ2V0Qml0Z29NcGNHcGdQdWJLZXkoJ3Byb2QnLCAnbml0cm8nLCAncmVkcGFsbGFzTXBjdjInKSxcbiAgICAgIGJpdGdvTXBjR3BnUHViS2V5cy5yZWRwYWxsYXNNcGN2Mi5uaXRyby5wcm9kXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBnZXRCaXRnb01wY0dwZ1B1YktleSgndGVzdCcsICdvbnByZW0nLCAncmVkcGFsbGFzTXBjdjInKSxcbiAgICAgIGJpdGdvTXBjR3BnUHViS2V5cy5yZWRwYWxsYXNNcGN2Mi5vbnByZW0udGVzdFxuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgZ2V0Qml0Z29NcGNHcGdQdWJLZXkoJ3Byb2QnLCAnb25wcmVtJywgJ3JlZHBhbGxhc01wY3YyJyksXG4gICAgICBiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIub25wcmVtLnByb2RcbiAgICApO1xuICB9KTtcblxuICBpdCgnbm9uLXByb2Qvbm9uLWFkbWluUHJvZCBlbnZzIGRlZmF1bHQgdG8gdGhlIHRlc3Qga2V5IGZvciByZWRwYWxsYXNNcGN2MicsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBnZXRCaXRnb01wY0dwZ1B1YktleSgnc3RhZ2luZycsICduaXRybycsICdyZWRwYWxsYXNNcGN2MicpLFxuICAgICAgYml0Z29NcGNHcGdQdWJLZXlzLnJlZHBhbGxhc01wY3YyLm5pdHJvLnRlc3RcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGdldEJpdGdvTXBjR3BnUHViS2V5KCdhZG1pblRlc3QnLCAnb25wcmVtJywgJ3JlZHBhbGxhc01wY3YyJyksXG4gICAgICBiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIub25wcmVtLnRlc3RcbiAgICApO1xuICB9KTtcblxuICBpdCgnYWRtaW5Qcm9kIHJlc29sdmVzIHRvIHRoZSBwcm9kIGtleSBmb3IgcmVkcGFsbGFzTXBjdjInLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgZ2V0Qml0Z29NcGNHcGdQdWJLZXkoJ2FkbWluUHJvZCcsICduaXRybycsICdyZWRwYWxsYXNNcGN2MicpLFxuICAgICAgYml0Z29NcGNHcGdQdWJLZXlzLnJlZHBhbGxhc01wY3YyLm5pdHJvLnByb2RcbiAgICApO1xuICB9KTtcblxuICBpdCgnaXNCaXRnb1JlZHBhbGxhc01wY3YyUHViS2V5IGlkZW50aWZpZXMga25vd24gcmVkcGFsbGFzTXBjdjIga2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNCaXRnb1JlZHBhbGxhc01wY3YyUHViS2V5KGJpdGdvTXBjR3BnUHViS2V5cy5yZWRwYWxsYXNNcGN2Mi5uaXRyby50ZXN0KSwgdHJ1ZSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzQml0Z29SZWRwYWxsYXNNcGN2MlB1YktleShiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIub25wcmVtLnByb2QpLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ2lzQml0Z29SZWRwYWxsYXNNcGN2MlB1YktleSByZWplY3RzIGtleXMgZnJvbSBvdGhlciBtcGMgdmVyc2lvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzQml0Z29SZWRwYWxsYXNNcGN2MlB1YktleShiaXRnb01wY0dwZ1B1YktleXMubXBjdjEubml0cm8udGVzdCksIGZhbHNlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNCaXRnb1JlZHBhbGxhc01wY3YyUHViS2V5KCdub3QtYS1yZWFsLWtleScpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBhZmZlY3QgZWRkc2FNcGN2MiBrZXkgbG9va3VwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0Qml0Z29NcGNHcGdQdWJLZXkoJ3Rlc3QnLCAnbml0cm8nLCAnZWRkc2FNcGN2MicpLCBiaXRnb01wY0dwZ1B1YktleXMuZWRkc2FNcGN2Mi5uaXRyby50ZXN0KTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkoYml0Z29NcGNHcGdQdWJLZXlzLmVkZHNhTXBjdjIubml0cm8udGVzdCksIHRydWUpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0JpdGdvRWRkc2FNcGN2MlB1YktleShiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIubml0cm8udGVzdCksIHRydWUpOyAvLyBpbnRlcmltOiBzYW1lIGtleSBtYXRlcmlhbFxuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redpallasMPCv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
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 assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ const src_1 = require("../../../../../../src");
39
+ const { RedpallasMPCv2Utils } = src_1.RedpallasUtils;
40
+ describe('RedpallasMPCv2Utils', function () {
41
+ afterEach(function () {
42
+ sinon.restore();
43
+ });
44
+ describe('sendKeyGenerationRound1 / sendKeyGenerationRound2 dispatch', function () {
45
+ let utils;
46
+ beforeEach(function () {
47
+ const mockBitGo = {};
48
+ const mockCoin = {};
49
+ utils = new RedpallasMPCv2Utils(mockBitGo, mockCoin);
50
+ });
51
+ it('sendKeyGenerationRound1BySender invokes the sender with the MPCv2-R1 round', async function () {
52
+ const senderFn = sinon.stub().resolves({ sessionId: 's1', bitgoMsg1: { message: 'm', signature: 'sig' } });
53
+ const payload = {
54
+ userGpgPublicKey: 'user-pub',
55
+ backupGpgPublicKey: 'backup-pub',
56
+ userMsg1: { message: 'u1', signature: 'usig' },
57
+ backupMsg1: { message: 'b1', signature: 'bsig' },
58
+ };
59
+ const result = await utils.sendKeyGenerationRound1BySender(senderFn, payload);
60
+ assert.ok(senderFn.calledOnceWith('MPCv2-R1', payload));
61
+ assert.strictEqual(result.sessionId, 's1');
62
+ });
63
+ it('sendKeyGenerationRound2BySender invokes the sender with the MPCv2-R2 round', async function () {
64
+ const senderFn = sinon.stub().resolves({
65
+ sessionId: 's1',
66
+ commonPublicKeychain: 'a'.repeat(64),
67
+ bitgoMsg2: { message: 'm', signature: 'sig' },
68
+ });
69
+ const payload = {
70
+ sessionId: 's1',
71
+ userMsg2: { message: 'u2', signature: 'usig' },
72
+ backupMsg2: { message: 'b2', signature: 'bsig' },
73
+ derivationSeed: 'a'.repeat(64),
74
+ };
75
+ const result = await utils.sendKeyGenerationRound2BySender(senderFn, payload);
76
+ assert.ok(senderFn.calledOnceWith('MPCv2-R2', payload));
77
+ assert.strictEqual(result.commonPublicKeychain, 'a'.repeat(64));
78
+ });
79
+ });
80
+ });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0IsK0NBQTZFO0FBRTdFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLG9CQUFjLENBQUM7QUFHL0MsUUFBUSxDQUFDLHFCQUFxQixFQUFFO0lBQzlCLFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw0REFBNEQsRUFBRTtRQUNyRSxJQUFJLEtBQTBCLENBQUM7UUFFL0IsVUFBVSxDQUFDO1lBQ1QsTUFBTSxTQUFTLEdBQUcsRUFBMEIsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxFQUEwQixDQUFDO1lBQzVDLEtBQUssR0FBRyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1lBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRyxNQUFNLE9BQU8sR0FBRztnQkFDZCxnQkFBZ0IsRUFBRSxVQUFVO2dCQUM1QixrQkFBa0IsRUFBRSxZQUFZO2dCQUNoQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7Z0JBQzlDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTthQUNqRCxDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsUUFBaUIsRUFBRSxPQUFnQixDQUFDLENBQUM7WUFFaEcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1lBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7YUFDOUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2dCQUM5QyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7Z0JBQ2hELGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzthQUMvQixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsUUFBaUIsRUFBRSxPQUFnQixDQUFDLENBQUM7WUFFaEcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgSUJhc2VDb2luLCBSZWRwYWxsYXNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NyYyc7XG5cbmNvbnN0IHsgUmVkcGFsbGFzTVBDdjJVdGlscyB9ID0gUmVkcGFsbGFzVXRpbHM7XG50eXBlIFJlZHBhbGxhc01QQ3YyVXRpbHMgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFJlZHBhbGxhc1V0aWxzLlJlZHBhbGxhc01QQ3YyVXRpbHM+O1xuXG5kZXNjcmliZSgnUmVkcGFsbGFzTVBDdjJVdGlscycsIGZ1bmN0aW9uICgpIHtcbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZW5kS2V5R2VuZXJhdGlvblJvdW5kMSAvIHNlbmRLZXlHZW5lcmF0aW9uUm91bmQyIGRpc3BhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCB1dGlsczogUmVkcGFsbGFzTVBDdjJVdGlscztcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja0JpdEdvID0ge30gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG4gICAgICBjb25zdCBtb2NrQ29pbiA9IHt9IGFzIHVua25vd24gYXMgSUJhc2VDb2luO1xuICAgICAgdXRpbHMgPSBuZXcgUmVkcGFsbGFzTVBDdjJVdGlscyhtb2NrQml0R28sIG1vY2tDb2luKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZW5kS2V5R2VuZXJhdGlvblJvdW5kMUJ5U2VuZGVyIGludm9rZXMgdGhlIHNlbmRlciB3aXRoIHRoZSBNUEN2Mi1SMSByb3VuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmRlckZuID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2Vzc2lvbklkOiAnczEnLCBiaXRnb01zZzE6IHsgbWVzc2FnZTogJ20nLCBzaWduYXR1cmU6ICdzaWcnIH0gfSk7XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICB1c2VyR3BnUHVibGljS2V5OiAndXNlci1wdWInLFxuICAgICAgICBiYWNrdXBHcGdQdWJsaWNLZXk6ICdiYWNrdXAtcHViJyxcbiAgICAgICAgdXNlck1zZzE6IHsgbWVzc2FnZTogJ3UxJywgc2lnbmF0dXJlOiAndXNpZycgfSxcbiAgICAgICAgYmFja3VwTXNnMTogeyBtZXNzYWdlOiAnYjEnLCBzaWduYXR1cmU6ICdic2lnJyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbHMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDFCeVNlbmRlcihzZW5kZXJGbiBhcyBuZXZlciwgcGF5bG9hZCBhcyBuZXZlcik7XG5cbiAgICAgIGFzc2VydC5vayhzZW5kZXJGbi5jYWxsZWRPbmNlV2l0aCgnTVBDdjItUjEnLCBwYXlsb2FkKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnNlc3Npb25JZCwgJ3MxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VuZEtleUdlbmVyYXRpb25Sb3VuZDJCeVNlbmRlciBpbnZva2VzIHRoZSBzZW5kZXIgd2l0aCB0aGUgTVBDdjItUjIgcm91bmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kZXJGbiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgIHNlc3Npb25JZDogJ3MxJyxcbiAgICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW46ICdhJy5yZXBlYXQoNjQpLFxuICAgICAgICBiaXRnb01zZzI6IHsgbWVzc2FnZTogJ20nLCBzaWduYXR1cmU6ICdzaWcnIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIHNlc3Npb25JZDogJ3MxJyxcbiAgICAgICAgdXNlck1zZzI6IHsgbWVzc2FnZTogJ3UyJywgc2lnbmF0dXJlOiAndXNpZycgfSxcbiAgICAgICAgYmFja3VwTXNnMjogeyBtZXNzYWdlOiAnYjInLCBzaWduYXR1cmU6ICdic2lnJyB9LFxuICAgICAgICBkZXJpdmF0aW9uU2VlZDogJ2EnLnJlcGVhdCg2NCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1dGlscy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMkJ5U2VuZGVyKHNlbmRlckZuIGFzIG5ldmVyLCBwYXlsb2FkIGFzIG5ldmVyKTtcblxuICAgICAgYXNzZXJ0Lm9rKHNlbmRlckZuLmNhbGxlZE9uY2VXaXRoKCdNUEN2Mi1SMicsIHBheWxvYWQpKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuY29tbW9uUHVibGljS2V5Y2hhaW4sICdhJy5yZXBlYXQoNjQpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smcUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smcUtil.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/redpallas/smcUtil.ts"],"names":[],"mappings":""}