@bitgo/sdk-core 38.23.0 → 39.1.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 (81) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +37 -3
  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/errors.d.ts +6 -0
  5. package/dist/src/bitgo/errors.d.ts.map +1 -1
  6. package/dist/src/bitgo/errors.js +11 -2
  7. package/dist/src/bitgo/keychain/iKeychains.d.ts +22 -2
  8. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  9. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  10. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  11. package/dist/src/bitgo/keychain/keychains.js +31 -1
  12. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +18 -0
  13. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -1
  14. package/dist/src/bitgo/safe/derivableEd25519Pub.js +39 -3
  15. package/dist/src/bitgo/safe/recovery.d.ts +44 -3
  16. package/dist/src/bitgo/safe/recovery.d.ts.map +1 -1
  17. package/dist/src/bitgo/safe/recovery.js +74 -46
  18. package/dist/src/bitgo/safe/safe.d.ts +5 -5
  19. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  20. package/dist/src/bitgo/safe/safe.js +24 -16
  21. package/dist/src/bitgo/tss/common.d.ts +11 -2
  22. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  23. package/dist/src/bitgo/tss/common.js +16 -4
  24. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +10 -5
  25. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -1
  26. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +11 -6
  27. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  28. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +2 -1
  29. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +6 -0
  30. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  31. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  32. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +5 -4
  33. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  34. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +5 -9
  35. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +4 -9
  36. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -1
  37. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +16 -21
  38. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +32 -4
  39. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +92 -3
  41. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +5 -5
  42. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +51 -76
  44. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -21
  45. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +2 -13
  47. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  48. package/dist/src/bitgo/utils/tss/recipientUtils.js +12 -1
  49. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -1
  50. package/dist/src/bitgo/wallet/BuildParams.d.ts +1 -0
  51. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  52. package/dist/src/bitgo/wallet/BuildParams.js +5 -1
  53. package/dist/src/bitgo/wallet/iWallet.d.ts +13 -0
  54. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  55. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  56. package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
  57. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  58. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  59. package/dist/src/bitgo/wallet/safeKeychain.d.ts +1 -1
  60. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
  61. package/dist/src/bitgo/wallet/safeKeychain.js +4 -3
  62. package/dist/src/bitgo/wallet/wallet.d.ts +32 -1
  63. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  64. package/dist/src/bitgo/wallet/wallet.js +210 -83
  65. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  66. package/dist/src/bitgo/wallet/wallets.js +23 -9
  67. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +29 -1
  68. package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -1
  69. package/dist/test/unit/bitgo/safe/recovery.js +164 -6
  70. package/dist/test/unit/bitgo/safe/safe.js +54 -32
  71. package/dist/test/unit/bitgo/safe/safeDerivation.js +15 -53
  72. package/dist/test/unit/bitgo/tss/common.js +12 -5
  73. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +422 -5
  74. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +215 -44
  75. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +37 -1
  76. package/dist/test/unit/bitgo/wallet/BuildParams.js +14 -1
  77. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +29 -49
  78. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +5 -4
  79. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +180 -2
  80. package/dist/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +6 -6
@@ -7,69 +7,31 @@ const src_1 = require("../../../../src");
7
7
  // The secp256k1 ROOT_XPRV vector is secret and lives only here; the leaf's own
8
8
  // test/unit/safeDerivation.ts pins a public BIP32 vector instead.
9
9
  // 32-byte synthetic root seed. The StrKey spelling was generated with stellar-sdk
10
- // (Keypair.fromRawEd25519Seed); the derivation vectors below were generated with an independent
11
- // SLIP-0010 implementation written from the spec and cross-checked against published vectors
12
- // (SLIP-0010 test vector 1 seed 000102...0f derives m/0' to 68e0fe46...dade7a3).
10
+ // (Keypair.fromRawEd25519Seed); the leaf pins the same seed at the same BIP44 path.
13
11
  const ROOT_SEED_STRKEY = 'SAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB6NKI';
14
12
  const ROOT_XPRV = 'xprv9s21ZrQH143K3hekyNj7TciR4XNYe1kMj68W2ipjJGNHETWP7o42AjDnSPgKhdZ4x8NBAvaL72RrXjuXNdmkMqLERZza73oYugGtbLFXG8g';
