@bitgo/sdk-core 36.7.0 → 36.8.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 (32) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +2 -2
  3. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  4. package/dist/src/bitgo/baseCoin/baseCoin.js +1 -1
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -2
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  7. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  8. package/dist/src/bitgo/environments.d.ts.map +1 -1
  9. package/dist/src/bitgo/environments.js +7 -1
  10. package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -1
  11. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  12. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  13. package/dist/src/bitgo/keychain/keychains.d.ts +2 -1
  14. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  15. package/dist/src/bitgo/keychain/keychains.js +4 -2
  16. package/dist/src/bitgo/staking/stakingWallet.d.ts +0 -3
  17. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  18. package/dist/src/bitgo/staking/stakingWallet.js +7 -3
  19. package/dist/src/bitgo/utils/messageTypes.d.ts +1 -0
  20. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -1
  21. package/dist/src/bitgo/utils/messageTypes.js +2 -1
  22. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -1
  23. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  24. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  25. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  26. package/dist/src/bitgo/wallet/wallet.js +17 -8
  27. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +1 -0
  28. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -1
  29. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +5 -5
  30. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +2 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +4 -4
@@ -30,6 +30,7 @@ export declare class MidnightMessageProvider implements IMessageProvider {
30
30
  protected midnightClaimUrl: string;
31
31
  protected prevId: string | undefined;
32
32
  protected ranOnce: boolean;
33
+ private readonly numMessagesPerTransaction;
33
34
  constructor(wallet: IWallet, destinationAddress: string);
34
35
  getMessagesAndAddressesToSign(): Promise<MessageInfo[]>;
35
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utxoMessageProof.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/walletUtil/utxoMessageProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAK5C,eAAO,MAAM,iBAAiB,qEAAqE,CAAC;AAEpG,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AASF,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,6BAA6B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACzD;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAMlD,OAAO,CAAC,MAAM;IAAW,OAAO,CAAC,kBAAkB;IAL/D,SAAS,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;IAClD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACnC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,OAAO,UAAS;gBACN,MAAM,EAAE,OAAO,EAAU,kBAAkB,EAAE,MAAM;IAQjE,6BAA6B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAsC9D;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,OAAO,EACf,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
1
+ {"version":3,"file":"utxoMessageProof.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/walletUtil/utxoMessageProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,eAAO,MAAM,iBAAiB,qEAAqE,CAAC;AAEpG,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AASF,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,6BAA6B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACzD;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAQlD,OAAO,CAAC,MAAM;IAAW,OAAO,CAAC,kBAAkB;IAP/D,SAAS,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;IAClD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACnC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,OAAO,UAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;gBAE/B,MAAM,EAAE,OAAO,EAAU,kBAAkB,EAAE,MAAM;IASjE,6BAA6B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAsC9D;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,OAAO,EACf,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
@@ -37,7 +37,6 @@ exports.MidnightMessageProvider = exports.MIDNIGHT_TNC_HASH = void 0;
37
37
  exports.bulkSignBip322MidnightMessages = bulkSignBip322MidnightMessages;
38
38
  const utxolib = __importStar(require("@bitgo/utxo-lib"));
39
39
  const environments_1 = require("../environments");
40
- const NUM_MESSAGES_PER_TRANSACTION = 2;
41
40
  const NUM_MESSAGES_PER_QUERY = 1000;
42
41
  exports.MIDNIGHT_TNC_HASH = '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b';
43
42
  /**
@@ -53,17 +52,18 @@ class MidnightMessageProvider {
53
52
  this.unprocessedMessagesCache = [];
54
53
  this.network = utxolib.networks[wallet.coin()];
55
54
  this.midnightClaimUrl = `${environments_1.Environments[wallet.bitgo.env].uri}/api/airdrop-claim/v1/midnight/claims/${wallet.coin()}/${wallet.id()}`;
55
+ this.numMessagesPerTransaction = wallet.bitgo.env === 'prod' ? 200 : 4;
56
56
  }
57
57
  async getMessagesAndAddressesToSign() {
58
58
  if (this.unprocessedMessagesCache.length > 0) {
59
- return this.unprocessedMessagesCache.splice(0, NUM_MESSAGES_PER_TRANSACTION);
59
+ return this.unprocessedMessagesCache.splice(0, this.numMessagesPerTransaction);
60
60
  }
61
61
  else if (this.unprocessedMessagesCache.length === 0 && this.ranOnce && this.prevId === undefined) {
62
62
  return [];
63
63
  }
64
64
  this.ranOnce = true;
65
65
  const query = {
66
- status: 'UNINITIALIZED',
66
+ status: 'UNINITIATED',
67
67
  limit: NUM_MESSAGES_PER_QUERY,
68
68
  };
69
69
  if (this.prevId !== undefined) {
@@ -89,7 +89,7 @@ class MidnightMessageProvider {
89
89
  address: claim.originAddress,
90
90
  };
91
91
  });
92
- const toReturn = this.unprocessedMessagesCache.splice(0, NUM_MESSAGES_PER_TRANSACTION);
92
+ const toReturn = this.unprocessedMessagesCache.splice(0, this.numMessagesPerTransaction);
93
93
  return toReturn;
94
94
  }
95
95
  }
@@ -127,4 +127,4 @@ async function bulkSignBip322MessagesWithProvider(provider, wallet, walletPassph
127
127
  }
128
128
  return { success: true, numMessages, transactions };
129
129
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4b01lc3NhZ2VQcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXRVdGlsL3V0eG9NZXNzYWdlUHJvb2YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0dBLHdFQU9DO0FBM0dELHlEQUEyQztBQUczQyxrREFBK0M7QUFFL0MsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDdkIsUUFBQSxpQkFBaUIsR0FBRyxrRUFBa0UsQ0FBQztBQTRCcEc7Ozs7R0FJRztBQUNILE1BQWEsdUJBQXVCO0lBTWxDLFlBQW9CLE1BQWUsRUFBVSxrQkFBMEI7UUFBbkQsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUQ3RCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUN0QiwyQkFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDakMseUNBQXlDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QjtRQUNqQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQy9FLENBQUM7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LE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixvQ0FBb0M7UUFDcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoRCxRQUFRO1lBQ1IsMkJBQTJCO1lBQzNCLFVBQVUsRUFBRSxFQUFFO1lBQ2Qsd0JBQXdCO1lBQ3hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLHlDQUF5QztZQUN6QyxnQkFBZ0I7WUFDaEIsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU07U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixXQUFXLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMvQixRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQvaVdhbGxldCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudHMgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMnO1xuXG5jb25zdCBOVU1fTUVTU0FHRVNfUEVSX1RSQU5TQUNUSU9OID0gMjtcbmNvbnN0IE5VTV9NRVNTQUdFU19QRVJfUVVFUlkgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE1JRE5JR0hUX1ROQ19IQVNIID0gJzMxYTZiYWI1MGE4NGI4NDM5YWRjZmI3ODZiYjIwMjBmNjgwN2U2ZThmZGE2MjliNDI0MTEwZmM3YmIxYzZiOGInO1xuXG50eXBlIE1lc3NhZ2VJbmZvID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGFkZHJlc3M6IHN0cmluZztcbn07XG5cbnR5cGUgQ2xhaW0gPSB7XG4gIG9yaWdpbldhbGxldElkOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBvcmlnaW5BZGRyZXNzPzogc3RyaW5nO1xuICBhbGxvY2F0aW9uQW1vdW50OiBzdHJpbmc7XG59O1xuXG50eXBlIEJ1bGtNZXNzYWdlUmVzcG9uc2UgPSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG51bU1lc3NhZ2VzOiBudW1iZXI7XG4gIHRyYW5zYWN0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VQcm92aWRlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlcyBhbmQgYWRkcmVzc2VzIHRoYXQgd2Ugd2FudCB0byBzaWduLiBXZSBjYWxsIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmVcbiAgICogbWVzc2FnZXMuIElmIHRoZXJlIGFyZSBubyBtb3JlIG1lc3NhZ2VzLCBhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC4gTm90ZSB0aGF0IHdlIG9ubHkgcmV0dXJuIG1lc3NhZ2VzIGluIHNldHMgb2YgMjAwLlxuICAgKi9cbiAgZ2V0TWVzc2FnZXNBbmRBZGRyZXNzZXNUb1NpZ24oKTogUHJvbWlzZTxNZXNzYWdlSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBUaGUgTWlkbmlnaHQgZHJvcCBzZXJ2aWNlIGNhbiByZXR1cm4gdXAgdG8gMTAwMCBtZXNzYWdlcyBwZXIgcmVxdWVzdC4gSG93ZXZlciwgVVRYTyBjb2luc1xuICogY2FuIG9ubHkgaGF2ZSBhIG1heGltdW0gb2YgMjAwIG1lc3NhZ2VzIHBlciB0cmFuc2FjdGlvbi4gV2UgbWFrZSB0aGlzIHdyYXBwZXIgZnVuY3Rpb24gdGhhdFxuICogaGFuZGxlcyB0aGUgcGFnaW5hdGlvbiBhbmQgYmF0Y2hpbmcgb2YgbWVzc2FnZXMsIGtlZXBpbmcgYSBsb2NhbCBjYWNoZSBvZiB0aGUgdW5wcm9jZXNzZWQgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaWRuaWdodE1lc3NhZ2VQcm92aWRlciBpbXBsZW1lbnRzIElNZXNzYWdlUHJvdmlkZXIge1xuICBwcm90ZWN0ZWQgdW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlOiBNZXNzYWdlSW5mb1tdO1xuICBwcm90ZWN0ZWQgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrO1xuICBwcm90ZWN0ZWQgbWlkbmlnaHRDbGFpbVVybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcHJldklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByYW5PbmNlID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2FsbGV0OiBJV2FsbGV0LCBwcml2YXRlIGRlc3RpbmF0aW9uQWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy51bnByb2Nlc3NlZE1lc3NhZ2VzQ2FjaGUgPSBbXTtcbiAgICB0aGlzLm5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW3dhbGxldC5jb2luKCldO1xuICAgIHRoaXMubWlkbmlnaHRDbGFpbVVybCA9IGAke1xuICAgICAgRW52aXJvbm1lbnRzW3dhbGxldC5iaXRnby5lbnZdLnVyaVxuICAgIH0vYXBpL2FpcmRyb3AtY2xhaW0vdjEvbWlkbmlnaHQvY2xhaW1zLyR7d2FsbGV0LmNvaW4oKX0vJHt3YWxsZXQuaWQoKX1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWVzc2FnZXNBbmRBZGRyZXNzZXNUb1NpZ24oKTogUHJvbWlzZTxNZXNzYWdlSW5mb1tdPiB7XG4gICAgaWYgKHRoaXMudW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnVucHJvY2Vzc2VkTWVzc2FnZXNDYWNoZS5zcGxpY2UoMCwgTlVNX01FU1NBR0VTX1BFUl9UUkFOU0FDVElPTik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnVucHJvY2Vzc2VkTWVzc2FnZXNDYWNoZS5sZW5ndGggPT09IDAgJiYgdGhpcy5yYW5PbmNlICYmIHRoaXMucHJldklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB0aGlzLnJhbk9uY2UgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIHN0YXR1czogJ1VOSU5JVElBTElaRUQnLFxuICAgICAgbGltaXQ6IE5VTV9NRVNTQUdFU19QRVJfUVVFUlksXG4gICAgfTtcbiAgICBpZiAodGhpcy5wcmV2SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcXVlcnkucHJldklkID0gdGhpcy5wcmV2SWQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy53YWxsZXQuYml0Z28uZ2V0KHRoaXMubWlkbmlnaHRDbGFpbVVybCkucXVlcnkocXVlcnkpLnJlc3VsdCgpO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09ICdzdWNjZXNzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICR7cmVzcG9uc2Uuc3RhdHVzfSBmcm9tICR7dGhpcy5taWRuaWdodENsYWltVXJsfWApO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2U/LnBhZ2luYXRpb24/Lmhhc05leHQpIHtcbiAgICAgIHRoaXMucHJldklkID0gcmVzcG9uc2U/LnBhZ2luYXRpb24/Lm5leHRQcmV2SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJldklkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMudW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlID0gcmVzcG9uc2UuY2xhaW1zLm1hcCgoY2xhaW06IENsYWltKSA9PiB7XG4gICAgICBpZiAoIWNsYWltLm9yaWdpbkFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGFpbSAke0pTT04uc3RyaW5naWZ5KGNsYWltKX0gaXMgbWlzc2luZyBvcmlnaW5BZGRyZXNzYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAvLyBNaWRuaWdodCBjbGFpbSBtZXNzYWdlIGZvcm1hdFxuICAgICAgICBtZXNzYWdlOiBgU1RBUiAke2NsYWltLmFsbG9jYXRpb25BbW91bnR9IHRvICR7dGhpcy5kZXN0aW5hdGlvbkFkZHJlc3N9ICR7TUlETklHSFRfVE5DX0hBU0h9YCxcbiAgICAgICAgYWRkcmVzczogY2xhaW0ub3JpZ2luQWRkcmVzcyxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgdG9SZXR1cm4gPSB0aGlzLnVucHJvY2Vzc2VkTWVzc2FnZXNDYWNoZS5zcGxpY2UoMCwgTlVNX01FU1NBR0VTX1BFUl9UUkFOU0FDVElPTik7XG4gICAgcmV0dXJuIHRvUmV0dXJuO1xuICB9XG59XG5cbi8qKlxuICogQnVsayBzaWducyBCSVAzMjIgbWVzc2FnZXMgZm9yIHRoZSBNaWRuaWdodCBhaXJkcm9wLlxuICogQHBhcmFtIHdhbGxldCBUaGUgd2FsbGV0IHRvIHNpZ24gdGhlIG1lc3NhZ2VzIHdpdGguXG4gKiBAcGFyYW0gZGVzdGluYXRpb25BZGRyZXNzIFRoZSBBREEgYWRkcmVzcyB0aGUgcmV3YXJkcyB3aWxsIGdldCBzZW50IHRvXG4gKiBAcGFyYW0gd2FsbGV0UGFzc3BocmFzZSAoT3B0aW9uYWwpIFRoZSB3YWxsZXQgcGFzc3BocmFzZSBvZiB0aGUgd2FsbGV0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWxrU2lnbkJpcDMyMk1pZG5pZ2h0TWVzc2FnZXMoXG4gIHdhbGxldDogSVdhbGxldCxcbiAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsXG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmdcbik6IFByb21pc2U8QnVsa01lc3NhZ2VSZXNwb25zZT4ge1xuICBjb25zdCBwcm92aWRlciA9IG5ldyBNaWRuaWdodE1lc3NhZ2VQcm92aWRlcih3YWxsZXQsIGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gIHJldHVybiBidWxrU2lnbkJpcDMyMk1lc3NhZ2VzV2l0aFByb3ZpZGVyKHByb3ZpZGVyLCB3YWxsZXQsIHdhbGxldFBhc3NwaHJhc2UpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWxrU2lnbkJpcDMyMk1lc3NhZ2VzV2l0aFByb3ZpZGVyKFxuICBwcm92aWRlcjogSU1lc3NhZ2VQcm92aWRlcixcbiAgd2FsbGV0OiBJV2FsbGV0LFxuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nXG4pOiBQcm9taXNlPEJ1bGtNZXNzYWdlUmVzcG9uc2U+IHtcbiAgbGV0IG51bU1lc3NhZ2VzID0gMDtcbiAgbGV0IG1lc3NhZ2VzOiBNZXNzYWdlSW5mb1tdID0gYXdhaXQgcHJvdmlkZXIuZ2V0TWVzc2FnZXNBbmRBZGRyZXNzZXNUb1NpZ24oKTtcbiAgY29uc3Qgc2VuZGluZ0Z1bmN0aW9uID0gd2FsbGV0LnR5cGUoKSA9PT0gJ2NvbGQnID8gd2FsbGV0LnByZWJ1aWxkVHJhbnNhY3Rpb24gOiB3YWxsZXQuc2VuZE1hbnk7XG4gIGNvbnN0IHRyYW5zYWN0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuICB3aGlsZSAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgIC8vIFNpZ24gdGhlIG1lc3NhZ2VzIHdpdGggdGhlIHdhbGxldFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlbmRpbmdGdW5jdGlvbi5jYWxsKHdhbGxldCwge1xuICAgICAgbWVzc2FnZXMsXG4gICAgICAvLyBSZWNpcGllbnRzIG11c3QgYmUgZW1wdHlcbiAgICAgIHJlY2lwaWVudHM6IFtdLFxuICAgICAgLy8gdHhGb3JtYXQgbXVzdCBiZSBwc2J0XG4gICAgICB0eEZvcm1hdDogJ3BzYnQnLFxuICAgICAgLy8gUGFzcyBpbiB0aGUgb3B0aW9uYWwgd2FsbGV0IHBhc3NwaHJhc2VcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICBvZmZsaW5lVmVyaWZpY2F0aW9uOiB3YWxsZXQudHlwZSgpID09PSAnY29sZCcsXG4gICAgfSk7XG4gICAgdHJhbnNhY3Rpb25zLnB1c2gocmVzdWx0KTtcbiAgICBudW1NZXNzYWdlcyArPSBtZXNzYWdlcy5sZW5ndGg7XG4gICAgbWVzc2FnZXMgPSBhd2FpdCBwcm92aWRlci5nZXRNZXNzYWdlc0FuZEFkZHJlc3Nlc1RvU2lnbigpO1xuICB9XG4gIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIG51bU1lc3NhZ2VzLCB0cmFuc2FjdGlvbnMgfTtcbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXR4b01lc3NhZ2VQcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXRVdGlsL3V0eG9NZXNzYWdlUHJvb2YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0dBLHdFQU9DO0FBN0dELHlEQUEyQztBQUczQyxrREFBK0M7QUFFL0MsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDdkIsUUFBQSxpQkFBaUIsR0FBRyxrRUFBa0UsQ0FBQztBQTRCcEc7Ozs7R0FJRztBQUNILE1BQWEsdUJBQXVCO0lBUWxDLFlBQW9CLE1BQWUsRUFBVSxrQkFBMEI7UUFBbkQsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUg3RCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBSXhCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUN0QiwyQkFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDakMseUNBQXlDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMseUJBQXlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QjtRQUNqQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0Ms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LENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUE4QixFQUFFLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNCLG9DQUFvQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hELFFBQVE7WUFDUiwyQkFBMkI7WUFDM0IsVUFBVSxFQUFFLEVBQUU7WUFDZCx3QkFBd0I7WUFDeEIsUUFBUSxFQUFFLE1BQU07WUFDaEIseUNBQXlDO1lBQ3pDLGdCQUFnQjtZQUNoQixtQkFBbUIsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssTUFBTTtTQUM5QyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLFdBQVcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldC9pV2FsbGV0JztcbmltcG9ydCB7IEVudmlyb25tZW50cyB9IGZyb20gJy4uL2Vudmlyb25tZW50cyc7XG5cbmNvbnN0IE5VTV9NRVNTQUdFU19QRVJfUVVFUlkgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE1JRE5JR0hUX1ROQ19IQVNIID0gJzMxYTZiYWI1MGE4NGI4NDM5YWRjZmI3ODZiYjIwMjBmNjgwN2U2ZThmZGE2MjliNDI0MTEwZmM3YmIxYzZiOGInO1xuXG50eXBlIE1lc3NhZ2VJbmZvID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGFkZHJlc3M6IHN0cmluZztcbn07XG5cbnR5cGUgQ2xhaW0gPSB7XG4gIG9yaWdpbldhbGxldElkOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBvcmlnaW5BZGRyZXNzPzogc3RyaW5nO1xuICBhbGxvY2F0aW9uQW1vdW50OiBzdHJpbmc7XG59O1xuXG50eXBlIEJ1bGtNZXNzYWdlUmVzcG9uc2UgPSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG51bU1lc3NhZ2VzOiBudW1iZXI7XG4gIHRyYW5zYWN0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VQcm92aWRlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlcyBhbmQgYWRkcmVzc2VzIHRoYXQgd2Ugd2FudCB0byBzaWduLiBXZSBjYWxsIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmVcbiAgICogbWVzc2FnZXMuIElmIHRoZXJlIGFyZSBubyBtb3JlIG1lc3NhZ2VzLCBhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC4gTm90ZSB0aGF0IHdlIG9ubHkgcmV0dXJuIG1lc3NhZ2VzIGluIHNldHMgb2YgMjAwLlxuICAgKi9cbiAgZ2V0TWVzc2FnZXNBbmRBZGRyZXNzZXNUb1NpZ24oKTogUHJvbWlzZTxNZXNzYWdlSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBUaGUgTWlkbmlnaHQgZHJvcCBzZXJ2aWNlIGNhbiByZXR1cm4gdXAgdG8gMTAwMCBtZXNzYWdlcyBwZXIgcmVxdWVzdC4gSG93ZXZlciwgVVRYTyBjb2luc1xuICogY2FuIG9ubHkgaGF2ZSBhIG1heGltdW0gb2YgMjAwIG1lc3NhZ2VzIHBlciB0cmFuc2FjdGlvbi4gV2UgbWFrZSB0aGlzIHdyYXBwZXIgZnVuY3Rpb24gdGhhdFxuICogaGFuZGxlcyB0aGUgcGFnaW5hdGlvbiBhbmQgYmF0Y2hpbmcgb2YgbWVzc2FnZXMsIGtlZXBpbmcgYSBsb2NhbCBjYWNoZSBvZiB0aGUgdW5wcm9jZXNzZWQgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaWRuaWdodE1lc3NhZ2VQcm92aWRlciBpbXBsZW1lbnRzIElNZXNzYWdlUHJvdmlkZXIge1xuICBwcm90ZWN0ZWQgdW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlOiBNZXNzYWdlSW5mb1tdO1xuICBwcm90ZWN0ZWQgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrO1xuICBwcm90ZWN0ZWQgbWlkbmlnaHRDbGFpbVVybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcHJldklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByYW5PbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbnVtTWVzc2FnZXNQZXJUcmFuc2FjdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2FsbGV0OiBJV2FsbGV0LCBwcml2YXRlIGRlc3RpbmF0aW9uQWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy51bnByb2Nlc3NlZE1lc3NhZ2VzQ2FjaGUgPSBbXTtcbiAgICB0aGlzLm5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW3dhbGxldC5jb2luKCldO1xuICAgIHRoaXMubWlkbmlnaHRDbGFpbVVybCA9IGAke1xuICAgICAgRW52aXJvbm1lbnRzW3dhbGxldC5iaXRnby5lbnZdLnVyaVxuICAgIH0vYXBpL2FpcmRyb3AtY2xhaW0vdjEvbWlkbmlnaHQvY2xhaW1zLyR7d2FsbGV0LmNvaW4oKX0vJHt3YWxsZXQuaWQoKX1gO1xuICAgIHRoaXMubnVtTWVzc2FnZXNQZXJUcmFuc2FjdGlvbiA9IHdhbGxldC5iaXRnby5lbnYgPT09ICdwcm9kJyA/IDIwMCA6IDQ7XG4gIH1cblxuICBhc3luYyBnZXRNZXNzYWdlc0FuZEFkZHJlc3Nlc1RvU2lnbigpOiBQcm9taXNlPE1lc3NhZ2VJbmZvW10+IHtcbiAgICBpZiAodGhpcy51bnByb2Nlc3NlZE1lc3NhZ2VzQ2FjaGUubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMudW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlLnNwbGljZSgwLCB0aGlzLm51bU1lc3NhZ2VzUGVyVHJhbnNhY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAodGhpcy51bnByb2Nlc3NlZE1lc3NhZ2VzQ2FjaGUubGVuZ3RoID09PSAwICYmIHRoaXMucmFuT25jZSAmJiB0aGlzLnByZXZJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdGhpcy5yYW5PbmNlID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBzdGF0dXM6ICdVTklOSVRJQVRFRCcsXG4gICAgICBsaW1pdDogTlVNX01FU1NBR0VTX1BFUl9RVUVSWSxcbiAgICB9O1xuICAgIGlmICh0aGlzLnByZXZJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeS5wcmV2SWQgPSB0aGlzLnByZXZJZDtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndhbGxldC5iaXRnby5nZXQodGhpcy5taWRuaWdodENsYWltVXJsKS5xdWVyeShxdWVyeSkucmVzdWx0KCk7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXN9IGZyb20gJHt0aGlzLm1pZG5pZ2h0Q2xhaW1Vcmx9YCk7XG4gICAgfVxuICAgIGlmIChyZXNwb25zZT8ucGFnaW5hdGlvbj8uaGFzTmV4dCkge1xuICAgICAgdGhpcy5wcmV2SWQgPSByZXNwb25zZT8ucGFnaW5hdGlvbj8ubmV4dFByZXZJZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2SWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy51bnByb2Nlc3NlZE1lc3NhZ2VzQ2FjaGUgPSByZXNwb25zZS5jbGFpbXMubWFwKChjbGFpbTogQ2xhaW0pID0+IHtcbiAgICAgIGlmICghY2xhaW0ub3JpZ2luQWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENsYWltICR7SlNPTi5zdHJpbmdpZnkoY2xhaW0pfSBpcyBtaXNzaW5nIG9yaWdpbkFkZHJlc3NgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIE1pZG5pZ2h0IGNsYWltIG1lc3NhZ2UgZm9ybWF0XG4gICAgICAgIG1lc3NhZ2U6IGBTVEFSICR7Y2xhaW0uYWxsb2NhdGlvbkFtb3VudH0gdG8gJHt0aGlzLmRlc3RpbmF0aW9uQWRkcmVzc30gJHtNSUROSUdIVF9UTkNfSEFTSH1gLFxuICAgICAgICBhZGRyZXNzOiBjbGFpbS5vcmlnaW5BZGRyZXNzLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCB0b1JldHVybiA9IHRoaXMudW5wcm9jZXNzZWRNZXNzYWdlc0NhY2hlLnNwbGljZSgwLCB0aGlzLm51bU1lc3NhZ2VzUGVyVHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0b1JldHVybjtcbiAgfVxufVxuXG4vKipcbiAqIEJ1bGsgc2lnbnMgQklQMzIyIG1lc3NhZ2VzIGZvciB0aGUgTWlkbmlnaHQgYWlyZHJvcC5cbiAqIEBwYXJhbSB3YWxsZXQgVGhlIHdhbGxldCB0byBzaWduIHRoZSBtZXNzYWdlcyB3aXRoLlxuICogQHBhcmFtIGRlc3RpbmF0aW9uQWRkcmVzcyBUaGUgQURBIGFkZHJlc3MgdGhlIHJld2FyZHMgd2lsbCBnZXQgc2VudCB0b1xuICogQHBhcmFtIHdhbGxldFBhc3NwaHJhc2UgKE9wdGlvbmFsKSBUaGUgd2FsbGV0IHBhc3NwaHJhc2Ugb2YgdGhlIHdhbGxldFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVsa1NpZ25CaXAzMjJNaWRuaWdodE1lc3NhZ2VzKFxuICB3YWxsZXQ6IElXYWxsZXQsXG4gIGRlc3RpbmF0aW9uQWRkcmVzczogc3RyaW5nLFxuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nXG4pOiBQcm9taXNlPEJ1bGtNZXNzYWdlUmVzcG9uc2U+IHtcbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTWlkbmlnaHRNZXNzYWdlUHJvdmlkZXIod2FsbGV0LCBkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICByZXR1cm4gYnVsa1NpZ25CaXAzMjJNZXNzYWdlc1dpdGhQcm92aWRlcihwcm92aWRlciwgd2FsbGV0LCB3YWxsZXRQYXNzcGhyYXNlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVsa1NpZ25CaXAzMjJNZXNzYWdlc1dpdGhQcm92aWRlcihcbiAgcHJvdmlkZXI6IElNZXNzYWdlUHJvdmlkZXIsXG4gIHdhbGxldDogSVdhbGxldCxcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZ1xuKTogUHJvbWlzZTxCdWxrTWVzc2FnZVJlc3BvbnNlPiB7XG4gIGxldCBudW1NZXNzYWdlcyA9IDA7XG4gIGxldCBtZXNzYWdlczogTWVzc2FnZUluZm9bXSA9IGF3YWl0IHByb3ZpZGVyLmdldE1lc3NhZ2VzQW5kQWRkcmVzc2VzVG9TaWduKCk7XG4gIGNvbnN0IHNlbmRpbmdGdW5jdGlvbiA9IHdhbGxldC50eXBlKCkgPT09ICdjb2xkJyA/IHdhbGxldC5wcmVidWlsZFRyYW5zYWN0aW9uIDogd2FsbGV0LnNlbmRNYW55O1xuICBjb25zdCB0cmFuc2FjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXTtcbiAgd2hpbGUgKG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBTaWduIHRoZSBtZXNzYWdlcyB3aXRoIHRoZSB3YWxsZXRcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZW5kaW5nRnVuY3Rpb24uY2FsbCh3YWxsZXQsIHtcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgLy8gUmVjaXBpZW50cyBtdXN0IGJlIGVtcHR5XG4gICAgICByZWNpcGllbnRzOiBbXSxcbiAgICAgIC8vIHR4Rm9ybWF0IG11c3QgYmUgcHNidFxuICAgICAgdHhGb3JtYXQ6ICdwc2J0JyxcbiAgICAgIC8vIFBhc3MgaW4gdGhlIG9wdGlvbmFsIHdhbGxldCBwYXNzcGhyYXNlXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgb2ZmbGluZVZlcmlmaWNhdGlvbjogd2FsbGV0LnR5cGUoKSA9PT0gJ2NvbGQnLFxuICAgIH0pO1xuICAgIHRyYW5zYWN0aW9ucy5wdXNoKHJlc3VsdCk7XG4gICAgbnVtTWVzc2FnZXMgKz0gbWVzc2FnZXMubGVuZ3RoO1xuICAgIG1lc3NhZ2VzID0gYXdhaXQgcHJvdmlkZXIuZ2V0TWVzc2FnZXNBbmRBZGRyZXNzZXNUb1NpZ24oKTtcbiAgfVxuICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBudW1NZXNzYWdlcywgdHJhbnNhY3Rpb25zIH07XG59XG4iXX0=
@@ -45,6 +45,7 @@ const fixtures_1 = require("./fixtures");
45
45
  const sdk_opensslbytes_1 = require("@bitgo/sdk-opensslbytes");
46
46
  const openSSLBytes = (0, sdk_opensslbytes_1.loadWebAssembly)().buffer;
47
47
  describe('ecdsa tss', function () {
48
+ this.timeout(60000);
48
49
  const ecdsa = new tss_1.Ecdsa();
49
50
  let signCombine1, signCombine2;
50
51
  before('generate key and sign phase 1 to 4', async function () {
@@ -230,4 +231,4 @@ describe('ecdsa tss', function () {
230
231
  (() => ecdsa.verifyUTShares(UT2, [publicUTShares_1])).should.throw('Sum of all U_i does not match sum of all T_i');
231
232
  });
232
233
  });
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFrRDtBQUNsRCxrQkFBZ0I7QUFDaEIsa0RBQTBCO0FBQzFCLG9EQVE0QjtBQUM1QixtRUFBa0U7QUFNbEUseUNBQThDO0FBQzlDLDhEQUEwRDtBQUUxRCxNQUFNLFlBQVksR0FBRyxJQUFBLGtDQUFlLEdBQUUsQ0FBQyxNQUFNLENBQUM7QUFFOUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtJQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLFdBQUssRUFBRSxDQUFDO0lBRTFCLElBQUksWUFBMkIsRUFBRSxZQUEyQixDQUFDO0lBRTdELE1BQU0sQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLO1FBQ2hELE1BQU0sZUFBZSxHQUFHLGVBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFekUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEUsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFD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S0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNoRCxDQUFDO1FBRUYsaURBQWlEO1FBQ2pELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBb0IsRUFBRSxHQUFvQixDQUFDLENBQUM7UUFDMUYsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNuSCxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ3JILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYWlsbGllckJpZ2ludCBmcm9tICdwYWlsbGllci1iaWdpbnQnO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7XG4gIEVjZHNhUGFpbGxpZXJQcm9vZixcbiAgRWNkc2FSYW5nZVByb29mLFxuICBFY2RzYVR5cGVzLFxuICBFY2RzYVprVlByb29mLFxuICBIYXNoQ29tbWl0bWVudCxcbiAgaGV4VG9CaWdJbnQsXG4gIGJpZ0ludFRvQnVmZmVyQkUsXG59IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBFY2RzYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7XG4gIFB1YmxpY1VUU2hhcmUsXG4gIFB1YmxpY1ZBU2hhcmVXaXRoUHJvb2ZzLFxuICBTaWduQ29tYmluZVJULFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcyc7XG5pbXBvcnQgeyBwYWlsbGllcktleVBhaXJzIH0gZnJvbSAnLi9maXh0dXJlcyc7XG5pbXBvcnQgeyBsb2FkV2ViQXNzZW1ibHkgfSBmcm9tICdAYml0Z28vc2RrLW9wZW5zc2xieXRlcyc7XG5cbmNvbnN0IG9wZW5TU0xCeXRlcyA9IGxvYWRXZWJBc3NlbWJseSgpLmJ1ZmZlcjtcblxuZGVzY3JpYmUoJ2VjZHNhIHRzcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZWNkc2EgPSBuZXcgRWNkc2EoKTtcblxuICBsZXQgc2lnbkNvbWJpbmUxOiBTaWduQ29tYmluZVJULCBzaWduQ29tYmluZTI6IFNpZ25Db21iaW5lUlQ7XG5cbiAgYmVmb3JlKCdnZW5lcmF0ZSBrZXkgYW5kIHNpZ24gcGhhc2UgMSB0byA0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhaWxsaWVyS2V5U3R1YiA9IHNpbm9uLnN0dWIocGFpbGxpZXJCaWdpbnQsICdnZW5lcmF0ZVJhbmRvbUtleXMnKTtcblxuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMCkucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1swXSkpO1xuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMSkucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1sxXSkpO1xuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMikucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1syXSkpO1xuXG4gICAgY29uc3QgW2tleVNoYXJlMSwga2V5U2hhcmUyLCBrZXlTaGFyZTNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZWNkc2Eua2V5U2hhcmUoMSwgMiwgMyksXG4gICAgICBlY2RzYS5rZXlTaGFyZSgyLCAyLCAzKSxcbiAgICAgIGVjZHNhLmtleVNoYXJlKDMsIDIsIDMpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgW2tleUNvbWJpbmVkMSwga2V5Q29tYmluZWQyLCBrZXlDb21iaW5lZDNdID0gW1xuICAgICAgZWNkc2Eua2V5Q29tYmluZShrZXlTaGFyZTEucFNoYXJlLCBba2V5U2hhcmUyLm5TaGFyZXNbMV0sIGtleVNoYXJlMy5uU2hhcmVzWzFdXSksXG4gICAgICBlY2RzYS5rZXlDb21iaW5lKGtleVNoYXJlMi5wU2hhcmUsIFtrZXlTaGFyZTEublNoYXJlc1syXSwga2V5U2hhcmUzLm5TaGFyZXNbMl1dKSxcbiAgICAgIGVjZHNhLmtleUNvbWJpbmUoa2V5U2hhcmUzLnBTaGFyZSwgW2tleVNoYXJlMS5uU2hhcmVzWzNdLCBrZXlTaGFyZTIublNoYXJlc1szXV0pLFxuICAgIF07XG5cbiAgICBrZXlDb21iaW5lZDEueFNoYXJlLnkuc2hvdWxkLmVxdWFsKGtleUNvbWJpbmVkMi54U2hhcmUueSk7XG4gICAga2V5Q29tYmluZWQxLnhTaGFyZS55LnNob3VsZC5lcXVhbChrZXlDb21iaW5lZDMueFNoYXJlLnkpO1xuXG4gICAgLy8gQ29sbGVjdCBhbGwgVlNTIGZyb20gblNoYXJlcyBhbmQgdmVyaWZ5IFNjaG5vcnIgcHJvb2ZzIGFnYWluc3QgWF9pLlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZyBXUCBuZWVkcyB0byBkbyBhZnRlciBrZXlDb21iaW5lL2tleURlcml2ZS5cbiAgICBjb25zdCBZID0gaGV4VG9CaWdJbnQoa2V5Q29tYmluZWQxLnhTaGFyZS55KTtcblxuICAgIGNvbnN0IFZTU3MgPSBbXG4gICAgICBbaGV4VG9CaWdJbnQoa2V5U2hhcmUxLm5TaGFyZXNbMl0udiEpXSxcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlTaGFyZTIublNoYXJlc1szXS52ISldLFxuICAgICAgW2hleFRvQmlnSW50KGtleVNoYXJlMy5uU2hhcmVzWzFdLnYhKV0sXG4gICAgXTtcblxuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMSwga2V5Q29tYmluZWQxLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMiwga2V5Q29tYmluZWQyLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMywga2V5Q29tYmluZWQzLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgLy8gVmVyaWZ5IFNjaG5vcnIgcHJvb2ZzIGFnYWluc3QgWF9pIGZvciBrZXlEZXJpdmUgYW5kIHN1YnNlcXVlbnQga2V5Q29tYmluZS5cbiAgICBjb25zdCBwYXRoID0gJ20vMC8xLzInO1xuICAgIGNvbnN0IGtleURlcml2ZTEgPSBlY2RzYS5rZXlEZXJpdmUoa2V5U2hhcmUxLnBTaGFyZSwgW2tleVNoYXJlMi5uU2hhcmVzWzFdLCBrZXlTaGFyZTMublNoYXJlc1sxXV0sIHBhdGgpO1xuXG4gICAgLy8gTm90ZSB0aGUgVlNTcyB1c2VkIGhlcmUgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbmVzIHVzZWQgYWJvdmUuXG4gICAgY29uc3QgZGVyaXZlZFkgPSBoZXhUb0JpZ0ludChrZXlEZXJpdmUxLnhTaGFyZS55KTtcbiAgICBjb25zdCBkZXJpdmVkVlNTcyA9IFtcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlEZXJpdmUxLm5TaGFyZXNbMl0udiEpXSxcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlTaGFyZTIublNoYXJlc1szXS52ISldLFxuICAgICAgW2hleFRvQmlnSW50KGtleVNoYXJlMy5uU2hhcmVzWzFdLnYhKV0sXG4gICAgXTtcbiAgICBlY2RzYS52ZXJpZnlTY2hub3JyUHJvb2ZYKGRlcml2ZWRZLCBkZXJpdmVkVlNTcywgMSwga2V5RGVyaXZlMS54U2hhcmUuc2Nobm9yclByb29mWCkuc2hvdWxkLmJlLnRydWUoKTtcblxuICAgIGNvbnN0IGtleUNvbWJpbmVkMkZyb21LZXlEZXJpdmUxID0gZWNkc2Eua2V5Q29tYmluZShrZXlTaGFyZTIucFNoYXJlLCBbXG4gICAgICBrZXlEZXJpdmUxLm5TaGFyZXNbMl0sXG4gICAgICBrZXlTaGFyZTMublNoYXJlc1syXSxcbiAgICBdKTtcbiAgICBlY2RzYVxuICAgICAgLnZlcmlmeVNjaG5vcnJQcm9vZlgoZGVyaXZlZFksIGRlcml2ZWRWU1NzLCAyLCBrZXlDb21iaW5lZDJGcm9tS2V5RGVyaXZlMS54U2hhcmUuc2Nobm9yclByb29mWClcbiAgICAgIC5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgY29uc3QgW250aWxkZTEsIG50aWxkZTJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgRWNkc2FSYW5nZVByb29mLmdlbmVyYXRlTnRpbGRlKG9wZW5TU0xCeXRlcywgNTEyKSxcbiAgICAgIEVjZHNhUmFuZ2VQcm9vZi5nZW5lcmF0ZU50aWxkZShvcGVuU1NMQnl0ZXMsIDUxMiksXG4gICAgXSk7XG5cbiAgICBjb25zdCBbc2VyaWFsaXplTnRpbGRlMSwgc2VyaWFsaXplTnRpbGRlMl0gPSBbXG4gICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMobnRpbGRlMSksXG4gICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMobnRpbGRlMiksXG4gICAgXTtcblxuICAgIGNvbnN0IFtpbmRleDEsIGluZGV4Ml0gPSBba2V5Q29tYmluZWQxLnhTaGFyZS5pLCBrZXlDb21iaW5lZDIueFNoYXJlLmldO1xuXG4gICAgY29uc3QgW3BhaWxsaWVyTjF0bzIsIHBhaWxsaWVyTjJ0bzFdID0gW2tleUNvbWJpbmVkMS55U2hhcmVzW2luZGV4Ml0ubiwga2V5Q29tYmluZWQyLnlTaGFyZXNbaW5kZXgxXS5uXTtcblxuICAgIGNvbnN0IFtwYWlsbGllckNoYWxsZW5nZXIxdG8yLCBwYWlsbGllckNoYWxsZW5nZXIydG8xXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIEVjZHNhUGFpbGxpZXJQcm9vZi5nZW5lcmF0ZVAoaGV4VG9CaWdJbnQocGFpbGxpZXJOMXRvMikpLFxuICAgICAgRWNkc2FQYWlsbGllclByb29mLmdlbmVyYXRlUChoZXhUb0JpZ0ludChwYWlsbGllck4ydG8xKSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBbeFNoYXJlMSwgeFNoYXJlMl0gPSBbXG4gICAgICBlY2RzYS5hcHBlbmRDaGFsbGVuZ2UoXG4gICAgICAgIGtleUNvbWJpbmVkMS54U2hhcmUsXG4gICAgICAgIHNlcmlhbGl6ZU50aWxkZTEsXG4gICAgICAgIEVjZHNhVHlwZXMuc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2UoeyBwOiBwYWlsbGllckNoYWxsZW5nZXIxdG8yIH0pXG4gICAgICApLFxuICAgICAgZWNkc2EuYXBwZW5kQ2hhbGxlbmdlKFxuICAgICAgICBrZXlDb21iaW5lZDIueFNoYXJlLFxuICAgICAgICBzZXJpYWxpemVOdGlsZGUyLFxuICAgICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlKHsgcDogcGFpbGxpZXJDaGFsbGVuZ2VyMnRvMSB9KVxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgeVNoYXJlMiA9IGVjZHNhLmFwcGVuZENoYWxsZW5nZShcbiAgICAgIGtleUNvbWJpbmVkMS55U2hhcmVzW2luZGV4Ml0sXG4gICAgICBzZXJpYWxpemVOdGlsZGUyLFxuICAgICAgRWNkc2FUeXBlcy5zZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZSh7IHA6IHBhaWxsaWVyQ2hhbGxlbmdlcjJ0bzEgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2lnblNoYXJlcyA9IGF3YWl0IGVjZHNhLnNpZ25TaGFyZSh4U2hhcmUxLCB5U2hhcmUyKTtcblxuICAgIGNvbnN0IHNpZ25Db252ZXJ0UzIxID0gYXdhaXQgZWNkc2Euc2lnbkNvbnZlcnRTdGVwMSh7XG4gICAgICB4U2hhcmU6IHhTaGFyZTIsXG4gICAgICB5U2hhcmU6IGtleUNvbWJpbmVkMi55U2hhcmVzW2luZGV4MV0sXG4gICAgICBrU2hhcmU6IHNpZ25TaGFyZXMua1NoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHNpZ25Db252ZXJ0UzEyID0gYXdhaXQgZWNkc2Euc2lnbkNvbnZlcnRTdGVwMih7XG4gICAgICBhU2hhcmU6IHNpZ25Db252ZXJ0UzIxLmFTaGFyZSxcbiAgICAgIHdTaGFyZTogc2lnblNoYXJlcy53U2hhcmUsXG4gICAgfSk7XG4gICAgY29uc3Qgc2lnbkNvbnZlcnRTMjFfMiA9IGF3YWl0IGVjZHNhLnNpZ25Db252ZXJ0U3RlcDMoe1xuICAgICAgbXVTaGFyZTogc2lnbkNvbnZlcnRTMTIubXVTaGFyZSxcbiAgICAgIGJTaGFyZTogc2lnbkNvbnZlcnRTMjEuYlNoYXJlLFxuICAgIH0pO1xuXG4gICAgW3NpZ25Db21iaW5lMSwgc2lnbkNvbWJpbmUyXSA9IFtcbiAgICAgIGVjZHNhLnNpZ25Db21iaW5lKHtcbiAgICAgICAgZ1NoYXJlOiBzaWduQ29udmVydFMxMi5nU2hhcmUsXG4gICAgICAgIHNpZ25JbmRleDoge1xuICAgICAgICAgIGk6IHNpZ25Db252ZXJ0UzEyLm11U2hhcmUuaSxcbiAgICAgICAgICBqOiBzaWduQ29udmVydFMxMi5tdVNoYXJlLmosXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGVjZHNhLnNpZ25Db21iaW5lKHtcbiAgICAgICAgZ1NoYXJlOiBzaWduQ29udmVydFMyMV8yLmdTaGFyZSxcbiAgICAgICAgc2lnbkluZGV4OiB7XG4gICAgICAgICAgaTogc2lnbkNvbnZlcnRTMjFfMi5zaWduSW5kZXguaSxcbiAgICAgICAgICBqOiBzaWduQ29udmVydFMyMV8yLnNpZ25JbmRleC5qLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfSk7XG5cbiAgaXQoJ3NpZ24gcGhhc2UgNSBzaG91bGQgc3VjY2VlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUT0RPKEhTTS0xMjkpOiBUaGVyZSBpcyBhIGJ1ZyBzaWduaW5nIHVuaGFzaGVkIG1lc3NhZ2UgKGFsdGhvdWdoIHRoaXMgZGV2aWF0ZXMgZnJvbSBEU0Egc3BlYykgaWYgdGhlIG1lc3NhZ2UgaXMgYSBsaXR0bGUgbG9uZy5cbiAgICAvLyAgICAgICBTb21lIGRpc2NyZXBhbmN5IGJldHdlZW4gRWNkc2Euc2lnbiBhbmQgc2VjcDI1NmsxLnJlY292ZXJQdWJsaWNLZXkgb24gaGFuZGxpbmcgdGhlIG1lc3NhZ2UgaW5wdXQuXG4gICAgY29uc3QgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKCdHRzE4IFBIQVNFIDUnKTtcblxuICAgIC8vIFN0YXJ0aW5nIHBoYXNlIDVcbiAgICAvLyBJbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgc19pLCBFY2RzYS5zaWduKCkgbm93IGFsc28gY2FsY3VsYXRlcyBkYXRhIG5lZWRlZCBmb3Igc3RlcHMgNUEgYW5kIDVCOlxuICAgIC8vICAgLSBzYW1wbGUgcmFuZG9tIGxfaSBhbmQgcmhvX2kgKDVBKVxuICAgIC8vICAgLSBjb21wdXRlcyBWX2kgYW5kIEFfaSAoNUIpXVxuICAgIC8vICAgLSBjb21wdXRlcyBjb21taXRtZW50IGFuZCBkZWNvbW1pdG1lbnQgb2YgKFZfaSwgQV9pKSAoNUEsIDVCKVxuICAgIC8vICAgLSBnZW5lcmF0ZXMgcHJvb2ZzIG9mIGtub3dsZWRnZSBvZiBzX2ksIGxfaSwgcmhvX2kgdy5yLnQuIFZfaSwgQV9pICg1QilcbiAgICBjb25zdCBbc2lnbjEsIHNpZ24yXSA9IFtcbiAgICAgIGVjZHNhLmdlbmVyYXRlVkFQcm9vZnMobWVzc2FnZSwgZWNkc2Euc2lnbihtZXNzYWdlLCBzaWduQ29tYmluZTEub1NoYXJlLCBzaWduQ29tYmluZTIuZFNoYXJlKSksXG4gICAgICBlY2RzYS5nZW5lcmF0ZVZBUHJvb2ZzKG1lc3NhZ2UsIGVjZHNhLnNpZ24obWVzc2FnZSwgc2lnbkNvbWJpbmUyLm9TaGFyZSwgc2lnbkNvbWJpbmUxLmRTaGFyZSkpLFxuICAgIF07XG5cbiAgICBzaWduMS5SLnNob3VsZC5lcXVhbChzaWduMi5SKTtcbiAgICBzaWduMS55LnNob3VsZC5lcXVhbChzaWduMi55KTtcbiAgICBzaWduMS5tLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuZXF1YWwoc2lnbjIubS50b1N0cmluZygnaGV4JykpO1xuXG4gICAgLy8gU3RlcCA1QTogQ2FsY3VsYXRpb25zIGRvbmUgYnkgRWNkc2Euc2lnbigpIGFib3ZlLCBhbmQgYnJvYWRjYXN0IGNvbW1pdG1lbnQgb2YgKFZfaSwgQV9pKSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIHdpbGwgYmUgc2VudCB2aWEgY29tbXVuaWNhdGlvbiBjaGFubmVsIGF0IHRoZSBlbmQgb2YgNUEuXG4gICAgLy8gY29uc3QgY29tbWl0bWVudFZBMSA9IHNpZ24xLmNvbURlY29tVkEuY29tbWl0bWVudDtcbiAgICAvLyBjb25zdCBjb21taXRtZW50VkEyID0gc2lnbjIuY29tRGVjb21WQS5jb21taXRtZW50O1xuXG4gICAgLy8gU3RlcCA1QjogQWZ0ZXIgaGF2aW5nIHJlY2VpdmVkIGFsbCBjb21taXRtZW50cyBvZiAoVl9pLCBBX2kpIGZyb20gb3RoZXIgcGFydGllcyxcbiAgICAvLyAgICAgICAgICBlYWNoIHBhcnR5IHdpbGwgYnJvYWRjYXN0IGRlY29tbWl0bWVudCBvZiAoVl9pLCBBX2kpIGFuZCBaSyBwcm9vZnMgcmV0dXJuZWQgYnkgRWNkc2Euc2lnbigpIGFib3ZlXG4gICAgLy8gICAgICAgICAgdG8gb3RoZXIgcGFydGllcy4gIFRoZW4gRWNkc2EudmVyaWZ5VkFTaGFyZXMoKSBiZWxvdyB3aWxsOlxuICAgIC8vICAgLSB2ZXJpZnkgY29tbWl0bWVudHMgb2YgKFZfaSwgQV9pKSByZWNlaXZlZCBmcm9tIG90aGVyIHBhcnRpZXMgKDVCKVxuICAgIC8vICAgLSB2ZXJpZnkgWksgcHJvb2ZzIG9mIChWX2ksIEFfaSkgcmVjZWl2ZWQgZnJvbSBvdGhlciBwYXJ0aWVzICg1QilcbiAgICAvLyAgIC0gY2FsY3VsYXRlIFYgb3V0IG9mIEcsIHksIHIsIG0sIGFuZCBhbGwgVl9pLCBjYWxjdWxhdGUgQSBhcyBzdW0gb2YgYWxsIEFfaSAoNUIpXG4gICAgLy8gICAtIGNhbGN1bGF0ZSBVX2kgYW5kIFRfaSBhbmQgY29tbWl0bWVudCBhbmQgZGVjb21taXRtZW50IG9mIChVX2ksIFRfaSkgKDVDKVxuICAgIGNvbnN0IFtwdWJsaWNWQVNoYXJlc18xLCBwdWJsaWNWQVNoYXJlc18yXSA9IFtzaWduMSBhcyBQdWJsaWNWQVNoYXJlV2l0aFByb29mcywgc2lnbjIgYXMgUHVibGljVkFTaGFyZVdpdGhQcm9vZnNdO1xuICAgIGNvbnN0IFtVVDEsIFVUMl0gPSBbXG4gICAgICBlY2RzYS52ZXJpZnlWQVNoYXJlcyhzaWduMSwgW3B1YmxpY1ZBU2hhcmVzXzJdKSxcbiAgICAgIGVjZHNhLnZlcmlmeVZBU2hhcmVzKHNpZ24yLCBbcHVibGljVkFTaGFyZXNfMV0pLFxuICAgIF07XG5cbiAgICAvLyBTdGVwIDVDOiBDYWxjdWxhdGlvbnMgb2YgVV9pLCBUX2kgZG9uZSBieSBFY2RzYS52ZXJpZnlWQVNoYXJlcyBhYm92ZSxcbiAgICAvLyAgICAgICAgICBhbmQgYnJvYWRjYXN0IGNvbW1pdG1lbnQgb2YgKFVfaSwgVF9pKSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIHdpbGwgYmUgc2VudCB2aWEgY29tbXVuaWNhdGlvbiBjaGFubmVsIGF0IHRoZSBlbmQgb2YgNUMuXG4gICAgLy8gY29uc3QgY29tbWl0bWVudFVUMSA9IFVUMS5jb21EZWNvbVVULmNvbW1pdG1lbnQ7XG4gICAgLy8gY29uc3QgY29tbWl0bWVudFVUMiA9IFVUMi5jb21EZWNvbVVULmNvbW1pdG1lbnQ7XG5cbiAgICAvLyBTdGVwIDVEOiBBZnRlciBoYXZpbmcgcmVjZWl2ZWQgYWxsIGNvbW1pdG1lbnRzIG9mIChVX2ksIFRfaSkgZnJvbSBvdGhlciBwYXJ0aWVzLFxuICAgIC8vICAgICAgICAgIGVhY2ggcGFydHkgd2lsbCBicm9hZGNhc3QgZGVjb21taXRtZW50IG9mIChVX2ksIFRfaSkgcmV0dXJuZWQgYnkgRWNkc2EudmVyaWZ5VkFTaGFyZXMoKSBhYm92ZVxuICAgIC8vICAgICAgICAgIHRvIG90aGVyIHBhcnRpZXMuICBUaGVuIEVjZHNhLnZlcmlmeVVUU2hhcmVzKCkgYmVsb3cgd2lsbDpcbiAgICAvLyAgLSB2ZXJpZnkgY29tbWl0bWVudHMgb2YgKFVfaSwgVF9pKSByZWNlaXZlZCBmcm9tIG90aGVyIHBhcnRpZXMgKDVEKVxuICAgIC8vICAtIGNhbGN1bGF0ZSBVIGFzIHN1bSBvZiBhbGwgVV9pLCBjYWxjdWxhdGUgVCBhcyBzdW0gb2YgYWxsIFRfaSAoNUQpXG4gICAgLy8gIC0gaWYgVSBlcXVhbHMgVCwgdGhlbiByZXR1cm4gb3duIFNTaGFyZSB3aGljaCBpcyBiZWluZyByZXR1cm5lZCBieSBFY2RzYS5zaWduKCkgcmlnaHQgbm93ICg1RSlcbiAgICBjb25zdCBbcHVibGljVVRTaGFyZXNfMSwgcHVibGljVVRTaGFyZXNfMl0gPSBbVVQxIGFzIFB1YmxpY1VUU2hhcmUsIFVUMiBhcyBQdWJsaWNVVFNoYXJlXTtcbiAgICBjb25zdCBbc2lnbmF0dXJlMSwgc2lnbmF0dXJlMl0gPSBbXG4gICAgICBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDEsIFtwdWJsaWNVVFNoYXJlc18yXSksXG4gICAgICBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDIsIFtwdWJsaWNVVFNoYXJlc18xXSksXG4gICAgXTtcblxuICAgIC8vIFN0ZXAgNUU6IEJyb2FkY2FzdCBzX2kgcmV0dXJuZWQgYnkgRWNkc2EudmVyaWZ5VVRTaGFyZXMoKSBhYm92ZSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFZlcmlmeSB0aGUgc3VtIG9mIHNfaSBzaG91bGQgYmUgYSB2YWxpZCBzaWduYXR1cmUuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gZWNkc2EuY29uc3RydWN0U2lnbmF0dXJlKFtzaWduYXR1cmUxLCBzaWduYXR1cmUyXSk7XG4gICAgZWNkc2EudmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ3NpZ24gcGhhc2UgNSBmYWlsIC0gbWFsaWNpb3VzIHBsYXllciBjaGVhdHMgd2l0aCBiYWQgcyBzaGFyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gQnVmZmVyLmZyb20oJ0dHMTggUEhBU0UgNScpO1xuXG4gICAgY29uc3QgW3NpZ24xLCBzaWduMl0gPSBbXG4gICAgICBlY2RzYS5nZW5lcmF0ZVZBUHJvb2ZzKG1lc3NhZ2UsIGVjZHNhLnNpZ24obWVzc2FnZSwgc2lnbkNvbWJpbmUxLm9TaGFyZSwgc2lnbkNvbWJpbmUyLmRTaGFyZSkpLFxuICAgICAgZWNkc2EuZ2VuZXJhdGVWQVByb29mcyhtZXNzYWdlLCBlY2RzYS5zaWduKG1lc3NhZ2UsIHNpZ25Db21iaW5lMi5vU2hhcmUsIHNpZ25Db21iaW5lMS5kU2hhcmUpKSxcbiAgICBdO1xuXG4gICAgc2lnbjEuUi5zaG91bGQuZXF1YWwoc2lnbjIuUik7XG4gICAgc2lnbjEueS5zaG91bGQuZXF1YWwoc2lnbjIueSk7XG4gICAgc2lnbjEubS50b1N0cmluZygnaGV4Jykuc2hvdWxkLmVxdWFsKHNpZ24yLm0udG9TdHJpbmcoJ2hleCcpKTtcblxuICAgIC8vIENoYW5nZSB0aGUgcyBzaGFyZSBvZiBzaWduMSwgYW5kIHJlY2FsY3VhbHRlIGl0cyBWIGFsb25nIHdpdGggdGhlIGNvbW1pdG1lbnQvcHJvb2YgYnkgZm9sbG93aW5nIHByb3RvY29sLlxuICAgIGNvbnN0IGJhZF9zID0gaGV4VG9CaWdJbnQoc2lnbjEucykgKyBCaWdJbnQoMSk7XG5cbiAgICBjb25zdCBiYWRfViA9IEVjZHNhLmN1cnZlLnBvaW50QWRkKFxuICAgICAgRWNkc2EuY3VydmUucG9pbnRNdWx0aXBseShoZXhUb0JpZ0ludChzaWduMS5SKSwgYmFkX3MpLFxuICAgICAgRWNkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzaWduMS5sKVxuICAgICk7XG5cbiAgICBjb25zdCBjb21EZWNvbV9WX0EgPSBIYXNoQ29tbWl0bWVudC5jcmVhdGVDb21taXRtZW50KFxuICAgICAgQnVmZmVyLmNvbmNhdChbXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoYmFkX1YsIEVjZHNhLmN1cnZlLnBvaW50Qnl0ZXMpLFxuICAgICAgICBiaWdJbnRUb0J1ZmZlckJFKHNpZ24xLkEsIEVjZHNhLmN1cnZlLnBvaW50Qnl0ZXMpLFxuICAgICAgXSlcbiAgICApO1xuICAgIGNvbnN0IHprVlByb29mID0gRWNkc2Faa1ZQcm9vZi5jcmVhdGVaa1ZQcm9vZihcbiAgICAgIGJhZF9WLFxuICAgICAgYmFkX3MsXG4gICAgICBzaWduMS5sLFxuICAgICAgaGV4VG9CaWdJbnQoc2lnbjEuUiksXG4gICAgICBFY2RzYS5jdXJ2ZSxcbiAgICAgIHNpZ24xLnByb29mQ29udGV4dFxuICAgICk7XG5cbiAgICBzaWduMS5zID0gYmlnSW50VG9CdWZmZXJCRShiYWRfcywgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBzaWduMS5WID0gYmFkX1Y7XG4gICAgc2lnbjEuY29tRGVjb21WQSA9IGNvbURlY29tX1ZfQTtcbiAgICBzaWduMS56a1ZQcm9vZlYgPSB6a1ZQcm9vZjtcblxuICAgIC8vIDVCIHdpbGwgcGFzcy5cbiAgICBjb25zdCBbcHVibGljVkFTaGFyZXNfMSwgcHVibGljVkFTaGFyZXNfMl0gPSBbc2lnbjEgYXMgUHVibGljVkFTaGFyZVdpdGhQcm9vZnMsIHNpZ24yIGFzIFB1YmxpY1ZBU2hhcmVXaXRoUHJvb2ZzXTtcbiAgICBjb25zdCBbVVQxLCBVVDJdID0gW1xuICAgICAgZWNkc2EudmVyaWZ5VkFTaGFyZXMoc2lnbjEsIFtwdWJsaWNWQVNoYXJlc18yXSksXG4gICAgICBlY2RzYS52ZXJpZnlWQVNoYXJlcyhzaWduMiwgW3B1YmxpY1ZBU2hhcmVzXzFdKSxcbiAgICBdO1xuXG4gICAgLy8gQnV0IHZlcmlmaWNhdGlvbiBhdCBiZWdpbm5pbmcgb2YgNUUgd2lsbCBmYWlsLlxuICAgIGNvbnN0IFtwdWJsaWNVVFNoYXJlc18xLCBwdWJsaWNVVFNoYXJlc18yXSA9IFtVVDEgYXMgUHVibGljVVRTaGFyZSwgVVQyIGFzIFB1YmxpY1VUU2hhcmVdO1xuICAgICgoKSA9PiBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDEsIFtwdWJsaWNVVFNoYXJlc18yXSkpLnNob3VsZC50aHJvdygnU3VtIG9mIGFsbCBVX2kgZG9lcyBub3QgbWF0Y2ggc3VtIG9mIGFsbCBUX2knKTtcbiAgICAoKCkgPT4gZWNkc2EudmVyaWZ5VVRTaGFyZXMoVVQyLCBbcHVibGljVVRTaGFyZXNfMV0pKS5zaG91bGQudGhyb3coJ1N1bSBvZiBhbGwgVV9pIGRvZXMgbm90IG1hdGNoIHN1bSBvZiBhbGwgVF9pJyk7XG4gIH0pO1xufSk7XG4iXX0=
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFrRDtBQUNsRCxrQkFBZ0I7QUFDaEIsa0RBQTBCO0FBQzFCLG9EQVE0QjtBQUM1QixtRUFBa0U7QUFNbEUseUNBQThDO0FBQzlDLDhEQUEwRDtBQUUxRCxNQUFNLFlBQVksR0FBRyxJQUFBLGtDQUFlLEdBQUUsQ0FBQyxNQUFNLENBQUM7QUFFOUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtJQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxFQUFFLENBQUM7SUFFMUIsSUFBSSxZQUEyQixFQUFFLFlBQTJCLENBQUM7SUFFN0QsTUFBTSxDQUFDLG9DQUFvQyxFQUFFLEtBQUs7UUFDaEQsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUV6RSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDJCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDJCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDJCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4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QUFnQixDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2hELENBQUM7UUFFRixpREFBaUQ7UUFDakQsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFvQixFQUFFLEdBQW9CLENBQUMsQ0FBQztRQUMxRixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ25ILENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDckgsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhaWxsaWVyQmlnaW50IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHtcbiAgRWNkc2FQYWlsbGllclByb29mLFxuICBFY2RzYVJhbmdlUHJvb2YsXG4gIEVjZHNhVHlwZXMsXG4gIEVjZHNhWmtWUHJvb2YsXG4gIEhhc2hDb21taXRtZW50LFxuICBoZXhUb0JpZ0ludCxcbiAgYmlnSW50VG9CdWZmZXJCRSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEVjZHNhIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy90c3MnO1xuaW1wb3J0IHtcbiAgUHVibGljVVRTaGFyZSxcbiAgUHVibGljVkFTaGFyZVdpdGhQcm9vZnMsXG4gIFNpZ25Db21iaW5lUlQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IHBhaWxsaWVyS2V5UGFpcnMgfSBmcm9tICcuL2ZpeHR1cmVzJztcbmltcG9ydCB7IGxvYWRXZWJBc3NlbWJseSB9IGZyb20gJ0BiaXRnby9zZGstb3BlbnNzbGJ5dGVzJztcblxuY29uc3Qgb3BlblNTTEJ5dGVzID0gbG9hZFdlYkFzc2VtYmx5KCkuYnVmZmVyO1xuXG5kZXNjcmliZSgnZWNkc2EgdHNzJywgZnVuY3Rpb24gKHRoaXM6IE1vY2hhLkNvbnRleHQpIHtcbiAgdGhpcy50aW1lb3V0KDYwMDAwKTtcbiAgY29uc3QgZWNkc2EgPSBuZXcgRWNkc2EoKTtcblxuICBsZXQgc2lnbkNvbWJpbmUxOiBTaWduQ29tYmluZVJULCBzaWduQ29tYmluZTI6IFNpZ25Db21iaW5lUlQ7XG5cbiAgYmVmb3JlKCdnZW5lcmF0ZSBrZXkgYW5kIHNpZ24gcGhhc2UgMSB0byA0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBhaWxsaWVyS2V5U3R1YiA9IHNpbm9uLnN0dWIocGFpbGxpZXJCaWdpbnQsICdnZW5lcmF0ZVJhbmRvbUtleXMnKTtcblxuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMCkucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1swXSkpO1xuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMSkucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1sxXSkpO1xuICAgIHBhaWxsaWVyS2V5U3R1Yi5vbkNhbGwoMikucmV0dXJucyhQcm9taXNlLnJlc29sdmUocGFpbGxpZXJLZXlQYWlyc1syXSkpO1xuXG4gICAgY29uc3QgW2tleVNoYXJlMSwga2V5U2hhcmUyLCBrZXlTaGFyZTNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZWNkc2Eua2V5U2hhcmUoMSwgMiwgMyksXG4gICAgICBlY2RzYS5rZXlTaGFyZSgyLCAyLCAzKSxcbiAgICAgIGVjZHNhLmtleVNoYXJlKDMsIDIsIDMpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgW2tleUNvbWJpbmVkMSwga2V5Q29tYmluZWQyLCBrZXlDb21iaW5lZDNdID0gW1xuICAgICAgZWNkc2Eua2V5Q29tYmluZShrZXlTaGFyZTEucFNoYXJlLCBba2V5U2hhcmUyLm5TaGFyZXNbMV0sIGtleVNoYXJlMy5uU2hhcmVzWzFdXSksXG4gICAgICBlY2RzYS5rZXlDb21iaW5lKGtleVNoYXJlMi5wU2hhcmUsIFtrZXlTaGFyZTEublNoYXJlc1syXSwga2V5U2hhcmUzLm5TaGFyZXNbMl1dKSxcbiAgICAgIGVjZHNhLmtleUNvbWJpbmUoa2V5U2hhcmUzLnBTaGFyZSwgW2tleVNoYXJlMS5uU2hhcmVzWzNdLCBrZXlTaGFyZTIublNoYXJlc1szXV0pLFxuICAgIF07XG5cbiAgICBrZXlDb21iaW5lZDEueFNoYXJlLnkuc2hvdWxkLmVxdWFsKGtleUNvbWJpbmVkMi54U2hhcmUueSk7XG4gICAga2V5Q29tYmluZWQxLnhTaGFyZS55LnNob3VsZC5lcXVhbChrZXlDb21iaW5lZDMueFNoYXJlLnkpO1xuXG4gICAgLy8gQ29sbGVjdCBhbGwgVlNTIGZyb20gblNoYXJlcyBhbmQgdmVyaWZ5IFNjaG5vcnIgcHJvb2ZzIGFnYWluc3QgWF9pLlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZyBXUCBuZWVkcyB0byBkbyBhZnRlciBrZXlDb21iaW5lL2tleURlcml2ZS5cbiAgICBjb25zdCBZID0gaGV4VG9CaWdJbnQoa2V5Q29tYmluZWQxLnhTaGFyZS55KTtcblxuICAgIGNvbnN0IFZTU3MgPSBbXG4gICAgICBbaGV4VG9CaWdJbnQoa2V5U2hhcmUxLm5TaGFyZXNbMl0udiEpXSxcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlTaGFyZTIublNoYXJlc1szXS52ISldLFxuICAgICAgW2hleFRvQmlnSW50KGtleVNoYXJlMy5uU2hhcmVzWzFdLnYhKV0sXG4gICAgXTtcblxuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMSwga2V5Q29tYmluZWQxLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMiwga2V5Q29tYmluZWQyLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGVjZHNhLnZlcmlmeVNjaG5vcnJQcm9vZlgoWSwgVlNTcywgMywga2V5Q29tYmluZWQzLnhTaGFyZS5zY2hub3JyUHJvb2ZYKS5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgLy8gVmVyaWZ5IFNjaG5vcnIgcHJvb2ZzIGFnYWluc3QgWF9pIGZvciBrZXlEZXJpdmUgYW5kIHN1YnNlcXVlbnQga2V5Q29tYmluZS5cbiAgICBjb25zdCBwYXRoID0gJ20vMC8xLzInO1xuICAgIGNvbnN0IGtleURlcml2ZTEgPSBlY2RzYS5rZXlEZXJpdmUoa2V5U2hhcmUxLnBTaGFyZSwgW2tleVNoYXJlMi5uU2hhcmVzWzFdLCBrZXlTaGFyZTMublNoYXJlc1sxXV0sIHBhdGgpO1xuXG4gICAgLy8gTm90ZSB0aGUgVlNTcyB1c2VkIGhlcmUgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbmVzIHVzZWQgYWJvdmUuXG4gICAgY29uc3QgZGVyaXZlZFkgPSBoZXhUb0JpZ0ludChrZXlEZXJpdmUxLnhTaGFyZS55KTtcbiAgICBjb25zdCBkZXJpdmVkVlNTcyA9IFtcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlEZXJpdmUxLm5TaGFyZXNbMl0udiEpXSxcbiAgICAgIFtoZXhUb0JpZ0ludChrZXlTaGFyZTIublNoYXJlc1szXS52ISldLFxuICAgICAgW2hleFRvQmlnSW50KGtleVNoYXJlMy5uU2hhcmVzWzFdLnYhKV0sXG4gICAgXTtcbiAgICBlY2RzYS52ZXJpZnlTY2hub3JyUHJvb2ZYKGRlcml2ZWRZLCBkZXJpdmVkVlNTcywgMSwga2V5RGVyaXZlMS54U2hhcmUuc2Nobm9yclByb29mWCkuc2hvdWxkLmJlLnRydWUoKTtcblxuICAgIGNvbnN0IGtleUNvbWJpbmVkMkZyb21LZXlEZXJpdmUxID0gZWNkc2Eua2V5Q29tYmluZShrZXlTaGFyZTIucFNoYXJlLCBbXG4gICAgICBrZXlEZXJpdmUxLm5TaGFyZXNbMl0sXG4gICAgICBrZXlTaGFyZTMublNoYXJlc1syXSxcbiAgICBdKTtcbiAgICBlY2RzYVxuICAgICAgLnZlcmlmeVNjaG5vcnJQcm9vZlgoZGVyaXZlZFksIGRlcml2ZWRWU1NzLCAyLCBrZXlDb21iaW5lZDJGcm9tS2V5RGVyaXZlMS54U2hhcmUuc2Nobm9yclByb29mWClcbiAgICAgIC5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgY29uc3QgW250aWxkZTEsIG50aWxkZTJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgRWNkc2FSYW5nZVByb29mLmdlbmVyYXRlTnRpbGRlKG9wZW5TU0xCeXRlcywgNTEyKSxcbiAgICAgIEVjZHNhUmFuZ2VQcm9vZi5nZW5lcmF0ZU50aWxkZShvcGVuU1NMQnl0ZXMsIDUxMiksXG4gICAgXSk7XG5cbiAgICBjb25zdCBbc2VyaWFsaXplTnRpbGRlMSwgc2VyaWFsaXplTnRpbGRlMl0gPSBbXG4gICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMobnRpbGRlMSksXG4gICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZU50aWxkZVdpdGhQcm9vZnMobnRpbGRlMiksXG4gICAgXTtcblxuICAgIGNvbnN0IFtpbmRleDEsIGluZGV4Ml0gPSBba2V5Q29tYmluZWQxLnhTaGFyZS5pLCBrZXlDb21iaW5lZDIueFNoYXJlLmldO1xuXG4gICAgY29uc3QgW3BhaWxsaWVyTjF0bzIsIHBhaWxsaWVyTjJ0bzFdID0gW2tleUNvbWJpbmVkMS55U2hhcmVzW2luZGV4Ml0ubiwga2V5Q29tYmluZWQyLnlTaGFyZXNbaW5kZXgxXS5uXTtcblxuICAgIGNvbnN0IFtwYWlsbGllckNoYWxsZW5nZXIxdG8yLCBwYWlsbGllckNoYWxsZW5nZXIydG8xXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIEVjZHNhUGFpbGxpZXJQcm9vZi5nZW5lcmF0ZVAoaGV4VG9CaWdJbnQocGFpbGxpZXJOMXRvMikpLFxuICAgICAgRWNkc2FQYWlsbGllclByb29mLmdlbmVyYXRlUChoZXhUb0JpZ0ludChwYWlsbGllck4ydG8xKSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBbeFNoYXJlMSwgeFNoYXJlMl0gPSBbXG4gICAgICBlY2RzYS5hcHBlbmRDaGFsbGVuZ2UoXG4gICAgICAgIGtleUNvbWJpbmVkMS54U2hhcmUsXG4gICAgICAgIHNlcmlhbGl6ZU50aWxkZTEsXG4gICAgICAgIEVjZHNhVHlwZXMuc2VyaWFsaXplUGFpbGxpZXJDaGFsbGVuZ2UoeyBwOiBwYWlsbGllckNoYWxsZW5nZXIxdG8yIH0pXG4gICAgICApLFxuICAgICAgZWNkc2EuYXBwZW5kQ2hhbGxlbmdlKFxuICAgICAgICBrZXlDb21iaW5lZDIueFNoYXJlLFxuICAgICAgICBzZXJpYWxpemVOdGlsZGUyLFxuICAgICAgICBFY2RzYVR5cGVzLnNlcmlhbGl6ZVBhaWxsaWVyQ2hhbGxlbmdlKHsgcDogcGFpbGxpZXJDaGFsbGVuZ2VyMnRvMSB9KVxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgeVNoYXJlMiA9IGVjZHNhLmFwcGVuZENoYWxsZW5nZShcbiAgICAgIGtleUNvbWJpbmVkMS55U2hhcmVzW2luZGV4Ml0sXG4gICAgICBzZXJpYWxpemVOdGlsZGUyLFxuICAgICAgRWNkc2FUeXBlcy5zZXJpYWxpemVQYWlsbGllckNoYWxsZW5nZSh7IHA6IHBhaWxsaWVyQ2hhbGxlbmdlcjJ0bzEgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgc2lnblNoYXJlcyA9IGF3YWl0IGVjZHNhLnNpZ25TaGFyZSh4U2hhcmUxLCB5U2hhcmUyKTtcblxuICAgIGNvbnN0IHNpZ25Db252ZXJ0UzIxID0gYXdhaXQgZWNkc2Euc2lnbkNvbnZlcnRTdGVwMSh7XG4gICAgICB4U2hhcmU6IHhTaGFyZTIsXG4gICAgICB5U2hhcmU6IGtleUNvbWJpbmVkMi55U2hhcmVzW2luZGV4MV0sXG4gICAgICBrU2hhcmU6IHNpZ25TaGFyZXMua1NoYXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IHNpZ25Db252ZXJ0UzEyID0gYXdhaXQgZWNkc2Euc2lnbkNvbnZlcnRTdGVwMih7XG4gICAgICBhU2hhcmU6IHNpZ25Db252ZXJ0UzIxLmFTaGFyZSxcbiAgICAgIHdTaGFyZTogc2lnblNoYXJlcy53U2hhcmUsXG4gICAgfSk7XG4gICAgY29uc3Qgc2lnbkNvbnZlcnRTMjFfMiA9IGF3YWl0IGVjZHNhLnNpZ25Db252ZXJ0U3RlcDMoe1xuICAgICAgbXVTaGFyZTogc2lnbkNvbnZlcnRTMTIubXVTaGFyZSxcbiAgICAgIGJTaGFyZTogc2lnbkNvbnZlcnRTMjEuYlNoYXJlLFxuICAgIH0pO1xuXG4gICAgW3NpZ25Db21iaW5lMSwgc2lnbkNvbWJpbmUyXSA9IFtcbiAgICAgIGVjZHNhLnNpZ25Db21iaW5lKHtcbiAgICAgICAgZ1NoYXJlOiBzaWduQ29udmVydFMxMi5nU2hhcmUsXG4gICAgICAgIHNpZ25JbmRleDoge1xuICAgICAgICAgIGk6IHNpZ25Db252ZXJ0UzEyLm11U2hhcmUuaSxcbiAgICAgICAgICBqOiBzaWduQ29udmVydFMxMi5tdVNoYXJlLmosXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGVjZHNhLnNpZ25Db21iaW5lKHtcbiAgICAgICAgZ1NoYXJlOiBzaWduQ29udmVydFMyMV8yLmdTaGFyZSxcbiAgICAgICAgc2lnbkluZGV4OiB7XG4gICAgICAgICAgaTogc2lnbkNvbnZlcnRTMjFfMi5zaWduSW5kZXguaSxcbiAgICAgICAgICBqOiBzaWduQ29udmVydFMyMV8yLnNpZ25JbmRleC5qLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfSk7XG5cbiAgaXQoJ3NpZ24gcGhhc2UgNSBzaG91bGQgc3VjY2VlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUT0RPKEhTTS0xMjkpOiBUaGVyZSBpcyBhIGJ1ZyBzaWduaW5nIHVuaGFzaGVkIG1lc3NhZ2UgKGFsdGhvdWdoIHRoaXMgZGV2aWF0ZXMgZnJvbSBEU0Egc3BlYykgaWYgdGhlIG1lc3NhZ2UgaXMgYSBsaXR0bGUgbG9uZy5cbiAgICAvLyAgICAgICBTb21lIGRpc2NyZXBhbmN5IGJldHdlZW4gRWNkc2Euc2lnbiBhbmQgc2VjcDI1NmsxLnJlY292ZXJQdWJsaWNLZXkgb24gaGFuZGxpbmcgdGhlIG1lc3NhZ2UgaW5wdXQuXG4gICAgY29uc3QgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKCdHRzE4IFBIQVNFIDUnKTtcblxuICAgIC8vIFN0YXJ0aW5nIHBoYXNlIDVcbiAgICAvLyBJbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgc19pLCBFY2RzYS5zaWduKCkgbm93IGFsc28gY2FsY3VsYXRlcyBkYXRhIG5lZWRlZCBmb3Igc3RlcHMgNUEgYW5kIDVCOlxuICAgIC8vICAgLSBzYW1wbGUgcmFuZG9tIGxfaSBhbmQgcmhvX2kgKDVBKVxuICAgIC8vICAgLSBjb21wdXRlcyBWX2kgYW5kIEFfaSAoNUIpXVxuICAgIC8vICAgLSBjb21wdXRlcyBjb21taXRtZW50IGFuZCBkZWNvbW1pdG1lbnQgb2YgKFZfaSwgQV9pKSAoNUEsIDVCKVxuICAgIC8vICAgLSBnZW5lcmF0ZXMgcHJvb2ZzIG9mIGtub3dsZWRnZSBvZiBzX2ksIGxfaSwgcmhvX2kgdy5yLnQuIFZfaSwgQV9pICg1QilcbiAgICBjb25zdCBbc2lnbjEsIHNpZ24yXSA9IFtcbiAgICAgIGVjZHNhLmdlbmVyYXRlVkFQcm9vZnMobWVzc2FnZSwgZWNkc2Euc2lnbihtZXNzYWdlLCBzaWduQ29tYmluZTEub1NoYXJlLCBzaWduQ29tYmluZTIuZFNoYXJlKSksXG4gICAgICBlY2RzYS5nZW5lcmF0ZVZBUHJvb2ZzKG1lc3NhZ2UsIGVjZHNhLnNpZ24obWVzc2FnZSwgc2lnbkNvbWJpbmUyLm9TaGFyZSwgc2lnbkNvbWJpbmUxLmRTaGFyZSkpLFxuICAgIF07XG5cbiAgICBzaWduMS5SLnNob3VsZC5lcXVhbChzaWduMi5SKTtcbiAgICBzaWduMS55LnNob3VsZC5lcXVhbChzaWduMi55KTtcbiAgICBzaWduMS5tLnRvU3RyaW5nKCdoZXgnKS5zaG91bGQuZXF1YWwoc2lnbjIubS50b1N0cmluZygnaGV4JykpO1xuXG4gICAgLy8gU3RlcCA1QTogQ2FsY3VsYXRpb25zIGRvbmUgYnkgRWNkc2Euc2lnbigpIGFib3ZlLCBhbmQgYnJvYWRjYXN0IGNvbW1pdG1lbnQgb2YgKFZfaSwgQV9pKSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIHdpbGwgYmUgc2VudCB2aWEgY29tbXVuaWNhdGlvbiBjaGFubmVsIGF0IHRoZSBlbmQgb2YgNUEuXG4gICAgLy8gY29uc3QgY29tbWl0bWVudFZBMSA9IHNpZ24xLmNvbURlY29tVkEuY29tbWl0bWVudDtcbiAgICAvLyBjb25zdCBjb21taXRtZW50VkEyID0gc2lnbjIuY29tRGVjb21WQS5jb21taXRtZW50O1xuXG4gICAgLy8gU3RlcCA1QjogQWZ0ZXIgaGF2aW5nIHJlY2VpdmVkIGFsbCBjb21taXRtZW50cyBvZiAoVl9pLCBBX2kpIGZyb20gb3RoZXIgcGFydGllcyxcbiAgICAvLyAgICAgICAgICBlYWNoIHBhcnR5IHdpbGwgYnJvYWRjYXN0IGRlY29tbWl0bWVudCBvZiAoVl9pLCBBX2kpIGFuZCBaSyBwcm9vZnMgcmV0dXJuZWQgYnkgRWNkc2Euc2lnbigpIGFib3ZlXG4gICAgLy8gICAgICAgICAgdG8gb3RoZXIgcGFydGllcy4gIFRoZW4gRWNkc2EudmVyaWZ5VkFTaGFyZXMoKSBiZWxvdyB3aWxsOlxuICAgIC8vICAgLSB2ZXJpZnkgY29tbWl0bWVudHMgb2YgKFZfaSwgQV9pKSByZWNlaXZlZCBmcm9tIG90aGVyIHBhcnRpZXMgKDVCKVxuICAgIC8vICAgLSB2ZXJpZnkgWksgcHJvb2ZzIG9mIChWX2ksIEFfaSkgcmVjZWl2ZWQgZnJvbSBvdGhlciBwYXJ0aWVzICg1QilcbiAgICAvLyAgIC0gY2FsY3VsYXRlIFYgb3V0IG9mIEcsIHksIHIsIG0sIGFuZCBhbGwgVl9pLCBjYWxjdWxhdGUgQSBhcyBzdW0gb2YgYWxsIEFfaSAoNUIpXG4gICAgLy8gICAtIGNhbGN1bGF0ZSBVX2kgYW5kIFRfaSBhbmQgY29tbWl0bWVudCBhbmQgZGVjb21taXRtZW50IG9mIChVX2ksIFRfaSkgKDVDKVxuICAgIGNvbnN0IFtwdWJsaWNWQVNoYXJlc18xLCBwdWJsaWNWQVNoYXJlc18yXSA9IFtzaWduMSBhcyBQdWJsaWNWQVNoYXJlV2l0aFByb29mcywgc2lnbjIgYXMgUHVibGljVkFTaGFyZVdpdGhQcm9vZnNdO1xuICAgIGNvbnN0IFtVVDEsIFVUMl0gPSBbXG4gICAgICBlY2RzYS52ZXJpZnlWQVNoYXJlcyhzaWduMSwgW3B1YmxpY1ZBU2hhcmVzXzJdKSxcbiAgICAgIGVjZHNhLnZlcmlmeVZBU2hhcmVzKHNpZ24yLCBbcHVibGljVkFTaGFyZXNfMV0pLFxuICAgIF07XG5cbiAgICAvLyBTdGVwIDVDOiBDYWxjdWxhdGlvbnMgb2YgVV9pLCBUX2kgZG9uZSBieSBFY2RzYS52ZXJpZnlWQVNoYXJlcyBhYm92ZSxcbiAgICAvLyAgICAgICAgICBhbmQgYnJvYWRjYXN0IGNvbW1pdG1lbnQgb2YgKFVfaSwgVF9pKSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIHdpbGwgYmUgc2VudCB2aWEgY29tbXVuaWNhdGlvbiBjaGFubmVsIGF0IHRoZSBlbmQgb2YgNUMuXG4gICAgLy8gY29uc3QgY29tbWl0bWVudFVUMSA9IFVUMS5jb21EZWNvbVVULmNvbW1pdG1lbnQ7XG4gICAgLy8gY29uc3QgY29tbWl0bWVudFVUMiA9IFVUMi5jb21EZWNvbVVULmNvbW1pdG1lbnQ7XG5cbiAgICAvLyBTdGVwIDVEOiBBZnRlciBoYXZpbmcgcmVjZWl2ZWQgYWxsIGNvbW1pdG1lbnRzIG9mIChVX2ksIFRfaSkgZnJvbSBvdGhlciBwYXJ0aWVzLFxuICAgIC8vICAgICAgICAgIGVhY2ggcGFydHkgd2lsbCBicm9hZGNhc3QgZGVjb21taXRtZW50IG9mIChVX2ksIFRfaSkgcmV0dXJuZWQgYnkgRWNkc2EudmVyaWZ5VkFTaGFyZXMoKSBhYm92ZVxuICAgIC8vICAgICAgICAgIHRvIG90aGVyIHBhcnRpZXMuICBUaGVuIEVjZHNhLnZlcmlmeVVUU2hhcmVzKCkgYmVsb3cgd2lsbDpcbiAgICAvLyAgLSB2ZXJpZnkgY29tbWl0bWVudHMgb2YgKFVfaSwgVF9pKSByZWNlaXZlZCBmcm9tIG90aGVyIHBhcnRpZXMgKDVEKVxuICAgIC8vICAtIGNhbGN1bGF0ZSBVIGFzIHN1bSBvZiBhbGwgVV9pLCBjYWxjdWxhdGUgVCBhcyBzdW0gb2YgYWxsIFRfaSAoNUQpXG4gICAgLy8gIC0gaWYgVSBlcXVhbHMgVCwgdGhlbiByZXR1cm4gb3duIFNTaGFyZSB3aGljaCBpcyBiZWluZyByZXR1cm5lZCBieSBFY2RzYS5zaWduKCkgcmlnaHQgbm93ICg1RSlcbiAgICBjb25zdCBbcHVibGljVVRTaGFyZXNfMSwgcHVibGljVVRTaGFyZXNfMl0gPSBbVVQxIGFzIFB1YmxpY1VUU2hhcmUsIFVUMiBhcyBQdWJsaWNVVFNoYXJlXTtcbiAgICBjb25zdCBbc2lnbmF0dXJlMSwgc2lnbmF0dXJlMl0gPSBbXG4gICAgICBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDEsIFtwdWJsaWNVVFNoYXJlc18yXSksXG4gICAgICBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDIsIFtwdWJsaWNVVFNoYXJlc18xXSksXG4gICAgXTtcblxuICAgIC8vIFN0ZXAgNUU6IEJyb2FkY2FzdCBzX2kgcmV0dXJuZWQgYnkgRWNkc2EudmVyaWZ5VVRTaGFyZXMoKSBhYm92ZSB0byBvdGhlciBwYXJ0aWVzLlxuICAgIC8vICAgICAgICAgIFZlcmlmeSB0aGUgc3VtIG9mIHNfaSBzaG91bGQgYmUgYSB2YWxpZCBzaWduYXR1cmUuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gZWNkc2EuY29uc3RydWN0U2lnbmF0dXJlKFtzaWduYXR1cmUxLCBzaWduYXR1cmUyXSk7XG4gICAgZWNkc2EudmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgaXQoJ3NpZ24gcGhhc2UgNSBmYWlsIC0gbWFsaWNpb3VzIHBsYXllciBjaGVhdHMgd2l0aCBiYWQgcyBzaGFyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gQnVmZmVyLmZyb20oJ0dHMTggUEhBU0UgNScpO1xuXG4gICAgY29uc3QgW3NpZ24xLCBzaWduMl0gPSBbXG4gICAgICBlY2RzYS5nZW5lcmF0ZVZBUHJvb2ZzKG1lc3NhZ2UsIGVjZHNhLnNpZ24obWVzc2FnZSwgc2lnbkNvbWJpbmUxLm9TaGFyZSwgc2lnbkNvbWJpbmUyLmRTaGFyZSkpLFxuICAgICAgZWNkc2EuZ2VuZXJhdGVWQVByb29mcyhtZXNzYWdlLCBlY2RzYS5zaWduKG1lc3NhZ2UsIHNpZ25Db21iaW5lMi5vU2hhcmUsIHNpZ25Db21iaW5lMS5kU2hhcmUpKSxcbiAgICBdO1xuXG4gICAgc2lnbjEuUi5zaG91bGQuZXF1YWwoc2lnbjIuUik7XG4gICAgc2lnbjEueS5zaG91bGQuZXF1YWwoc2lnbjIueSk7XG4gICAgc2lnbjEubS50b1N0cmluZygnaGV4Jykuc2hvdWxkLmVxdWFsKHNpZ24yLm0udG9TdHJpbmcoJ2hleCcpKTtcblxuICAgIC8vIENoYW5nZSB0aGUgcyBzaGFyZSBvZiBzaWduMSwgYW5kIHJlY2FsY3VhbHRlIGl0cyBWIGFsb25nIHdpdGggdGhlIGNvbW1pdG1lbnQvcHJvb2YgYnkgZm9sbG93aW5nIHByb3RvY29sLlxuICAgIGNvbnN0IGJhZF9zID0gaGV4VG9CaWdJbnQoc2lnbjEucykgKyBCaWdJbnQoMSk7XG5cbiAgICBjb25zdCBiYWRfViA9IEVjZHNhLmN1cnZlLnBvaW50QWRkKFxuICAgICAgRWNkc2EuY3VydmUucG9pbnRNdWx0aXBseShoZXhUb0JpZ0ludChzaWduMS5SKSwgYmFkX3MpLFxuICAgICAgRWNkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzaWduMS5sKVxuICAgICk7XG5cbiAgICBjb25zdCBjb21EZWNvbV9WX0EgPSBIYXNoQ29tbWl0bWVudC5jcmVhdGVDb21taXRtZW50KFxuICAgICAgQnVmZmVyLmNvbmNhdChbXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoYmFkX1YsIEVjZHNhLmN1cnZlLnBvaW50Qnl0ZXMpLFxuICAgICAgICBiaWdJbnRUb0J1ZmZlckJFKHNpZ24xLkEsIEVjZHNhLmN1cnZlLnBvaW50Qnl0ZXMpLFxuICAgICAgXSlcbiAgICApO1xuICAgIGNvbnN0IHprVlByb29mID0gRWNkc2Faa1ZQcm9vZi5jcmVhdGVaa1ZQcm9vZihcbiAgICAgIGJhZF9WLFxuICAgICAgYmFkX3MsXG4gICAgICBzaWduMS5sLFxuICAgICAgaGV4VG9CaWdJbnQoc2lnbjEuUiksXG4gICAgICBFY2RzYS5jdXJ2ZSxcbiAgICAgIHNpZ24xLnByb29mQ29udGV4dFxuICAgICk7XG5cbiAgICBzaWduMS5zID0gYmlnSW50VG9CdWZmZXJCRShiYWRfcywgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBzaWduMS5WID0gYmFkX1Y7XG4gICAgc2lnbjEuY29tRGVjb21WQSA9IGNvbURlY29tX1ZfQTtcbiAgICBzaWduMS56a1ZQcm9vZlYgPSB6a1ZQcm9vZjtcblxuICAgIC8vIDVCIHdpbGwgcGFzcy5cbiAgICBjb25zdCBbcHVibGljVkFTaGFyZXNfMSwgcHVibGljVkFTaGFyZXNfMl0gPSBbc2lnbjEgYXMgUHVibGljVkFTaGFyZVdpdGhQcm9vZnMsIHNpZ24yIGFzIFB1YmxpY1ZBU2hhcmVXaXRoUHJvb2ZzXTtcbiAgICBjb25zdCBbVVQxLCBVVDJdID0gW1xuICAgICAgZWNkc2EudmVyaWZ5VkFTaGFyZXMoc2lnbjEsIFtwdWJsaWNWQVNoYXJlc18yXSksXG4gICAgICBlY2RzYS52ZXJpZnlWQVNoYXJlcyhzaWduMiwgW3B1YmxpY1ZBU2hhcmVzXzFdKSxcbiAgICBdO1xuXG4gICAgLy8gQnV0IHZlcmlmaWNhdGlvbiBhdCBiZWdpbm5pbmcgb2YgNUUgd2lsbCBmYWlsLlxuICAgIGNvbnN0IFtwdWJsaWNVVFNoYXJlc18xLCBwdWJsaWNVVFNoYXJlc18yXSA9IFtVVDEgYXMgUHVibGljVVRTaGFyZSwgVVQyIGFzIFB1YmxpY1VUU2hhcmVdO1xuICAgICgoKSA9PiBlY2RzYS52ZXJpZnlVVFNoYXJlcyhVVDEsIFtwdWJsaWNVVFNoYXJlc18yXSkpLnNob3VsZC50aHJvdygnU3VtIG9mIGFsbCBVX2kgZG9lcyBub3QgbWF0Y2ggc3VtIG9mIGFsbCBUX2knKTtcbiAgICAoKCkgPT4gZWNkc2EudmVyaWZ5VVRTaGFyZXMoVVQyLCBbcHVibGljVVRTaGFyZXNfMV0pKS5zaG91bGQudGhyb3coJ1N1bSBvZiBhbGwgVV9pIGRvZXMgbm90IG1hdGNoIHN1bSBvZiBhbGwgVF9pJyk7XG4gIH0pO1xufSk7XG4iXX0=