15
13
  describe('safeDerivation', function () {
16
- describe('parseSafeDerivationIndex', function () {
17
- it('accepts numbers and digit strings', function () {
18
- (0, src_1.parseSafeDerivationIndex)(0).should.equal(0);
19
- (0, src_1.parseSafeDerivationIndex)(7).should.equal(7);
20
- (0, src_1.parseSafeDerivationIndex)('42').should.equal(42);
21
- (0, src_1.parseSafeDerivationIndex)(0x7fffffff).should.equal(0x7fffffff);
22
- });
23
- it('rejects negatives, non-integers, and out-of-range values', function () {
24
- (() => (0, src_1.parseSafeDerivationIndex)(-1)).should.throw(/Invalid safe derivation index/);
25
- (() => (0, src_1.parseSafeDerivationIndex)(1.5)).should.throw(/Invalid safe derivation index/);
26
- (() => (0, src_1.parseSafeDerivationIndex)(0x80000000)).should.throw(/Invalid safe derivation index/);
27
- });
28
- it('rejects non-numeric strings', function () {
29
- (() => (0, src_1.parseSafeDerivationIndex)("0'")).should.throw(/Invalid safe derivation index/);
30
- (() => (0, src_1.parseSafeDerivationIndex)('m/0')).should.throw(/Invalid safe derivation index/);
31
- (() => (0, src_1.parseSafeDerivationIndex)('')).should.throw(/Invalid safe derivation index/);
32
- });
33
- });
34
- describe('getSafeHardenedDerivationPath', function () {
35
- it('formats m/<index> with hardened apostrophe', function () {
36
- (0, src_1.getSafeHardenedDerivationPath)(0).should.equal("m/0'");
37
- (0, src_1.getSafeHardenedDerivationPath)('7').should.equal("m/7'");
38
- (0, src_1.getSafeHardenedDerivationPath)('007').should.equal("m/7'");
39
- });
40
- });
41
14
  describe('deriveSafeChildHardenedFromXprv', function () {
42
- it('derives m/0 from the root xprv', function () {
43
- const child = (0, src_1.deriveSafeChildHardenedFromXprv)(ROOT_XPRV, 0);
44
- child.derivationPath.should.equal("m/0'");
45
- child.pub.should.equal('xpub69PbR6HB6ZaW3Q9CWAzNsmWXC8TBDq1VEmd25XkwUgrU3PVGAbj6bksqPnGWcFdAodXWRpWMXJ5KGim45n55cZjXeW7FDw4BqahtxTEN4wB');
46
- child.prv.should.equal('xprv9vQF1akHGC2Cpv4jQ9TNWdZne6cgpNHdsYhRH9MKvMKVAbA7d4Qr3xZMYXqAS35V4damCDP2hYohCLViHzcGhX4Tr7djjCBruAX73SsjCiC');
15
+ it("derives m/44'/0'/1'/0' from the root xprv", function () {
16
+ const child = (0, src_1.deriveSafeChildHardenedFromXprv)(ROOT_XPRV, (0, src_1.buildSafeBip44Path)(0, 'secp256k1Multisig', 0));
17
+ child.derivationPath.should.equal("m/44'/0'/1'/0'");
18
+ child.pub.should.equal('xpub6DpagSiper5rGnEAK4gGmRJPdgDQCzmWZSY59iJ63NUw6BecfdX71APcU5Wfrq3rCcaFoah1dh7ot2fp1nt5AJMJysxSouPCT5xuHtptAaz');
19
+ child.prv.should.equal('xprv9zqEGwBvpUXZ4J9hD39GQHMf5eNuoY3fCDcUMKtUV2wxDPKU86CrTN58cpUVsjJFu4XqVDZS8SFFX11kZfoRxY7pgaHL2NCqPye1oVPDuad');
47
20
  });
48
21
  });
49
22
  describe('deriveSafeChildEd25519Hardened', function () {
50
- it('derives m/0 to the pinned SLIP-0010 vector', function () {
51
- const child = (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY, 0);
52
- child.should.eql({
53
- prv: 'b127eb5092011c085345c8ce0bfeda6064f9e1249e29cc238c1d64bf2e587ce7',
54
- pub: 'GCTZR46FPFAMYN734SQB4NCNBI44M4DSNM5RJPCDLOMAOFPEUVUXPK7R',
55
- derivationPath: "m/0'",
56
- });
57
- });
58
- it('derives m/7 to the pinned SLIP-0010 vector', function () {
59
- const child = (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY, '7');
60
- child.should.eql({
61
- prv: 'd54701e221cf51e9e208a7c59e3fe3e4cfbb6b91fd3f35ce092a471c35228217',
62
- pub: 'GC2Y5EU2XA22SOSCRSZRNDEY3UAA4OJSLZ5NQUFUZDBQSLMVCIZCBHIN',
63
- derivationPath: "m/7'",
23
+ it("derives m/44'/148'/2'/0' to the pinned SLIP-0010 vector", function () {
24
+ (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY, (0, src_1.buildSafeBip44Path)(148, 'ed25519Multisig', 0)).should.eql({
25
+ prv: '855e8d991b48037b3e0161fd57f1643044878d6afe0db0243719b5201e2e4f69',
26
+ pub: 'GDD3VVFKM64URLG6PO2UFWQXJH67N5UDOV5HZ23M5FJJT5G4LUO7RJWG',
27
+ derivationPath: "m/44'/148'/2'/0'",
64
28
  });
65
29
  });
66
30
  it('rejects a malformed root seed', function () {
67
- (() => (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY.slice(0, 55), 0)).should.throw(/Invalid ed25519 StrKey secret seed/);
68
- (() => (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_XPRV, 0)).should.throw(/Invalid ed25519 StrKey secret seed/);
69
- });
70
- it('rejects an invalid index', function () {
71
- (() => (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY, -1)).should.throw(/Invalid safe derivation index/);
31
+ const path = (0, src_1.buildSafeBip44Path)(148, 'ed25519Multisig', 0);
32
+ (() => (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_SEED_STRKEY.slice(0, 55), path)).should.throw(/Invalid ed25519 StrKey secret seed/);
33
+ (() => (0, src_1.deriveSafeChildEd25519Hardened)(ROOT_XPRV, path)).should.throw(/Invalid ed25519 StrKey secret seed/);
72
34
  });
73
35
  });
74
36
  });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlRGVyaXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQix5Q0FLeUI7QUFFekIsdUZBQXVGO0FBQ3ZGLHlGQUF5RjtBQUN6RiwrRUFBK0U7QUFDL0Usa0VBQWtFO0FBRWxFLGtGQUFrRjtBQUNsRixnR0FBZ0c7QUFDaEcsNkZBQTZGO0FBQzdGLGlGQUFpRjtBQUNqRixNQUFNLGdCQUFnQixHQUFHLDBEQUEwRCxDQUFDO0FBRXBGLE1BQU0sU0FBUyxHQUNiLGlIQUFpSCxDQUFDO0FBRXBILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsMEJBQTBCLEVBQUU7UUFDbkMsRUFBRSxDQUFDLG1DQUFtQyxFQUFFO1lBQ3RDLElBQUEsOEJBQXdCLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFBLDhCQUF3QixFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBQSw4QkFBd0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUEsOEJBQXdCLEVBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRTtZQUM3RCxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsOEJBQXdCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNuRixDQUFDLEdBQUcsRUFBRSxDQUFD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QUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ25GLG9DQUFvQyxDQUNyQyxDQUFDO1lBQ0YsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLG9DQUE4QixFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQkFBMEIsRUFBRTtZQUM3QixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsb0NBQThCLEVBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQsXG4gIGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYsXG4gIGdldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoLFxuICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbi8vIERlbGliZXJhdGUgZ3VhcmQ6IHJlLWRlcml2ZXMgdGhyb3VnaCBzZGstY29yZSdzIHB1YmxpYyBiYXJyZWwgKHdoaWNoIHJlLWV4cG9ydHMgZnJvbVxuLy8gQGJpdGdvL3Nkay1saWItc2FmZXMpIHRvIHByb3ZlIHRoZSByZS1leHBvcnQgYW5kIGJ5dGUtZm9yLWJ5dGUgb3V0cHV0IGhvbGQgZW5kLXRvLWVuZC5cbi8vIFRoZSBzZWNwMjU2azEgUk9PVF9YUFJWIHZlY3RvciBpcyBzZWNyZXQgYW5kIGxpdmVzIG9ubHkgaGVyZTsgdGhlIGxlYWYncyBvd25cbi8vIHRlc3QvdW5pdC9zYWZlRGVyaXZhdGlvbi50cyBwaW5zIGEgcHVibGljIEJJUDMyIHZlY3RvciBpbnN0ZWFkLlxuXG4vLyAzMi1ieXRlIHN5bnRoZXRpYyByb290IHNlZWQuIFRoZSBTdHJLZXkgc3BlbGxpbmcgd2FzIGdlbmVyYXRlZCB3aXRoIHN0ZWxsYXItc2RrXG4vLyAoS2V5cGFpci5mcm9tUmF3RWQyNTUxOVNlZWQpOyB0aGUgZGVyaXZhdGlvbiB2ZWN0b3JzIGJlbG93IHdlcmUgZ2VuZXJhdGVkIHdpdGggYW4gaW5kZXBlbmRlbnRcbi8vIFNMSVAtMDAxMCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGZyb20gdGhlIHNwZWMgYW5kIGNyb3NzLWNoZWNrZWQgYWdhaW5zdCBwdWJsaXNoZWQgdmVjdG9yc1xuLy8gKFNMSVAtMDAxMCB0ZXN0IHZlY3RvciAxIHNlZWQgMDAwMTAyLi4uMGYgZGVyaXZlcyBtLzAnIHRvIDY4ZTBmZTQ2Li4uZGFkZTdhMykuXG5jb25zdCBST09UX1NFRURfU1RSS0VZID0gJ1NBQUFDQVFEQVFDUU1CWUlCRUZBV0RBTkJZSFJBRUlTQ01LQktGUVhEQU1SVUdZNERVUEI2TktJJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdzYWZlRGVyaXZhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ3BhcnNlU2FmZURlcml2YXRpb25JbmRleCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYWNjZXB0cyBudW1iZXJzIGFuZCBkaWdpdCBzdHJpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KDApLnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCg3KS5zaG91bGQuZXF1YWwoNyk7XG4gICAgICBwYXJzZVNhZmVEZXJpdmF0aW9uSW5kZXgoJzQyJykuc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgIHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgweDdmZmZmZmZmKS5zaG91bGQuZXF1YWwoMHg3ZmZmZmZmZik7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBuZWdhdGl2ZXMsIG5vbi1pbnRlZ2VycywgYW5kIG91dC1vZi1yYW5nZSB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KC0xKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgxLjUpKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KDB4ODAwMDAwMDApKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBub24tbnVtZXJpYyBzdHJpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleChcIjAnXCIpKS5zaG91bGQudGhyb3coL0ludmFsaWQgc2FmZSBkZXJpdmF0aW9uIGluZGV4Lyk7XG4gICAgICAoKCkgPT4gcGFyc2VTYWZlRGVyaXZhdGlvbkluZGV4KCdtLzAnKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgICAgKCgpID0+IHBhcnNlU2FmZURlcml2YXRpb25JbmRleCgnJykpLnNob3VsZC50aHJvdygvSW52YWxpZCBzYWZlIGRlcml2YXRpb24gaW5kZXgvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFNhZmVIYXJkZW5lZERlcml2YXRpb25QYXRoJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdmb3JtYXRzIG0vPGluZGV4PiB3aXRoIGhhcmRlbmVkIGFwb3N0cm9waGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBnZXRTYWZlSGFyZGVuZWREZXJpdmF0aW9uUGF0aCgwKS5zaG91bGQuZXF1YWwoXCJtLzAnXCIpO1xuICAgICAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoJzcnKS5zaG91bGQuZXF1YWwoXCJtLzcnXCIpO1xuICAgICAgZ2V0U2FmZUhhcmRlbmVkRGVyaXZhdGlvblBhdGgoJzAwNycpLnNob3VsZC5lcXVhbChcIm0vNydcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdkZXJpdmVzIG0vMCBmcm9tIHRoZSByb290IHhwcnYnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYoUk9PVF9YUFJWLCAwKTtcbiAgICAgIGNoaWxkLmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbChcIm0vMCdcIik7XG4gICAgICBjaGlsZC5wdWIuc2hvdWxkLmVxdWFsKFxuICAgICAgICAneHB1YjY5UGJSNkhCNlphVzNROUNXQXpOc21XWEM4VEJEcTFWRW1kMjVYa3dVZ3JVM1BWR0FiajZia3NxUG5HV2NGZEFvZFhXUnBXTVhKNUtHaW00NW41NWNaalhlVzdGRHc0QnFhaHR4VEVONHdCJ1xuICAgICAgKTtcbiAgICAgIGNoaWxkLnBydi5zaG91bGQuZXF1YWwoXG4gICAgICAgICd4cHJ2OXZRRjFha0hHQzJDcHY0alE5VE5XZFpuZTZjZ3BOSGRzWWhSSDlNS3ZNS1ZBYkE3ZDRRcjN4Wk1ZWHFBUzM1VjRkYW1DRFAyaFlvaENMVmlIemNHaFg0VHI3ZGpqQ0JydUFYNzNTc2pDaUMnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdkZXJpdmVzIG0vMCB0byB0aGUgcGlubmVkIFNMSVAtMDAxMCB2ZWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLCAwKTtcbiAgICAgIGNoaWxkLnNob3VsZC5lcWwoe1xuICAgICAgICBwcnY6ICdiMTI3ZWI1MDkyMDExYzA4NTM0NWM4Y2UwYmZlZGE2MDY0ZjllMTI0OWUyOWNjMjM4YzFkNjRiZjJlNTg3Y2U3JyxcbiAgICAgICAgcHViOiAnR0NUWlI0NkZQRkFNWU43MzRTUUI0TkNOQkk0NE00RFNOTTVSSlBDRExPTUFPRlBFVVZVWFBLN1InLFxuICAgICAgICBkZXJpdmF0aW9uUGF0aDogXCJtLzAnXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXJpdmVzIG0vNyB0byB0aGUgcGlubmVkIFNMSVAtMDAxMCB2ZWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLCAnNycpO1xuICAgICAgY2hpbGQuc2hvdWxkLmVxbCh7XG4gICAgICAgIHBydjogJ2Q1NDcwMWUyMjFjZjUxZTllMjA4YTdjNTllM2ZlM2U0Y2ZiYjZiOTFmZDNmMzVjZTA5MmE0NzFjMzUyMjgyMTcnLFxuICAgICAgICBwdWI6ICdHQzJZNUVVMlhBMjJTT1NDUlNaUk5ERVkzVUFBNE9KU0xaNU5RVUZVWkRCUVNMTVZDSVpDQkhJTicsXG4gICAgICAgIGRlcml2YXRpb25QYXRoOiBcIm0vNydcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBtYWxmb3JtZWQgcm9vdCBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLnNsaWNlKDAsIDU1KSwgMCkpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvXG4gICAgICApO1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1hQUlYsIDApKS5zaG91bGQudGhyb3coL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGludmFsaWQgaW5kZXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkKFJPT1RfU0VFRF9TVFJLRVksIC0xKSkuc2hvdWxkLnRocm93KC9JbnZhbGlkIHNhZmUgZGVyaXZhdGlvbiBpbmRleC8pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZURlcml2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlRGVyaXZhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQix5Q0FBc0g7QUFFdEgsdUZBQXVGO0FBQ3ZGLHlGQUF5RjtBQUN6RiwrRUFBK0U7QUFDL0Usa0VBQWtFO0FBRWxFLGtGQUFrRjtBQUNsRixvRkFBb0Y7QUFDcEYsTUFBTSxnQkFBZ0IsR0FBRywwREFBMEQsQ0FBQztBQUVwRixNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7SUFDekIsUUFBUSxDQUFDLGlDQUFpQyxFQUFFO1FBQzFDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRTtZQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFBLHFDQUErQixFQUFDLFNBQVMsRUFBRSxJQUFBLHdCQUFrQixFQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hHLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDcEIsaUhBQWlILENBQ2xILENBQUM7WUFDRixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3BCLGlIQUFpSCxDQUNsSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUN6QyxFQUFFLENBQUMseURBQXlELEVBQUU7WUFDNUQsSUFBQSxvQ0FBOEIsRUFBQyxnQkFBZ0IsRUFBRSxJQUFBLHdCQUFrQixFQUFDLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ3pHLEdBQUcsRUFBRSxrRUFBa0U7Z0JBQ3ZFLEdBQUcsRUFBRSwwREFBMEQ7Z0JBQy9ELGNBQWMsRUFBRSxrQkFBa0I7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0JBQStCLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBa0IsRUFBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLG9DQUE4QixFQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN0RixvQ0FBb0MsQ0FDckMsQ0FBQztZQUNGLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxvQ0FBOEIsRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDN0csQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgYnVpbGRTYWZlQmlwNDRQYXRoLCBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQsIGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG4vLyBEZWxpYmVyYXRlIGd1YXJkOiByZS1kZXJpdmVzIHRocm91Z2ggc2RrLWNvcmUncyBwdWJsaWMgYmFycmVsICh3aGljaCByZS1leHBvcnRzIGZyb21cbi8vIEBiaXRnby9zZGstbGliLXNhZmVzKSB0byBwcm92ZSB0aGUgcmUtZXhwb3J0IGFuZCBieXRlLWZvci1ieXRlIG91dHB1dCBob2xkIGVuZC10by1lbmQuXG4vLyBUaGUgc2VjcDI1NmsxIFJPT1RfWFBSViB2ZWN0b3IgaXMgc2VjcmV0IGFuZCBsaXZlcyBvbmx5IGhlcmU7IHRoZSBsZWFmJ3Mgb3duXG4vLyB0ZXN0L3VuaXQvc2FmZURlcml2YXRpb24udHMgcGlucyBhIHB1YmxpYyBCSVAzMiB2ZWN0b3IgaW5zdGVhZC5cblxuLy8gMzItYnl0ZSBzeW50aGV0aWMgcm9vdCBzZWVkLiBUaGUgU3RyS2V5IHNwZWxsaW5nIHdhcyBnZW5lcmF0ZWQgd2l0aCBzdGVsbGFyLXNka1xuLy8gKEtleXBhaXIuZnJvbVJhd0VkMjU1MTlTZWVkKTsgdGhlIGxlYWYgcGlucyB0aGUgc2FtZSBzZWVkIGF0IHRoZSBzYW1lIEJJUDQ0IHBhdGguXG5jb25zdCBST09UX1NFRURfU1RSS0VZID0gJ1NBQUFDQVFEQVFDUU1CWUlCRUZBV0RBTkJZSFJBRUlTQ01LQktGUVhEQU1SVUdZNERVUEI2TktJJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdzYWZlRGVyaXZhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2Rlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoXCJkZXJpdmVzIG0vNDQnLzAnLzEnLzAnIGZyb20gdGhlIHJvb3QgeHBydlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGRlcml2ZVNhZmVDaGlsZEhhcmRlbmVkRnJvbVhwcnYoUk9PVF9YUFJWLCBidWlsZFNhZmVCaXA0NFBhdGgoMCwgJ3NlY3AyNTZrMU11bHRpc2lnJywgMCkpO1xuICAgICAgY2hpbGQuZGVyaXZhdGlvblBhdGguc2hvdWxkLmVxdWFsKFwibS80NCcvMCcvMScvMCdcIik7XG4gICAgICBjaGlsZC5wdWIuc2hvdWxkLmVxdWFsKFxuICAgICAgICAneHB1YjZEcGFnU2lwZXI1ckduRUFLNGdHbVJKUGRnRFFDem1XWlNZNTlpSjYzTlV3NkJlY2ZkWDcxQVBjVTVXZnJxM3JDY2FGb2FoMWRoN290MmZwMW50NUFKTUp5c3hTb3VQQ1Q1eHVIdHB0QWF6J1xuICAgICAgKTtcbiAgICAgIGNoaWxkLnBydi5zaG91bGQuZXF1YWwoXG4gICAgICAgICd4cHJ2OXpxRUd3QnZwVVhaNEo5aEQzOUdRSE1mNWVOdW9ZM2ZDRGNVTUt0VVYyd3hEUEtVODZDclRONThjcFVWc2pKRnU0WHFWRFpTOFNGRlgxMWtaZm9SeFk3cGdhSEwyTkNxUHllMW9WUER1YWQnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KFwiZGVyaXZlcyBtLzQ0Jy8xNDgnLzInLzAnIHRvIHRoZSBwaW5uZWQgU0xJUC0wMDEwIHZlY3RvclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmVTYWZlQ2hpbGRFZDI1NTE5SGFyZGVuZWQoUk9PVF9TRUVEX1NUUktFWSwgYnVpbGRTYWZlQmlwNDRQYXRoKDE0OCwgJ2VkMjU1MTlNdWx0aXNpZycsIDApKS5zaG91bGQuZXFsKHtcbiAgICAgICAgcHJ2OiAnODU1ZThkOTkxYjQ4MDM3YjNlMDE2MWZkNTdmMTY0MzA0NDg3OGQ2YWZlMGRiMDI0MzcxOWI1MjAxZTJlNGY2OScsXG4gICAgICAgIHB1YjogJ0dERDNWVkZLTTY0VVJMRzZQTzJVRldRWEpINjdONVVET1Y1SFoyM001RkpKVDVHNExVTzdSSldHJyxcbiAgICAgICAgZGVyaXZhdGlvblBhdGg6IFwibS80NCcvMTQ4Jy8yJy8wJ1wiLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIG1hbGZvcm1lZCByb290IHNlZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwYXRoID0gYnVpbGRTYWZlQmlwNDRQYXRoKDE0OCwgJ2VkMjU1MTlNdWx0aXNpZycsIDApO1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1NFRURfU1RSS0VZLnNsaWNlKDAsIDU1KSwgcGF0aCkpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvXG4gICAgICApO1xuICAgICAgKCgpID0+IGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZChST09UX1hQUlYsIHBhdGgpKS5zaG91bGQudGhyb3coL0ludmFsaWQgZWQyNTUxOSBTdHJLZXkgc2VjcmV0IHNlZWQvKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -41,7 +41,7 @@ describe('sendSignatureShareV2 request type dispatch', function () {
41
41
  afterEach(function () {
42
42
  sinon.restore();
43
43
  });
44
- async function captureRequestType(mpcAlgorithm, multisigTypeVersion) {
44
+ async function captureRequestType(mpcAlgorithm, multisigTypeVersion, signingType) {
45
45
  let capturedBody;
46
46
  const send = sinon.stub().callsFake((body) => {
47
47
  capturedBody = body;
@@ -52,7 +52,7 @@ describe('sendSignatureShareV2 request type dispatch', function () {
52
52
  post: sinon.stub().returns({ send }),
53
53
  setRequestTracer: sinon.stub(),
54
54
  };
55
- await (0, common_1.sendSignatureShareV2)(mockBitGo, 'walletId', 'txRequestId', [], src_1.RequestType.tx, mpcAlgorithm, 'signerGpgPublicKey', undefined, multisigTypeVersion);
55
+ await (0, common_1.sendSignatureShareV2)(mockBitGo, 'walletId', 'txRequestId', [], src_1.RequestType.tx, mpcAlgorithm, 'signerGpgPublicKey', undefined, multisigTypeVersion, undefined, signingType);
56
56
  if (!capturedBody) {
57
57
  throw new Error('request body should have been captured');
58
58
  }
@@ -64,8 +64,15 @@ describe('sendSignatureShareV2 request type dispatch', function () {
64
64
  it('resolves eddsaMpcV2 for MPCv2 + eddsa', async function () {
65
65
  assert.strictEqual(await captureRequestType('eddsa', 'MPCv2'), 'eddsaMpcV2');
66
66
  });
67
- it('resolves redpallasMpcV2 for MPCv2 + redpallas', async function () {
68
- assert.strictEqual(await captureRequestType('redpallas', 'MPCv2'), 'redpallasMpcV2');
67
+ it('resolves redPallasMpcV2 for MPCv2 + redpallas (DSG rounds)', async function () {
68
+ assert.strictEqual(await captureRequestType('redpallas', 'MPCv2'), 'redPallasMpcV2');
69
+ });
70
+ it('resolves redPallasRerand for MPCv2 + redpallas + rerand signingType', async function () {
71
+ assert.strictEqual(await captureRequestType('redpallas', 'MPCv2', 'redPallasRerand'), 'redPallasRerand');
72
+ });
73
+ it('rejects rerand signingType for non-redpallas algorithms', async function () {
74
+ await assert.rejects(captureRequestType('eddsa', 'MPCv2', 'redPallasRerand'), /only supported for MPCv2 redpallas/);
75
+ await assert.rejects(captureRequestType('redpallas', undefined, 'redPallasRerand'), /only supported for MPCv2 redpallas/);
69
76
  });
70
77
  it('resolves eddsaMpcV1 for undefined multisigTypeVersion + eddsa', async function () {
71
78
  assert.strictEqual(await captureRequestType('eddsa', undefined), 'eddsaMpcV1');
@@ -74,4 +81,4 @@ describe('sendSignatureShareV2 request type dispatch', function () {
74
81
  assert.strictEqual(await captureRequestType('redpallas', undefined), '');
75
82
  });
76
83
  });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDZEQUF3RTtBQUN4RSx5Q0FBa0Y7QUFFbEYsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsWUFBMEIsRUFDMUIsbUJBQXdDO1FBRXhDLElBQUksWUFBMEMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0MsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7U0FDUCxDQUFDO1FBRTFCLE1BQU0sSUFBQSw2QkFBb0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsRUFBRSxFQUNGLGlCQUFXLENBQUMsRUFBRSxFQUNkLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULG1CQUFtQixDQUNwQixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztRQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7UUFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO1FBQ3ZELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLO1FBQ3ZFLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEVBQThFLEVBQUUsS0FBSztRQUN0RixNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IHNlbmRTaWduYXR1cmVTaGFyZVYyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9jb21tb24nO1xuaW1wb3J0IHsgQml0R29CYXNlLCBSZXF1ZXN0VHlwZSwgVHhSZXF1ZXN0LCBNUENBbGdvcml0aG0gfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnc2VuZFNpZ25hdHVyZVNoYXJlVjIgcmVxdWVzdCB0eXBlIGRpc3BhdGNoJywgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gY2FwdHVyZVJlcXVlc3RUeXBlKFxuICAgIG1wY0FsZ29yaXRobTogTVBDQWxnb3JpdGhtLFxuICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgY2FwdHVyZWRCb2R5OiB7IHR5cGU6IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChib2R5KSA9PiB7XG4gICAgICBjYXB0dXJlZEJvZHkgPSBib2R5O1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe30gYXMgVHhSZXF1ZXN0KSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJy9tb2NrL3VybCcpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLnJldHVybnMoeyBzZW5kIH0pLFxuICAgICAgc2V0UmVxdWVzdFRyYWNlcjogc2lub24uc3R1YigpLFxuICAgIH0gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG5cbiAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmVWMihcbiAgICAgIG1vY2tCaXRHbyxcbiAgICAgICd3YWxsZXRJZCcsXG4gICAgICAndHhSZXF1ZXN0SWQnLFxuICAgICAgW10sXG4gICAgICBSZXF1ZXN0VHlwZS50eCxcbiAgICAgIG1wY0FsZ29yaXRobSxcbiAgICAgICdzaWduZXJHcGdQdWJsaWNLZXknLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAoIWNhcHR1cmVkQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGJvZHkgc2hvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2FwdHVyZWRCb2R5LnR5cGU7XG4gIH1cblxuICBpdCgncmVzb2x2ZXMgZWNkc2FNcGNWMiBmb3IgTVBDdjIgKyBlY2RzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlY2RzYScsICdNUEN2MicpLCAnZWNkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgZWRkc2FNcGNWMiBmb3IgTVBDdjIgKyBlZGRzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlZGRzYScsICdNUEN2MicpLCAnZWRkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgcmVkcGFsbGFzTXBjVjIgZm9yIE1QQ3YyICsgcmVkcGFsbGFzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChhd2FpdCBjYXB0dXJlUmVxdWVzdFR5cGUoJ3JlZHBhbGxhcycsICdNUEN2MicpLCAncmVkcGFsbGFzTXBjVjInKTtcbiAgfSk7XG5cbiAgaXQoJ3Jlc29sdmVzIGVkZHNhTXBjVjEgZm9yIHVuZGVmaW5lZCBtdWx0aXNpZ1R5cGVWZXJzaW9uICsgZWRkc2EnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGF3YWl0IGNhcHR1cmVSZXF1ZXN0VHlwZSgnZWRkc2EnLCB1bmRlZmluZWQpLCAnZWRkc2FNcGNWMScpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgYW4gZW1wdHkgdHlwZSBmb3IgcmVkcGFsbGFzIHdpdGhvdXQgTVBDdjIgKG5vIE1QQ3YxIHZhcmlhbnQgZXhpc3RzKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdyZWRwYWxsYXMnLCB1bmRlZmluZWQpLCAnJyk7XG4gIH0pO1xufSk7XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDZEQUF3RTtBQUN4RSx5Q0FBa0Y7QUFFbEYsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLFdBQStCO1FBRS9CLElBQUksWUFBMEMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0MsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7U0FDUCxDQUFDO1FBRTFCLE1BQU0sSUFBQSw2QkFBb0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsRUFBRSxFQUNGLGlCQUFXLENBQUMsRUFBRSxFQUNkLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsV0FBVyxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLO1FBQy9DLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztRQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEtBQUs7UUFDcEUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEtBQUs7UUFDN0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEtBQUs7UUFDakUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FDbEIsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUM3RCxvQ0FBb0MsQ0FDckMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEtBQUs7UUFDdkUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4RUFBOEUsRUFBRSxLQUFLO1FBQ3RGLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgc2VuZFNpZ25hdHVyZVNoYXJlVjIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2NvbW1vbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UsIFJlcXVlc3RUeXBlLCBUeFJlcXVlc3QsIE1QQ0FsZ29yaXRobSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdzZW5kU2lnbmF0dXJlU2hhcmVWMiByZXF1ZXN0IHR5cGUgZGlzcGF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBjYXB0dXJlUmVxdWVzdFR5cGUoXG4gICAgbXBjQWxnb3JpdGhtOiBNUENBbGdvcml0aG0sXG4gICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyB8IHVuZGVmaW5lZCxcbiAgICBzaWduaW5nVHlwZT86ICdyZWRQYWxsYXNSZXJhbmQnXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IGNhcHR1cmVkQm9keTogeyB0eXBlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgoYm9keSkgPT4ge1xuICAgICAgY2FwdHVyZWRCb2R5ID0gYm9keTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHt9IGFzIFR4UmVxdWVzdCkgfTtcbiAgICB9KTtcbiAgICBjb25zdCBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCcvbW9jay91cmwnKSxcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgc2VuZCB9KSxcbiAgICAgIHNldFJlcXVlc3RUcmFjZXI6IHNpbm9uLnN0dWIoKSxcbiAgICB9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuXG4gICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlVjIoXG4gICAgICBtb2NrQml0R28sXG4gICAgICAnd2FsbGV0SWQnLFxuICAgICAgJ3R4UmVxdWVzdElkJyxcbiAgICAgIFtdLFxuICAgICAgUmVxdWVzdFR5cGUudHgsXG4gICAgICBtcGNBbGdvcml0aG0sXG4gICAgICAnc2lnbmVyR3BnUHVibGljS2V5JyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG11bHRpc2lnVHlwZVZlcnNpb24sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBzaWduaW5nVHlwZVxuICAgICk7XG5cbiAgICBpZiAoIWNhcHR1cmVkQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGJvZHkgc2hvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2FwdHVyZWRCb2R5LnR5cGU7XG4gIH1cblxuICBpdCgncmVzb2x2ZXMgZWNkc2FNcGNWMiBmb3IgTVBDdjIgKyBlY2RzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlY2RzYScsICdNUEN2MicpLCAnZWNkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgZWRkc2FNcGNWMiBmb3IgTVBDdjIgKyBlZGRzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlZGRzYScsICdNUEN2MicpLCAnZWRkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgcmVkUGFsbGFzTXBjVjIgZm9yIE1QQ3YyICsgcmVkcGFsbGFzIChEU0cgcm91bmRzKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdyZWRwYWxsYXMnLCAnTVBDdjInKSwgJ3JlZFBhbGxhc01wY1YyJyk7XG4gIH0pO1xuXG4gIGl0KCdyZXNvbHZlcyByZWRQYWxsYXNSZXJhbmQgZm9yIE1QQ3YyICsgcmVkcGFsbGFzICsgcmVyYW5kIHNpZ25pbmdUeXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChhd2FpdCBjYXB0dXJlUmVxdWVzdFR5cGUoJ3JlZHBhbGxhcycsICdNUEN2MicsICdyZWRQYWxsYXNSZXJhbmQnKSwgJ3JlZFBhbGxhc1JlcmFuZCcpO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyByZXJhbmQgc2lnbmluZ1R5cGUgZm9yIG5vbi1yZWRwYWxsYXMgYWxnb3JpdGhtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhjYXB0dXJlUmVxdWVzdFR5cGUoJ2VkZHNhJywgJ01QQ3YyJywgJ3JlZFBhbGxhc1JlcmFuZCcpLCAvb25seSBzdXBwb3J0ZWQgZm9yIE1QQ3YyIHJlZHBhbGxhcy8pO1xuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgY2FwdHVyZVJlcXVlc3RUeXBlKCdyZWRwYWxsYXMnLCB1bmRlZmluZWQsICdyZWRQYWxsYXNSZXJhbmQnKSxcbiAgICAgIC9vbmx5IHN1cHBvcnRlZCBmb3IgTVBDdjIgcmVkcGFsbGFzL1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdyZXNvbHZlcyBlZGRzYU1wY1YxIGZvciB1bmRlZmluZWQgbXVsdGlzaWdUeXBlVmVyc2lvbiArIGVkZHNhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChhd2FpdCBjYXB0dXJlUmVxdWVzdFR5cGUoJ2VkZHNhJywgdW5kZWZpbmVkKSwgJ2VkZHNhTXBjVjEnKTtcbiAgfSk7XG5cbiAgaXQoJ3Jlc29sdmVzIGFuIGVtcHR5IHR5cGUgZm9yIHJlZHBhbGxhcyB3aXRob3V0IE1QQ3YyIChubyBNUEN2MSB2YXJpYW50IGV4aXN0cyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGF3YWl0IGNhcHR1cmVSZXF1ZXN0VHlwZSgncmVkcGFsbGFzJywgdW5kZWZpbmVkKSwgJycpO1xuICB9KTtcbn0pO1xuIl19