@bitgo/sdk-core 36.41.0 → 36.42.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 (59) hide show
  1. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  2. package/dist/src/bitgo/pendingApproval/pendingApproval.js +4 -2
  3. package/dist/src/bitgo/trading/iTradingAccount.d.ts +6 -1
  4. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  5. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  6. package/dist/src/bitgo/trading/network/network.d.ts +1 -1
  7. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  8. package/dist/src/bitgo/trading/network/network.js +3 -5
  9. package/dist/src/bitgo/trading/network/types.d.ts +1 -1
  10. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  11. package/dist/src/bitgo/trading/network/types.js +1 -1
  12. package/dist/src/bitgo/trading/tradingAccount.d.ts +13 -1
  13. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  14. package/dist/src/bitgo/trading/tradingAccount.js +32 -2
  15. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +2 -1
  16. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  17. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +3 -3
  18. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
  19. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  20. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  21. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  22. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +5 -3
  23. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  24. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +5 -3
  25. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +1 -2
  26. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -1
  27. package/dist/src/bitgo/utils/tss/eddsa/base.js +4 -7
  28. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  29. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +11 -11
  30. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +1 -1
  31. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  32. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +20 -0
  33. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  34. package/dist/src/bitgo/utils/tss/recipientUtils.js +46 -0
  35. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -0
  36. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  37. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  38. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  39. package/dist/src/bitgo/wallet/wallet.js +11 -3
  40. package/dist/src/coins/ofc.d.ts +15 -1
  41. package/dist/src/coins/ofc.d.ts.map +1 -1
  42. package/dist/src/coins/ofc.js +8 -1
  43. package/dist/src/coins/ofcToken.d.ts +5 -3
  44. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  45. package/dist/src/coins/ofcToken.js +14 -4
  46. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  47. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  48. package/dist/test/unit/bitgo/trading/tradingAccount.js +113 -0
  49. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  50. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  51. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +137 -0
  52. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  53. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  54. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +70 -0
  55. package/dist/test/unit/coins/ofc.d.ts +2 -0
  56. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  57. package/dist/test/unit/coins/ofc.js +124 -0
  58. package/dist/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAoB3C,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAwB7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ,MAAM,IAAI,mBAAmB;IAI7B;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuCxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAmC9G;;;;OAIG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IA6ExF,OAAO,CAAC,sBAAsB;YAgChB,UAAU;IAyCxB;;;;;;OAMG;YACW,WAAW;IAkCzB;;OAEG;YACW,cAAc;CAqC7B"}
1
+ {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAoB3C,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAwB7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ,MAAM,IAAI,mBAAmB;IAI7B;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuCxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqC9G;;;;OAIG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IA6ExF,OAAO,CAAC,sBAAsB;YAgChB,UAAU;IAyCxB;;;;;;OAMG;YACW,WAAW;IAkCzB;;OAEG;YACW,cAAc;CAqC7B"}
@@ -232,7 +232,9 @@ class PendingApproval {
232
232
  throw new Error('txRequestId not found');
233
233
  }
234
234
  const decryptedPrv = await this.wallet.getPrv({ walletPassphrase });
235
- const txRequest = await this.tssUtils.recreateTxRequest(txRequestId, decryptedPrv, reqId);
235
+ const pendingApprovalRecipients = this._pendingApproval.info?.transactionRequest?.recipients;
236
+ const txParams = pendingApprovalRecipients?.length ? { recipients: pendingApprovalRecipients } : undefined;
237
+ const txRequest = await this.tssUtils.recreateTxRequest(txRequestId, decryptedPrv, reqId, txParams);
236
238
  if (txRequest.apiVersion === 'lite') {
237
239
  if (!txRequest.unsignedTxs || txRequest.unsignedTxs.length === 0) {
238
240
  throw new Error('Unexpected error, no transactions found in txRequest.');
@@ -448,4 +450,4 @@ class PendingApproval {
448
450
  }
449
451
  }
450
452
  exports.PendingApproval = PendingApproval;
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCwwQ0FBNEI7QUFDNUIseURBQTJDO0FBRzNDLHdEQVE0QjtBQUM1QixvQ0FBc0Q7QUFFdEQsdURBQW9EO0FBR3BELDREQUFpRTtBQUNqRSw4Q0FBaUU7QUFHakUsMENBQThDO0FBQzlDLG9EQUE0QjtBQWE1QixNQUFhLGVBQWU7SUFPMUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsbUJBQXdDLEVBQUUsTUFBZ0I7UUFDM0csSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRSxDQUFDO1lB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QyxzREFBc0QsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO2dCQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO2dCQUU1QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxzQkFBSSxDQUFDLHdCQUF3QjtnQkFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO2dCQUN6RixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztDQUNGO0FBbmRELDBDQW1kQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBBcHByb3ZlT3B0aW9ucyxcbiAgSVBlbmRpbmdBcHByb3ZhbCxcbiAgT3duZXJUeXBlLFxuICBQZW5kaW5nQXBwcm92YWxEYXRhLFxuICBQZW5kaW5nQXBwcm92YWxJbmZvLFxuICBTdGF0ZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vcGVuZGluZ0FwcHJvdmFsJztcbmltcG9ydCB7IFJlcXVlc3RUcmFjZXIsIFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBCdWlsZFBhcmFtcyB9IGZyb20gJy4uL3dhbGxldC9CdWlsZFBhcmFtcyc7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgQmFzZVRzc1V0aWxzIGZyb20gJy4uL3V0aWxzL3Rzcy9iYXNlVFNTVXRpbHMnO1xuaW1wb3J0IEVkZHNhVXRpbHMsIHsgRWRkc2FNUEN2MlV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvdHNzL2VkZHNhJztcbmltcG9ydCB7IEVjZHNhTVBDdjJVdGlscywgRWNkc2FVdGlscyB9IGZyb20gJy4uL3V0aWxzL3Rzcy9lY2RzYSc7XG5pbXBvcnQgeyBLZXlTaGFyZSBhcyBFY2RzYUtleVNoYXJlIH0gZnJvbSAnLi4vdXRpbHMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IEtleVNoYXJlIGFzIEVkZHNhS2V5U2hhcmUgfSBmcm9tICcuLi91dGlscy90c3MvZWRkc2EvdHlwZXMnO1xuaW1wb3J0IHsgc2VuZFR4UmVxdWVzdCB9IGZyb20gJy4uL3Rzcy9jb21tb24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG50eXBlIFByZUFwcHJvdmVSZXN1bHQgPSB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIEFwcHJvdmVQZW5kaW5nQXBwcm92YWxSZXF1ZXN0Qm9keSA9IHtcbiAgc3RhdGU6ICdhcHByb3ZlZCc7XG4gIG90cDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYWxmU2lnbmVkPzogc3RyaW5nIHwgT21pdDxQcmVBcHByb3ZlUmVzdWx0LCAnaGFsZlNpZ25lZCc+O1xufTtcblxuZXhwb3J0IGNsYXNzIFBlbmRpbmdBcHByb3ZhbCBpbXBsZW1lbnRzIElQZW5kaW5nQXBwcm92YWwge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZUNvaW46IElCYXNlQ29pbjtcbiAgcHJpdmF0ZSB0c3NVdGlscz86IEJhc2VUc3NVdGlsczxFY2RzYUtleVNoYXJlIHwgRWRkc2FLZXlTaGFyZT47XG4gIHByaXZhdGUgd2FsbGV0PzogSVdhbGxldDtcbiAgcHJpdmF0ZSBfcGVuZGluZ0FwcHJvdmFsOiBQZW5kaW5nQXBwcm92YWxEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHBlbmRpbmdBcHByb3ZhbERhdGE6IFBlbmRpbmdBcHByb3ZhbERhdGEsIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuXG4gICAgaWYgKHRoaXMuYmFzZUNvaW4uc3VwcG9ydHNUc3MoKSkge1xuICAgICAgaWYgKHRoaXMuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgPT09ICdlY2RzYScpIHtcbiAgICAgICAgaWYgKHRoaXMud2FsbGV0Py5tdWx0aXNpZ1R5cGVWZXJzaW9uKCkgPT09ICdNUEN2MicpIHtcbiAgICAgICAgICB0aGlzLnRzc1V0aWxzID0gbmV3IEVjZHNhTVBDdjJVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudHNzVXRpbHMgPSBuZXcgRWNkc2FVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy53YWxsZXQ/Lm11bHRpc2lnVHlwZVZlcnNpb24oKSA9PT0gJ01QQ3YyJykge1xuICAgICAgICAgIHRoaXMudHNzVXRpbHMgPSBuZXcgRWRkc2FNUEN2MlV0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50c3NVdGlscyA9IG5ldyBFZGRzYVV0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9wZW5kaW5nQXBwcm92YWwgPSBwZW5kaW5nQXBwcm92YWxEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgZm9yIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuaWQ7XG4gIH1cblxuICB0b0pTT04oKTogUGVuZGluZ0FwcHJvdmFsRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYW4gYXBwcm92ZWQgc3RhdGVcbiAgICovXG4gIGFzeW5jIGFwcHJvdmUocGFyYW1zOiBBcHByb3ZlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBwYXJhbXMucHJldmlld1BlbmRpbmdUeHMgPSB0cnVlO1xuICAgIHBhcmFtcy5wZW5kaW5nQXBwcm92YWxJZCA9IHRoaXMuaWQoKTtcbiAgICBjb25zdCBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gdGhpcy5jYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFJZCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVdhbGxldCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5wcmVBcHByb3ZlKHBhcmFtcywgcmVxSWQpO1xuXG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogQXBwcm92ZVBlbmRpbmdBcHByb3ZhbFJlcXVlc3RCb2R5ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgLy8gaWYgdGhlIHRyYW5zYWN0aW9uIGFscmVhZHkgaGFzIGEgaGFsZiBzaWduZWQgcHJvcGVydHksIHdlIHRha2UgdGhhdCBkaXJlY3RseVxuICAgICAgICBhcHByb3ZhbFBhcmFtcy5oYWxmU2lnbmVkID0gdHJhbnNhY3Rpb24uaGFsZlNpZ25lZCB8fCB0cmFuc2FjdGlvbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCk7XG5cbiAgICAgIC8vIGlmIHRoZSByZXNwb25zZSBjb21lcyB3aXRoIGFuIGVycm9yLCBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB0cmlnZ2VyZWQgYW5vdGhlciBjb25kaXRpb25cbiAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgnZXJyb3InKSAmJiByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgncGVuZGluZ0FwcHJvdmFsJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZW5kaW5nQXBwcm92YWwgPSByZXNwb25zZTtcbiAgICAgIGF3YWl0IHRoaXMucG9zdEFwcHJvdmUocGFyYW1zLCByZXFJZCk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiAmJlxuICAgICAgICAoZS5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGUubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWplY3QocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgUGVuZGluZ0FwcHJvdmFsLnJlamVjdCgpXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGNhbmNlbChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWplY3QocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhbmQgc2lnbiBUU1MgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcHByb3ZlT3B0aW9uc30gcGFyYW1zIG5lZWRlZCB0byBnZXQgdHhzIGFuZCB1c2UgdGhlIHdhbGxldFBhc3NwaHJhc2UgdG8gdHNzIHNpZ25cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zLCByZXFJZDogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyB3YWxsZXRQYXNzcGhyYXNlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdHhSZXF1ZXN0SWQgPSB0aGlzLl9wZW5kaW5nQXBwcm92YWwudHhSZXF1ZXN0SWQ7XG5cbiAgICBpZiAoIXRoaXMud2FsbGV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dhbGxldCBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXdhbGxldFBhc3NwaHJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignd2FsbGV0UGFzc3BocmFzZSBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXR4UmVxdWVzdElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4UmVxdWVzdElkIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY3J5cHRlZFBydiA9IGF3YWl0IHRoaXMud2FsbGV0LmdldFBydih7IHdhbGxldFBhc3NwaHJhc2UgfSk7XG4gICAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgdGhpcy50c3NVdGlscyEucmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQsIGRlY3J5cHRlZFBydiwgcmVxSWQpO1xuICAgIGlmICh0eFJlcXVlc3QuYXBpVmVyc2lvbiA9PT0gJ2xpdGUnKSB7XG4gICAgICBpZiAoIXR4UmVxdWVzdC51bnNpZ25lZFR4cyB8fCB0eFJlcXVlc3QudW5zaWduZWRUeHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlcnJvciwgbm8gdHJhbnNhY3Rpb25zIGZvdW5kIGluIHR4UmVxdWVzdC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR4SGV4OiB0eFJlcXVlc3QudW5zaWduZWRUeHNbMF0uc2VyaWFsaXplZFR4SGV4LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0eFJlcXVlc3QudHJhbnNhY3Rpb25zIHx8IHR4UmVxdWVzdC50cmFuc2FjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlcnJvciwgbm8gdHJhbnNhY3Rpb25zIGZvdW5kIGluIHR4UmVxdWVzdC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR4SGV4OiB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4SGV4LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjcmVhdGUgYSB0cmFuc2FjdGlvbiBmb3IgYSBwZW5kaW5nIGFwcHJvdmFsIHRvIHJlc3BvbmQgdG8gdXBkYXRlZCBuZXR3b3JrIGNvbmRpdGlvbnNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcmVxSWRcbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtczogYW55ID0ge30sIHJlcUlkPzogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbiByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHRyYW5zYWN0aW9uIHJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxQcmVidWlsZCA9IHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWNbdGhpcy5iYXNlQ29pbi50eXBlXTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cztcbiAgICBsZXQgcHJlYnVpbGRQYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zLCB7IHJlY2lwaWVudHM6IHJlY2lwaWVudHMgfSwgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvcmlnaW5hbFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uKSkge1xuICAgICAgcHJlYnVpbGRQYXJhbXMuaG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMgJiYgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zLnR5cGUgPT09ICdjb25zb2xpZGF0ZScpIHtcbiAgICAgIC8vIGNvbnNvbGlkYXRlIHRhZyBpcyBpbiB0aGUgYnVpbGQgcGFyYW1zIC0gdGhpcyBpcyBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24sIHNvXG4gICAgICAvLyBpdCBuZWVkcyB0byBiZSByZWJ1aWx0IHVzaW5nIHRoZSBzcGVjaWFsIGNvbnNvbGlkYXRpb24gYnVpbGQgcm91dGVcbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFUcmFjZXIpO1xuICAgICAgcHJlYnVpbGRQYXJhbXMucHJlYnVpbGRUeCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgLnBvc3QodGhpcy53YWxsZXQudXJsKGAvY29uc29saWRhdGVVbnNwZW50c2ApKVxuICAgICAgICAuc2VuZChCdWlsZFBhcmFtcy5lbmNvZGUocHJlYnVpbGRQYXJhbXMpKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgICBkZWxldGUgcHJlYnVpbGRQYXJhbXMucmVjaXBpZW50cztcbiAgICB9XG5cbiAgICBwcmVidWlsZFBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwcmVidWlsZFBhcmFtcywgeyByZXFJZDogcmVxSWQgfSk7XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLndhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbihwcmVidWlsZFBhcmFtcyk7XG4gICAgLy8gY29tcGFyZSBQQVlHbyBmZWVzXG4gICAgY29uc3Qgb3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogb3JpZ2luYWxQcmVidWlsZCxcbiAgICB9KTtcbiAgICBjb25zdCByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfSk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpKSB7XG4gICAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCAhPT0gJ2JpZ2ludCcgJiZcbiAgICAgICFfLmlzRmluaXRlKHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkJyk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFfLmlzVW5kZWZpbmVkKG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSAmJlxuICAgICAgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ID4gb3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVjcmVhdGVkIHRyYW5zYWN0aW9uIGlzIHVzaW5nIGEgaGlnaGVyIHBheS1hcy15b3UtZ28tZmVlJyk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qXG4gICAqIENvbGQgd2FsbGV0cyBjYW5ub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb25zIGlmIHRoZSBvbmx5IHRoaW5nIHByb3ZpZGVkIGlzIHRoZSB3YWxsZXQgcGFzc3BocmFzZVxuICAgKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpZiBlaXRoZXJcbiAgICog4oCTIHRoZXJlIGlzIGFuIHhwcnZcbiAgICog4oCTIHRoZXJlIGlzIGEgd2FsbGV0UGFzc3BocmFzZSBhbmQgdGhlIHdhbGxldCBpcyBub3QgY29sZCAoYmVjYXVzZSBpZiBpdCdzIGNvbGQsIHRoZSBwYXNzcGhyYXNlIGlzIG9mIGxpdHRsZSB1c2UpXG4gICAqXG4gICAqIFRoZXJlZm9yZSwgaWYgbmVpdGhlciBvZiB0aGVzZSBpcyB0cnVlLCB0aGUgdHJhbnNhY3Rpb24gY2Fubm90IGJlIHJlY3JlYXRlZCwgd2hpY2ggaXMgcmVmbGVjdGVkIGluIHRoZSBpZlxuICAgKiBzdGF0ZW1lbnQgYmVsb3cuXG4gICAqXG4gICAqIExpZ2h0bmluZyB0cmFuc2FjdGlvbnMgY2Fubm90IGJlIHJlY3JlYXRlZC5cbiAgICovXG4gIHByaXZhdGUgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNDb2xkV2FsbGV0ID0gISFfLmdldCh0aGlzLndhbGxldCwgJ193YWxsZXQuaXNDb2xkJyk7XG4gICAgY29uc3QgaXNPRkNXYWxsZXQgPSB0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnb2ZjJzsgLy8gT2ZmLWNoYWluIHRyYW5zYWN0aW9ucyBkb24ndCBuZWVkIHRvIGJlIHJlYnVpbHRcbiAgICBjb25zdCBpc0xpZ2h0bmluZ1dhbGxldCA9IHRoaXMuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdsbmJ0Yyc7XG4gICAgaWYgKGlzTGlnaHRuaW5nV2FsbGV0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMueHBydiAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlICYmICFpc0NvbGRXYWxsZXQgJiYgIWlzT0ZDV2FsbGV0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyByZWNpcGllbnRzLCB0aGVuIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVjcmVhdGVkXG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuaW5mbygpPy50cmFuc2FjdGlvblJlcXVlc3Q/LmJ1aWxkUGFyYW1zPy5yZWNpcGllbnRzIHx8IFtdO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmluZm8oKT8udHJhbnNhY3Rpb25SZXF1ZXN0Py5idWlsZFBhcmFtcz8udHlwZTtcblxuICAgIC8vIFdlIG9ubHkgd2FudCB0byBub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb25zIHdpdGggbm8gcmVjaXBpZW50cyBpZiBpdCBpcyBhIFVUWE8gY29pbi5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJldHVybiAhKFxuICAgICAgdXR4b2xpYi5pc1ZhbGlkTmV0d29yaygodGhpcy5iYXNlQ29pbiBhcyBhbnkpLm5ldHdvcmspICYmXG4gICAgICByZWNpcGllbnRzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgdHlwZSAhPT0gJ2NvbnNvbGlkYXRlJ1xuICAgICk7XG4gIH1cblxuICAvKlxuICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGJlaW5nIGFwcHJvdmVkLlxuICAgKiBJZiB0aGlzIFBBIGlzIG9mIHR5cGUgJ3RyYW5zYWN0aW9uUmVxdWVzdCcgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byByZWJ1aWxkIGFuZCByZXNpZ24gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7QXBwcm92ZU9wdGlvbnN9IHBhcmFtc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gLVxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlclxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmVBcHByb3ZlKHBhcmFtczogQXBwcm92ZU9wdGlvbnMgPSB7fSwgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTxQcmVBcHByb3ZlUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gVHJhbnNhY3Rpb25SZXF1ZXN0TGl0ZSBvciBNdWx0aXNpZyB0eCdzIG11c3Qgc2lnbiBiZWZvcmUgcGVuZGluZyBhcHByb3ZhbCBpcyBhcHByb3ZlZFxuICAgIC8vIFJlLXNpZ25lZCB0eCBpcyBwcm92aWRlZCB0byB0aGUgcGVuZGluZyBhcHByb3ZhbCBhcGlcbiAgICBpZiAodGhpcy50eXBlKCkgPT09IFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVCkge1xuICAgICAgLypcbiAgICAgICAqIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhcHByb3ZpbmcgYSB0cmFuc2FjdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyB1c2VyIGhhcyBhIHByaXZhdGUga2V5IHRvIHRoZSB3YWxsZXRcbiAgICAgICAqIChzb21lIGFkbWlucyBtYXkgbm90IGhhdmUgdGhlIHNwZW5kIHBlcm1pc3Npb24pLCB0aGUgdHJhbnNhY3Rpb24gY291bGQgZWl0aGVyIGJlIHJlYnJvYWRjYXN0IGFzIGlzLCBvciBpdCBjb3VsZFxuICAgICAgICogYmUgcmVjb25zdHJ1Y3RlZC4gSXQgaXMgcHJlZmVyYWJsZSB0byByZWNvbnN0cnVjdCBhIHR4IGluIG9yZGVyIHRvIGFkaGVyZSB0byB0aGUgbGF0ZXN0IG5ldHdvcmsgY29uZGl0aW9uc1xuICAgICAgICogc3VjaCBhcyBuZXdlciB1bnNwZW50cywgZGlmZmVyZW50IGZlZXMsIG9yIGEgaGlnaGVyIHNlcXVlbmNlIGlkXG4gICAgICAgKi9cbiAgICAgIGlmIChwYXJhbXMudHgpIHtcbiAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4SGV4OiBwYXJhbXMudHgsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIHRoaXMgdXNlciBtYXkgbm90IGhhdmUgc3BlbmRpbmcgcHJpdmlsZWdlcyBvciBhIHBhc3NwaHJhc2UgbWF5IG5vdCBoYXZlIGJlZW4gcGFzc2VkIGluXG4gICAgICBpZiAoIXRoaXMuY2FuUmVjcmVhdGVUcmFuc2FjdGlvbihwYXJhbXMpKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBUcmFuc2FjdGlvblJlcXVlc3QsIHRoZW4gdGhlIHR4UmVxdWVzdCBhbHJlYWR5IGhhcyB0aGUgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIE11bHRpU2lnLCB0aGVuIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGhhbGYgc2lnbmVkIHR4IHRvIHByb3BhZ2F0ZSB0byB0aGUgYXBwcm92YWwgQVBJXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gXy5nZXQoXG4gICAgICAgICAgdGhpcy5pbmZvKCksXG4gICAgICAgICAgYHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWMuJHt0aGlzLmJhc2VDb2luLnR5cGV9YFxuICAgICAgICApIGFzIFByZUFwcHJvdmVSZXN1bHQ7XG4gICAgICAgIGlmICghXy5pc09iamVjdCh0cmFuc2FjdGlvbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZXJlIGlzIG5laXRoZXIgYW4gb3JpZ2luYWwgdHJhbnNhY3Rpb24gb2JqZWN0IG5vciBjYW4gYSBuZXcgb25lIGJlIHJlY3JlYXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXMsIHJlcUlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gcGVyZm9ybSBhbnkgcG9zdC1hcHByb3ZhbCBhY3Rpb25zLlxuICAgKiBJZiB0eXBlIGlzICd0cmFuc2FjdGlvblJlcXVlc3RGdWxsJywgdGhpcyB3aWxsIHNpZ24gdGhlIHR4UmVxdWVzdEZ1bGwgaWYgcG9zc2libGVcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcmVxSWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9zdEFwcHJvdmUocGFyYW1zOiBBcHByb3ZlT3B0aW9ucyA9IHt9LCByZXFJZDogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSgpKSB7XG4gICAgICBjYXNlIFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVF9GVUxMOlxuICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLnN0YXRlID09PSBTdGF0ZS5BUFBST1ZFRCkge1xuICAgICAgICAgIC8vIEFmdGVyIHdlIGFwcHJvdmUgYSBsaWdodG5pbmcgdHJhbnNhY3Rpb24sIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggc3VibWl0dGluZyB0aGUgcGF5bWVudFxuICAgICAgICAgIGlmICh0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnbG5idGMnKSB7XG4gICAgICAgICAgICBhc3NlcnQodGhpcy5fcGVuZGluZ0FwcHJvdmFsLnR4UmVxdWVzdElkLCAnTWlzc2luZyB0eFJlcXVlc3RJZCcpO1xuICAgICAgICAgICAgLy8gdGhpcy5wb3B1bGF0ZVdhbGxldCBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgc28gd2Ugc2hvdWxkIGJlIGdvb2QgaGVyZVxuICAgICAgICAgICAgYXNzZXJ0KHRoaXMud2FsbGV0Py5pZCgpLCAnTWlzc2luZyB3YWxsZXQgaWQnKTtcbiAgICAgICAgICAgIC8vIHRvZG86IGFkZCB0ZXN0IGNhc2UgZm9yIHRoaXNcbiAgICAgICAgICAgIC8vIGFkZCBuZXcgdHJhbnNmZXIgYmVmb3JlIHNlbmRpbmcgdHhcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5iaXRnby51cmwoXG4gICAgICAgICAgICAgICAgICAnL3dhbGxldC8nICsgdGhpcy53YWxsZXQ/LmlkKCkgKyAnL3R4cmVxdWVzdHMvJyArIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCArICcvdHJhbnNmZXJzJyxcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnNlbmQoKVxuICAgICAgICAgICAgICAucmVzdWx0KCk7XG4gICAgICAgICAgICBhd2FpdCBzZW5kVHhSZXF1ZXN0KFxuICAgICAgICAgICAgICB0aGlzLmJpdGdvLFxuICAgICAgICAgICAgICB0aGlzLndhbGxldD8uaWQoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgUmVxdWVzdFR5cGUudHgsXG4gICAgICAgICAgICAgIHJlcUlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKHBhcmFtcykgJiYgdGhpcy5iYXNlQ29pbi5zdXBwb3J0c1RzcygpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgc2VsZi53YWxsZXQgaXMgc2V0XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBvcHVsYXRlV2FsbGV0KCk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMud2FsbGV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE8oV1AtMTM0MSk6IGNvbnNvbGlkYXRlL3NpbXBsaWZ5IHRoaXMgbG9naWNcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSgpKSB7XG4gICAgICBjYXNlIFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVDpcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25SZXF1ZXN0ID0gdGhpcy5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0O1xuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1cGRhdGVkV2FsbGV0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCAtIHVuYWJsZSB0byBnZXQgd2FsbGV0IHVzaW5nIHNvdXJjZXdhbGxldCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53YWxsZXQgPSB1cGRhdGVkV2FsbGV0O1xuXG4gICAgICAgIGlmICh0aGlzLndhbGxldC5pZCgpICE9PSB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZS5UUkFOU0FDVElPTl9SRVFVRVNUX0ZVTEw6XG4gICAgICAgIGNvbnN0IHdhbGxldElkID0gdGhpcy53YWxsZXRJZCgpO1xuICAgICAgICBpZiAoIXdhbGxldElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVycm9yLCBwZW5kaW5nQXBwcm92YWwud2FsbGV0IGlzIGV4cGVjdGVkIHRvIGJlIGRlZmluZWQhJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53YWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdGhpcy53YWxsZXRJZCgpIH0pO1xuICAgICAgICBpZiAoIXRoaXMud2FsbGV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgcGVuZGluZ0FwcHJvdmFsLndhbGxldCcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbn1cbiJdfQ==
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCwwQ0FBNEI7QUFDNUIseURBQTJDO0FBRzNDLHdEQVE0QjtBQUM1QixvQ0FBc0Q7QUFFdEQsdURBQW9EO0FBR3BELDREQUFpRTtBQUNqRSw4Q0FBaUU7QUFHakUsMENBQThDO0FBQzlDLG9EQUE0QjtBQWE1QixNQUFhLGVBQWU7SUFPMUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsbUJBQXdDLEVBQUUsTUFBZ0I7UUFDM0csSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRSxDQUFDO1lB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IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBBcHByb3ZlT3B0aW9ucyxcbiAgSVBlbmRpbmdBcHByb3ZhbCxcbiAgT3duZXJUeXBlLFxuICBQZW5kaW5nQXBwcm92YWxEYXRhLFxuICBQZW5kaW5nQXBwcm92YWxJbmZvLFxuICBTdGF0ZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vcGVuZGluZ0FwcHJvdmFsJztcbmltcG9ydCB7IFJlcXVlc3RUcmFjZXIsIFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBCdWlsZFBhcmFtcyB9IGZyb20gJy4uL3dhbGxldC9CdWlsZFBhcmFtcyc7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgQmFzZVRzc1V0aWxzIGZyb20gJy4uL3V0aWxzL3Rzcy9iYXNlVFNTVXRpbHMnO1xuaW1wb3J0IEVkZHNhVXRpbHMsIHsgRWRkc2FNUEN2MlV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvdHNzL2VkZHNhJztcbmltcG9ydCB7IEVjZHNhTVBDdjJVdGlscywgRWNkc2FVdGlscyB9IGZyb20gJy4uL3V0aWxzL3Rzcy9lY2RzYSc7XG5pbXBvcnQgeyBLZXlTaGFyZSBhcyBFY2RzYUtleVNoYXJlIH0gZnJvbSAnLi4vdXRpbHMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IEtleVNoYXJlIGFzIEVkZHNhS2V5U2hhcmUgfSBmcm9tICcuLi91dGlscy90c3MvZWRkc2EvdHlwZXMnO1xuaW1wb3J0IHsgc2VuZFR4UmVxdWVzdCB9IGZyb20gJy4uL3Rzcy9jb21tb24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG50eXBlIFByZUFwcHJvdmVSZXN1bHQgPSB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIEFwcHJvdmVQZW5kaW5nQXBwcm92YWxSZXF1ZXN0Qm9keSA9IHtcbiAgc3RhdGU6ICdhcHByb3ZlZCc7XG4gIG90cDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYWxmU2lnbmVkPzogc3RyaW5nIHwgT21pdDxQcmVBcHByb3ZlUmVzdWx0LCAnaGFsZlNpZ25lZCc+O1xufTtcblxuZXhwb3J0IGNsYXNzIFBlbmRpbmdBcHByb3ZhbCBpbXBsZW1lbnRzIElQZW5kaW5nQXBwcm92YWwge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZUNvaW46IElCYXNlQ29pbjtcbiAgcHJpdmF0ZSB0c3NVdGlscz86IEJhc2VUc3NVdGlsczxFY2RzYUtleVNoYXJlIHwgRWRkc2FLZXlTaGFyZT47XG4gIHByaXZhdGUgd2FsbGV0PzogSVdhbGxldDtcbiAgcHJpdmF0ZSBfcGVuZGluZ0FwcHJvdmFsOiBQZW5kaW5nQXBwcm92YWxEYXRhO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHBlbmRpbmdBcHByb3ZhbERhdGE6IFBlbmRpbmdBcHByb3ZhbERhdGEsIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuXG4gICAgaWYgKHRoaXMuYmFzZUNvaW4uc3VwcG9ydHNUc3MoKSkge1xuICAgICAgaWYgKHRoaXMuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgPT09ICdlY2RzYScpIHtcbiAgICAgICAgaWYgKHRoaXMud2FsbGV0Py5tdWx0aXNpZ1R5cGVWZXJzaW9uKCkgPT09ICdNUEN2MicpIHtcbiAgICAgICAgICB0aGlzLnRzc1V0aWxzID0gbmV3IEVjZHNhTVBDdjJVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudHNzVXRpbHMgPSBuZXcgRWNkc2FVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy53YWxsZXQ/Lm11bHRpc2lnVHlwZVZlcnNpb24oKSA9PT0gJ01QQ3YyJykge1xuICAgICAgICAgIHRoaXMudHNzVXRpbHMgPSBuZXcgRWRkc2FNUEN2MlV0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50c3NVdGlscyA9IG5ldyBFZGRzYVV0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9wZW5kaW5nQXBwcm92YWwgPSBwZW5kaW5nQXBwcm92YWxEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgZm9yIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuaWQ7XG4gIH1cblxuICB0b0pTT04oKTogUGVuZGluZ0FwcHJvdmFsRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYW4gYXBwcm92ZWQgc3RhdGVcbiAgICovXG4gIGFzeW5jIGFwcHJvdmUocGFyYW1zOiBBcHByb3ZlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBwYXJhbXMucHJldmlld1BlbmRpbmdUeHMgPSB0cnVlO1xuICAgIHBhcmFtcy5wZW5kaW5nQXBwcm92YWxJZCA9IHRoaXMuaWQoKTtcbiAgICBjb25zdCBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gdGhpcy5jYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFJZCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVdhbGxldCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5wcmVBcHByb3ZlKHBhcmFtcywgcmVxSWQpO1xuXG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogQXBwcm92ZVBlbmRpbmdBcHByb3ZhbFJlcXVlc3RCb2R5ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgLy8gaWYgdGhlIHRyYW5zYWN0aW9uIGFscmVhZHkgaGFzIGEgaGFsZiBzaWduZWQgcHJvcGVydHksIHdlIHRha2UgdGhhdCBkaXJlY3RseVxuICAgICAgICBhcHByb3ZhbFBhcmFtcy5oYWxmU2lnbmVkID0gdHJhbnNhY3Rpb24uaGFsZlNpZ25lZCB8fCB0cmFuc2FjdGlvbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCk7XG5cbiAgICAgIC8vIGlmIHRoZSByZXNwb25zZSBjb21lcyB3aXRoIGFuIGVycm9yLCBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB0cmlnZ2VyZWQgYW5vdGhlciBjb25kaXRpb25cbiAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgnZXJyb3InKSAmJiByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgncGVuZGluZ0FwcHJvdmFsJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZW5kaW5nQXBwcm92YWwgPSByZXNwb25zZTtcbiAgICAgIGF3YWl0IHRoaXMucG9zdEFwcHJvdmUocGFyYW1zLCByZXFJZCk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiAmJlxuICAgICAgICAoZS5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGUubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWplY3QocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgUGVuZGluZ0FwcHJvdmFsLnJlamVjdCgpXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGNhbmNlbChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWplY3QocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhbmQgc2lnbiBUU1MgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcHByb3ZlT3B0aW9uc30gcGFyYW1zIG5lZWRlZCB0byBnZXQgdHhzIGFuZCB1c2UgdGhlIHdhbGxldFBhc3NwaHJhc2UgdG8gdHNzIHNpZ25cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zLCByZXFJZDogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyB3YWxsZXRQYXNzcGhyYXNlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdHhSZXF1ZXN0SWQgPSB0aGlzLl9wZW5kaW5nQXBwcm92YWwudHhSZXF1ZXN0SWQ7XG5cbiAgICBpZiAoIXRoaXMud2FsbGV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dhbGxldCBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXdhbGxldFBhc3NwaHJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignd2FsbGV0UGFzc3BocmFzZSBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXR4UmVxdWVzdElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4UmVxdWVzdElkIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY3J5cHRlZFBydiA9IGF3YWl0IHRoaXMud2FsbGV0LmdldFBydih7IHdhbGxldFBhc3NwaHJhc2UgfSk7XG4gICAgY29uc3QgcGVuZGluZ0FwcHJvdmFsUmVjaXBpZW50cyA9IHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvPy50cmFuc2FjdGlvblJlcXVlc3Q/LnJlY2lwaWVudHM7XG4gICAgY29uc3QgdHhQYXJhbXMgPSBwZW5kaW5nQXBwcm92YWxSZWNpcGllbnRzPy5sZW5ndGggPyB7IHJlY2lwaWVudHM6IHBlbmRpbmdBcHByb3ZhbFJlY2lwaWVudHMgfSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCB0aGlzLnRzc1V0aWxzIS5yZWNyZWF0ZVR4UmVxdWVzdCh0eFJlcXVlc3RJZCwgZGVjcnlwdGVkUHJ2LCByZXFJZCwgdHhQYXJhbXMpO1xuICAgIGlmICh0eFJlcXVlc3QuYXBpVmVyc2lvbiA9PT0gJ2xpdGUnKSB7XG4gICAgICBpZiAoIXR4UmVxdWVzdC51bnNpZ25lZFR4cyB8fCB0eFJlcXVlc3QudW5zaWduZWRUeHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlcnJvciwgbm8gdHJhbnNhY3Rpb25zIGZvdW5kIGluIHR4UmVxdWVzdC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR4SGV4OiB0eFJlcXVlc3QudW5zaWduZWRUeHNbMF0uc2VyaWFsaXplZFR4SGV4LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0eFJlcXVlc3QudHJhbnNhY3Rpb25zIHx8IHR4UmVxdWVzdC50cmFuc2FjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlcnJvciwgbm8gdHJhbnNhY3Rpb25zIGZvdW5kIGluIHR4UmVxdWVzdC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR4SGV4OiB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4SGV4LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjcmVhdGUgYSB0cmFuc2FjdGlvbiBmb3IgYSBwZW5kaW5nIGFwcHJvdmFsIHRvIHJlc3BvbmQgdG8gdXBkYXRlZCBuZXR3b3JrIGNvbmRpdGlvbnNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcmVxSWRcbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtczogYW55ID0ge30sIHJlcUlkPzogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbiByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHRyYW5zYWN0aW9uIHJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxQcmVidWlsZCA9IHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWNbdGhpcy5iYXNlQ29pbi50eXBlXTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cztcbiAgICBsZXQgcHJlYnVpbGRQYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zLCB7IHJlY2lwaWVudHM6IHJlY2lwaWVudHMgfSwgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvcmlnaW5hbFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uKSkge1xuICAgICAgcHJlYnVpbGRQYXJhbXMuaG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXFUcmFjZXIgPSByZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMgJiYgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zLnR5cGUgPT09ICdjb25zb2xpZGF0ZScpIHtcbiAgICAgIC8vIGNvbnNvbGlkYXRlIHRhZyBpcyBpbiB0aGUgYnVpbGQgcGFyYW1zIC0gdGhpcyBpcyBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24sIHNvXG4gICAgICAvLyBpdCBuZWVkcyB0byBiZSByZWJ1aWx0IHVzaW5nIHRoZSBzcGVjaWFsIGNvbnNvbGlkYXRpb24gYnVpbGQgcm91dGVcbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFUcmFjZXIpO1xuICAgICAgcHJlYnVpbGRQYXJhbXMucHJlYnVpbGRUeCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgLnBvc3QodGhpcy53YWxsZXQudXJsKGAvY29uc29saWRhdGVVbnNwZW50c2ApKVxuICAgICAgICAuc2VuZChCdWlsZFBhcmFtcy5lbmNvZGUocHJlYnVpbGRQYXJhbXMpKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgICBkZWxldGUgcHJlYnVpbGRQYXJhbXMucmVjaXBpZW50cztcbiAgICB9XG5cbiAgICBwcmVidWlsZFBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwcmVidWlsZFBhcmFtcywgeyByZXFJZDogcmVxSWQgfSk7XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLndhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbihwcmVidWlsZFBhcmFtcyk7XG4gICAgLy8gY29tcGFyZSBQQVlHbyBmZWVzXG4gICAgY29uc3Qgb3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogb3JpZ2luYWxQcmVidWlsZCxcbiAgICB9KTtcbiAgICBjb25zdCByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfSk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChyZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpKSB7XG4gICAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCAhPT0gJ2JpZ2ludCcgJiZcbiAgICAgICFfLmlzRmluaXRlKHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkJyk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFfLmlzVW5kZWZpbmVkKG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSAmJlxuICAgICAgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ID4gb3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVjcmVhdGVkIHRyYW5zYWN0aW9uIGlzIHVzaW5nIGEgaGlnaGVyIHBheS1hcy15b3UtZ28tZmVlJyk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qXG4gICAqIENvbGQgd2FsbGV0cyBjYW5ub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb25zIGlmIHRoZSBvbmx5IHRoaW5nIHByb3ZpZGVkIGlzIHRoZSB3YWxsZXQgcGFzc3BocmFzZVxuICAgKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpZiBlaXRoZXJcbiAgICog4oCTIHRoZXJlIGlzIGFuIHhwcnZcbiAgICog4oCTIHRoZXJlIGlzIGEgd2FsbGV0UGFzc3BocmFzZSBhbmQgdGhlIHdhbGxldCBpcyBub3QgY29sZCAoYmVjYXVzZSBpZiBpdCdzIGNvbGQsIHRoZSBwYXNzcGhyYXNlIGlzIG9mIGxpdHRsZSB1c2UpXG4gICAqXG4gICAqIFRoZXJlZm9yZSwgaWYgbmVpdGhlciBvZiB0aGVzZSBpcyB0cnVlLCB0aGUgdHJhbnNhY3Rpb24gY2Fubm90IGJlIHJlY3JlYXRlZCwgd2hpY2ggaXMgcmVmbGVjdGVkIGluIHRoZSBpZlxuICAgKiBzdGF0ZW1lbnQgYmVsb3cuXG4gICAqXG4gICAqIExpZ2h0bmluZyB0cmFuc2FjdGlvbnMgY2Fubm90IGJlIHJlY3JlYXRlZC5cbiAgICovXG4gIHByaXZhdGUgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNDb2xkV2FsbGV0ID0gISFfLmdldCh0aGlzLndhbGxldCwgJ193YWxsZXQuaXNDb2xkJyk7XG4gICAgY29uc3QgaXNPRkNXYWxsZXQgPSB0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnb2ZjJzsgLy8gT2ZmLWNoYWluIHRyYW5zYWN0aW9ucyBkb24ndCBuZWVkIHRvIGJlIHJlYnVpbHRcbiAgICBjb25zdCBpc0xpZ2h0bmluZ1dhbGxldCA9IHRoaXMuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdsbmJ0Yyc7XG4gICAgaWYgKGlzTGlnaHRuaW5nV2FsbGV0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMueHBydiAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlICYmICFpc0NvbGRXYWxsZXQgJiYgIWlzT0ZDV2FsbGV0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyByZWNpcGllbnRzLCB0aGVuIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVjcmVhdGVkXG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuaW5mbygpPy50cmFuc2FjdGlvblJlcXVlc3Q/LmJ1aWxkUGFyYW1zPy5yZWNpcGllbnRzIHx8IFtdO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmluZm8oKT8udHJhbnNhY3Rpb25SZXF1ZXN0Py5idWlsZFBhcmFtcz8udHlwZTtcblxuICAgIC8vIFdlIG9ubHkgd2FudCB0byBub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb25zIHdpdGggbm8gcmVjaXBpZW50cyBpZiBpdCBpcyBhIFVUWE8gY29pbi5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJldHVybiAhKFxuICAgICAgdXR4b2xpYi5pc1ZhbGlkTmV0d29yaygodGhpcy5iYXNlQ29pbiBhcyBhbnkpLm5ldHdvcmspICYmXG4gICAgICByZWNpcGllbnRzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgdHlwZSAhPT0gJ2NvbnNvbGlkYXRlJ1xuICAgICk7XG4gIH1cblxuICAvKlxuICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGJlaW5nIGFwcHJvdmVkLlxuICAgKiBJZiB0aGlzIFBBIGlzIG9mIHR5cGUgJ3RyYW5zYWN0aW9uUmVxdWVzdCcgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byByZWJ1aWxkIGFuZCByZXNpZ24gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7QXBwcm92ZU9wdGlvbnN9IHBhcmFtc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gLVxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlclxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmVBcHByb3ZlKHBhcmFtczogQXBwcm92ZU9wdGlvbnMgPSB7fSwgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTxQcmVBcHByb3ZlUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gVHJhbnNhY3Rpb25SZXF1ZXN0TGl0ZSBvciBNdWx0aXNpZyB0eCdzIG11c3Qgc2lnbiBiZWZvcmUgcGVuZGluZyBhcHByb3ZhbCBpcyBhcHByb3ZlZFxuICAgIC8vIFJlLXNpZ25lZCB0eCBpcyBwcm92aWRlZCB0byB0aGUgcGVuZGluZyBhcHByb3ZhbCBhcGlcbiAgICBpZiAodGhpcy50eXBlKCkgPT09IFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVCkge1xuICAgICAgLypcbiAgICAgICAqIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhcHByb3ZpbmcgYSB0cmFuc2FjdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyB1c2VyIGhhcyBhIHByaXZhdGUga2V5IHRvIHRoZSB3YWxsZXRcbiAgICAgICAqIChzb21lIGFkbWlucyBtYXkgbm90IGhhdmUgdGhlIHNwZW5kIHBlcm1pc3Npb24pLCB0aGUgdHJhbnNhY3Rpb24gY291bGQgZWl0aGVyIGJlIHJlYnJvYWRjYXN0IGFzIGlzLCBvciBpdCBjb3VsZFxuICAgICAgICogYmUgcmVjb25zdHJ1Y3RlZC4gSXQgaXMgcHJlZmVyYWJsZSB0byByZWNvbnN0cnVjdCBhIHR4IGluIG9yZGVyIHRvIGFkaGVyZSB0byB0aGUgbGF0ZXN0IG5ldHdvcmsgY29uZGl0aW9uc1xuICAgICAgICogc3VjaCBhcyBuZXdlciB1bnNwZW50cywgZGlmZmVyZW50IGZlZXMsIG9yIGEgaGlnaGVyIHNlcXVlbmNlIGlkXG4gICAgICAgKi9cbiAgICAgIGlmIChwYXJhbXMudHgpIHtcbiAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4SGV4OiBwYXJhbXMudHgsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIHRoaXMgdXNlciBtYXkgbm90IGhhdmUgc3BlbmRpbmcgcHJpdmlsZWdlcyBvciBhIHBhc3NwaHJhc2UgbWF5IG5vdCBoYXZlIGJlZW4gcGFzc2VkIGluXG4gICAgICBpZiAoIXRoaXMuY2FuUmVjcmVhdGVUcmFuc2FjdGlvbihwYXJhbXMpKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBUcmFuc2FjdGlvblJlcXVlc3QsIHRoZW4gdGhlIHR4UmVxdWVzdCBhbHJlYWR5IGhhcyB0aGUgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIE11bHRpU2lnLCB0aGVuIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGhhbGYgc2lnbmVkIHR4IHRvIHByb3BhZ2F0ZSB0byB0aGUgYXBwcm92YWwgQVBJXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gXy5nZXQoXG4gICAgICAgICAgdGhpcy5pbmZvKCksXG4gICAgICAgICAgYHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWMuJHt0aGlzLmJhc2VDb2luLnR5cGV9YFxuICAgICAgICApIGFzIFByZUFwcHJvdmVSZXN1bHQ7XG4gICAgICAgIGlmICghXy5pc09iamVjdCh0cmFuc2FjdGlvbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZXJlIGlzIG5laXRoZXIgYW4gb3JpZ2luYWwgdHJhbnNhY3Rpb24gb2JqZWN0IG5vciBjYW4gYSBuZXcgb25lIGJlIHJlY3JlYXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXMsIHJlcUlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gcGVyZm9ybSBhbnkgcG9zdC1hcHByb3ZhbCBhY3Rpb25zLlxuICAgKiBJZiB0eXBlIGlzICd0cmFuc2FjdGlvblJlcXVlc3RGdWxsJywgdGhpcyB3aWxsIHNpZ24gdGhlIHR4UmVxdWVzdEZ1bGwgaWYgcG9zc2libGVcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcmVxSWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9zdEFwcHJvdmUocGFyYW1zOiBBcHByb3ZlT3B0aW9ucyA9IHt9LCByZXFJZDogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSgpKSB7XG4gICAgICBjYXNlIFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVF9GVUxMOlxuICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLnN0YXRlID09PSBTdGF0ZS5BUFBST1ZFRCkge1xuICAgICAgICAgIC8vIEFmdGVyIHdlIGFwcHJvdmUgYSBsaWdodG5pbmcgdHJhbnNhY3Rpb24sIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggc3VibWl0dGluZyB0aGUgcGF5bWVudFxuICAgICAgICAgIGlmICh0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnbG5idGMnKSB7XG4gICAgICAgICAgICBhc3NlcnQodGhpcy5fcGVuZGluZ0FwcHJvdmFsLnR4UmVxdWVzdElkLCAnTWlzc2luZyB0eFJlcXVlc3RJZCcpO1xuICAgICAgICAgICAgLy8gdGhpcy5wb3B1bGF0ZVdhbGxldCBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgc28gd2Ugc2hvdWxkIGJlIGdvb2QgaGVyZVxuICAgICAgICAgICAgYXNzZXJ0KHRoaXMud2FsbGV0Py5pZCgpLCAnTWlzc2luZyB3YWxsZXQgaWQnKTtcbiAgICAgICAgICAgIC8vIHRvZG86IGFkZCB0ZXN0IGNhc2UgZm9yIHRoaXNcbiAgICAgICAgICAgIC8vIGFkZCBuZXcgdHJhbnNmZXIgYmVmb3JlIHNlbmRpbmcgdHhcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5iaXRnby51cmwoXG4gICAgICAgICAgICAgICAgICAnL3dhbGxldC8nICsgdGhpcy53YWxsZXQ/LmlkKCkgKyAnL3R4cmVxdWVzdHMvJyArIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCArICcvdHJhbnNmZXJzJyxcbiAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnNlbmQoKVxuICAgICAgICAgICAgICAucmVzdWx0KCk7XG4gICAgICAgICAgICBhd2FpdCBzZW5kVHhSZXF1ZXN0KFxuICAgICAgICAgICAgICB0aGlzLmJpdGdvLFxuICAgICAgICAgICAgICB0aGlzLndhbGxldD8uaWQoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgUmVxdWVzdFR5cGUudHgsXG4gICAgICAgICAgICAgIHJlcUlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKHBhcmFtcykgJiYgdGhpcy5iYXNlQ29pbi5zdXBwb3J0c1RzcygpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgc2VsZi53YWxsZXQgaXMgc2V0XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBvcHVsYXRlV2FsbGV0KCk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMud2FsbGV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE8oV1AtMTM0MSk6IGNvbnNvbGlkYXRlL3NpbXBsaWZ5IHRoaXMgbG9naWNcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSgpKSB7XG4gICAgICBjYXNlIFR5cGUuVFJBTlNBQ1RJT05fUkVRVUVTVDpcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25SZXF1ZXN0ID0gdGhpcy5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0O1xuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1cGRhdGVkV2FsbGV0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCAtIHVuYWJsZSB0byBnZXQgd2FsbGV0IHVzaW5nIHNvdXJjZXdhbGxldCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53YWxsZXQgPSB1cGRhdGVkV2FsbGV0O1xuXG4gICAgICAgIGlmICh0aGlzLndhbGxldC5pZCgpICE9PSB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZS5UUkFOU0FDVElPTl9SRVFVRVNUX0ZVTEw6XG4gICAgICAgIGNvbnN0IHdhbGxldElkID0gdGhpcy53YWxsZXRJZCgpO1xuICAgICAgICBpZiAoIXdhbGxldElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVycm9yLCBwZW5kaW5nQXBwcm92YWwud2FsbGV0IGlzIGV4cGVjdGVkIHRvIGJlIGRlZmluZWQhJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53YWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdGhpcy53YWxsZXRJZCgpIH0pO1xuICAgICAgICBpZiAoIXRoaXMud2FsbGV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgcGVuZGluZ0FwcHJvdmFsLndhbGxldCcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,12 @@
1
1
  import { ITradingNetwork } from './network';
2
+ /**
3
+ * Parameters for the signing a payload from the trading account
4
+ * @param payload - The payload to sign
5
+ * @param walletPassphrase - The passphrase of the wallet that will be used to decrypt the user key and sign the payload. If not provided, the BitGo key will be used.
6
+ */
2
7
  export interface SignPayloadParameters {
3
8
  payload: string | Record<string, unknown>;
4
- walletPassphrase: string;
9
+ walletPassphrase?: string;
5
10
  }
6
11
  export interface ITradingAccount {
7
12
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"iTradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/iTradingAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,SAAS,IAAI,eAAe,CAAC;CAC9B"}
1
+ {"version":3,"file":"iTradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/iTradingAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,SAAS,IAAI,eAAe,CAAC;CAC9B"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVRyYWRpbmdBY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvaVRyYWRpbmdBY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVHJhZGluZ05ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25QYXlsb2FkUGFyYW1ldGVycyB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYWRpbmdBY2NvdW50IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgc2lnblBheWxvYWQocGFyYW1zOiBTaWduUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPHN0cmluZz47XG4gIHRvTmV0d29yaygpOiBJVHJhZGluZ05ldHdvcms7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVRyYWRpbmdBY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvaVRyYWRpbmdBY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVHJhZGluZ05ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSBzaWduaW5nIGEgcGF5bG9hZCBmcm9tIHRoZSB0cmFkaW5nIGFjY291bnRcbiAqIEBwYXJhbSBwYXlsb2FkIC0gVGhlIHBheWxvYWQgdG8gc2lnblxuICogQHBhcmFtIHdhbGxldFBhc3NwaHJhc2UgLSBUaGUgcGFzc3BocmFzZSBvZiB0aGUgd2FsbGV0IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlY3J5cHQgdGhlIHVzZXIga2V5IGFuZCBzaWduIHRoZSBwYXlsb2FkLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBCaXRHbyBrZXkgd2lsbCBiZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25QYXlsb2FkUGFyYW1ldGVycyB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUcmFkaW5nQWNjb3VudCB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHNpZ25QYXlsb2FkKHBhcmFtczogU2lnblBheWxvYWRQYXJhbWV0ZXJzKTogUHJvbWlzZTxzdHJpbmc+O1xuICB0b05ldHdvcmsoKTogSVRyYWRpbmdOZXR3b3JrO1xufVxuIl19
@@ -17,7 +17,7 @@ export declare class TradingNetwork implements ITradingNetwork {
17
17
  getAllocationById({ allocationId, ...params }: GetNetworkAllocationByIdParams): Promise<GetNetworkAllocationByIdResponse>;
18
18
  /**
19
19
  * Prepare an allocation for submission
20
- * @param {string} walletPassphrase ofc wallet passphrase
20
+ * @param {string} walletPassphrase ofc wallet passphrase - required only when signing via user key
21
21
  * @param {string} connectionId connection to whom to make the allocation or deallocation
22
22
  * @param {string=} clientExternalId one time generated uuid v4
23
23
  * @param {string} currency currency for which the allocation should be made. e.g. btc / tbtc
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/network.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,mCAAmC,EACnC,qCAAqC,EACrC,eAAe,EACf,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAE/B,MAAM,EAAE,OAAO,CAAC;gBAEX,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;IAMnE,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKnF,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKnF,sBAAsB,CAAC,MAAM,EAAE,mCAAmC,GAAG,OAAO,CAAC,qCAAqC,CAAC;IAKnH,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E,gBAAgB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAKjG,gBAAgB,CAAC,EACf,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAO3E,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,EACtB,gBAAgB,EAChB,GAAG,IAAI,EACR,EAAE,8BAA8B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAqB1E,gBAAgB,CAAC,EACf,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAO3E,kBAAkB,CAAC,EACjB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,+BAA+B,GAAG,OAAO,CAAC,iCAAiC,CAAC;IAO/E,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E,sBAAsB,CAAC,MAAM,CAAC,EAAE,mCAAmC,GAAG,OAAO,CAAC,qCAAqC,CAAC;CAMrH"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/network.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,mCAAmC,EACnC,qCAAqC,EACrC,eAAe,EACf,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAE/B,MAAM,EAAE,OAAO,CAAC;gBAEX,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;IAMnE,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKnF,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKnF,sBAAsB,CAAC,MAAM,EAAE,mCAAmC,GAAG,OAAO,CAAC,qCAAqC,CAAC;IAKnH,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E,gBAAgB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAKjG,gBAAgB,CAAC,EACf,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAO3E,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,EACtB,gBAAgB,EAChB,GAAG,IAAI,EACR,EAAE,8BAA8B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAkB1E,gBAAgB,CAAC,EACf,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAO3E,kBAAkB,CAAC,EACjB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,+BAA+B,GAAG,OAAO,CAAC,iCAAiC,CAAC;IAO/E,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAK5F,iBAAiB,CAAC,EAChB,YAAY,EACZ,GAAG,MAAM,EACV,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAO7E,sBAAsB,CAAC,MAAM,CAAC,EAAE,mCAAmC,GAAG,OAAO,CAAC,qCAAqC,CAAC;CAMrH"}
@@ -50,7 +50,7 @@ class TradingNetwork {
50
50
  }
51
51
  /**
52
52
  * Prepare an allocation for submission
53
- * @param {string} walletPassphrase ofc wallet passphrase
53
+ * @param {string} walletPassphrase ofc wallet passphrase - required only when signing via user key
54
54
  * @param {string} connectionId connection to whom to make the allocation or deallocation
55
55
  * @param {string=} clientExternalId one time generated uuid v4
56
56
  * @param {string} currency currency for which the allocation should be made. e.g. btc / tbtc
@@ -67,9 +67,7 @@ class TradingNetwork {
67
67
  body.nonce = crypto_1.default.randomBytes(32).toString('hex');
68
68
  }
69
69
  const payload = JSON.stringify(body);
70
- const prv = await this.wallet.getPrv({ walletPassphrase });
71
- const signedBuffer = await this.wallet.baseCoin.signMessage({ prv }, payload);
72
- const signature = signedBuffer.toString('hex');
70
+ const signature = await this.wallet.toTradingAccount().signPayload({ payload, walletPassphrase });
73
71
  return {
74
72
  ...body,
75
73
  payload,
@@ -98,4 +96,4 @@ class TradingNetwork {
98
96
  }
99
97
  }
100
98
  exports.TradingNetwork = TradingNetwork;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL25ldHdvcmsvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBb0M7QUFDcEMsb0RBQTRCO0FBb0M1QixNQUFhLGNBQWM7SUFNekIsWUFBWSxZQUFvQixFQUFFLE1BQWUsRUFBRSxLQUFnQjtRQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWlDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLElBQUksQ0FBQyxZQUFZLG1CQUFtQixDQUFDLENBQUM7UUFDN0csT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFpQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLCtCQUErQixJQUFJLENBQUMsWUFBWSxXQUFXLENBQUMsQ0FBQztRQUNyRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBMkM7UUFDaEUs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QUNyQywrQkFBK0IsSUFBSSxDQUFDLFlBQVksd0JBQXdCLFlBQVksRUFBRSxDQUN2RixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQTRDO1FBQ2pFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQ3JDLCtCQUErQixJQUFJLENBQUMsWUFBWSw4QkFBOEIsQ0FDL0UsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNGLENBQUM7Q0FDRjtBQXBKRCx3Q0FvSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vLi4vd2FsbGV0JztcbmltcG9ydCB7XG4gIENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUGFyYW1zLFxuICBDcmVhdGVOZXR3b3JrQWxsb2NhdGlvblJlc3BvbnNlLFxuICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblBhcmFtcyxcbiAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25SZXNwb25zZSxcbiAgQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblBhcmFtcyxcbiAgQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblJlc3BvbnNlLFxuICBHZXROZXR3b3JrQWxsb2NhdGlvbkJ5SWRQYXJhbXMsXG4gIEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlLFxuICBHZXROZXR3b3JrQWxsb2NhdGlvbnNQYXJhbXMsXG4gIEdldE5ldHdvcmtBbGxvY2F0aW9uc1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrQmFsYW5jZXNQYXJhbXMsXG4gIEdldE5ldHdvcmtCYWxhbmNlc1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrQ29ubmVjdGlvbkJ5SWRQYXJhbXMsXG4gIEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFJlc3BvbnNlLFxuICBHZXROZXR3b3JrQ29ubmVjdGlvbnNQYXJhbXMsXG4gIEdldE5ldHdvcmtDb25uZWN0aW9uc1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMsXG4gIEdldE5ldHdvcmtQYXJ0bmVyc1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRQYXJhbXMsXG4gIEdldE5ldHdvcmtTZXR0bGVtZW50QnlJZFJlc3BvbnNlLFxuICBHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1BhcmFtcyxcbiAgR2V0TmV0d29ya1NldHRsZW1lbnRUcmFuc2ZlcnNSZXNwb25zZSxcbiAgR2V0TmV0d29ya1NldHRsZW1lbnRzUGFyYW1zLFxuICBHZXROZXR3b3JrU2V0dGxlbWVudHNSZXNwb25zZSxcbiAgR2V0TmV0d29ya1N1cHBvcnRlZEN1cnJlbmNpZXNQYXJhbXMsXG4gIEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUmVzcG9uc2UsXG4gIElUcmFkaW5nTmV0d29yayxcbiAgUHJlcGFyZU5ldHdvcmtBbGxvY2F0aW9uUGFyYW1zLFxuICBVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblBhcmFtcyxcbiAgVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25SZXNwb25zZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFkaW5nTmV0d29yayBpbXBsZW1lbnRzIElUcmFkaW5nTmV0d29yayB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRlcnByaXNlSWQ6IHN0cmluZztcblxuICBwdWJsaWMgd2FsbGV0OiBJV2FsbGV0O1xuXG4gIGNvbnN0cnVjdG9yKGVudGVycHJpc2VJZDogc3RyaW5nLCB3YWxsZXQ6IElXYWxsZXQsIGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICB0aGlzLmVudGVycHJpc2VJZCA9IGVudGVycHJpc2VJZDtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gIH1cblxuICBnZXRCYWxhbmNlcyhwYXJhbXM/OiBHZXROZXR3b3JrQmFsYW5jZXNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtCYWxhbmNlc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9iYWxhbmNlc2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRQYXJ0bmVycyhwYXJhbXM/OiBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtQYXJ0bmVyc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vcGFydG5lcnNgKTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5nZXQodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG5cbiAgZ2V0U3VwcG9ydGVkQ3VycmVuY2llcyhwYXJhbXM6IEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUGFyYW1zKTogUHJvbWlzZTxHZXROZXR3b3JrU3VwcG9ydGVkQ3VycmVuY2llc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vc3VwcG9ydGVkQ3VycmVuY2llc2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRDb25uZWN0aW9ucyhwYXJhbXM/OiBHZXROZXR3b3JrQ29ubmVjdGlvbnNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtDb25uZWN0aW9uc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9jb25uZWN0aW9uc2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRDb25uZWN0aW9uQnlJZCh7XG4gICAgY29ubmVjdGlvbklkLFxuICAgIC4uLnBhcmFtc1xuICB9OiBHZXROZXR3b3JrQ29ubmVjdGlvbkJ5SWRQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbklkfWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBjcmVhdGVDb25uZWN0aW9uKHBhcmFtczogQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25QYXJhbXMpOiBQcm9taXNlPENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zYCk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28ucG9zdCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0aW9uKHtcbiAgICBjb25uZWN0aW9uSWQsXG4gICAgLi4ucGFyYW1zXG4gIH06IFVwZGF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zKTogUHJvbWlzZTxVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbklkfWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnB1dCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRBbGxvY2F0aW9ucyhwYXJhbXM/OiBHZXROZXR3b3JrQWxsb2NhdGlvbnNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtBbGxvY2F0aW9uc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9hbGxvY2F0aW9uc2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRBbGxvY2F0aW9uQnlJZCh7XG4gICAgYWxsb2NhdGlvbklkLFxuICAgIC4uLnBhcmFtc1xuICB9OiBHZXROZXR3b3JrQWxsb2NhdGlvbkJ5SWRQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2FsbG9jYXRpb25zLyR7YWxsb2NhdGlvbklkfWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBhbiBhbGxvY2F0aW9uIGZvciBzdWJtaXNzaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB3YWxsZXRQYXNzcGhyYXNlIG9mYyB3YWxsZXQgcGFzc3BocmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29ubmVjdGlvbklkIGNvbm5lY3Rpb24gdG8gd2hvbSB0byBtYWtlIHRoZSBhbGxvY2F0aW9uIG9yIGRlYWxsb2NhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZz19IGNsaWVudEV4dGVybmFsSWQgb25lIHRpbWUgZ2VuZXJhdGVkIHV1aWQgdjRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbmN5IGN1cnJlbmN5IGZvciB3aGljaCB0aGUgYWxsb2NhdGlvbiBzaG91bGQgYmUgbWFkZS4gZS5nLiBidGMgLyB0YnRjXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBxdWFudGl0eSBiYXNlIGFtb3VudC4gZS5nLiAxMDAwMDAwMCAoMSBCVEMpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBub3RlcyBQcml2YXRlIG5vdGUgdGhhdCB5b3UgY2FuIHZpZXcgYW5kIGVkaXRcbiAgICogQHBhcmFtIHtzdHJpbmc9fSBub25jZSBvbmUgdGltZSBnZW5lcmF0ZWQgc3RyaW5nIC5lLmcuIGNyeXB0by5yYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2hleCcpXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBwcmVwYXJlQWxsb2NhdGlvbih7XG4gICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAuLi5ib2R5XG4gIH06IFByZXBhcmVOZXR3b3JrQWxsb2NhdGlvblBhcmFtcyk6IFByb21pc2U8Q3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXM+IHtcbiAgICBpZiAoIWJvZHkuY2xpZW50RXh0ZXJuYWxJZCkge1xuICAgICAgYm9keS5jbGllbnRFeHRlcm5hbElkID0gdXVpZFY0KCk7XG4gICAgfVxuICAgIGlmICghYm9keS5ub25jZSkge1xuICAgICAgYm9keS5ub25jZSA9IGNyeXB0by5yYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcblxuICAgIGNvbnN0IHBydiA9IGF3YWl0IHRoaXMud2FsbGV0LmdldFBydih7IHdhbGxldFBhc3NwaHJhc2UgfSk7XG4gICAgY29uc3Qgc2lnbmVkQnVmZmVyOiBCdWZmZXIgPSBhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi5zaWduTWVzc2FnZSh7IHBydiB9LCBwYXlsb2FkKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduZWRCdWZmZXIudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJvZHksXG4gICAgICBwYXlsb2FkLFxuICAgICAgc2lnbmF0dXJlLFxuICAgIH07XG4gIH1cblxuICBjcmVhdGVBbGxvY2F0aW9uKHtcbiAgICBjb25uZWN0aW9uSWQsXG4gICAgLi4ucGFyYW1zXG4gIH06IENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUGFyYW1zKTogUHJvbWlzZTxDcmVhdGVOZXR3b3JrQWxsb2NhdGlvblJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbklkfS9hbGxvY2F0aW9uc2BcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnBvc3QodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG5cbiAgY3JlYXRlRGVhbGxvY2F0aW9uKHtcbiAgICBjb25uZWN0aW9uSWQsXG4gICAgLi4ucGFyYW1zXG4gIH06IENyZWF0ZU5ldHdvcmtEZWFsbG9jYXRpb25QYXJhbXMpOiBQcm9taXNlPENyZWF0ZU5ldHdvcmtEZWFsbG9jYXRpb25SZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChcbiAgICAgIGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9jb25uZWN0aW9ucy8ke2Nvbm5lY3Rpb25JZH0vZGVhbGxvY2F0aW9uc2BcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnBvc3QodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG5cbiAgZ2V0U2V0dGxlbWVudHMocGFyYW1zPzogR2V0TmV0d29ya1NldHRsZW1lbnRzUGFyYW1zKTogUHJvbWlzZTxHZXROZXR3b3JrU2V0dGxlbWVudHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvc2V0dGxlbWVudHNgKTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5nZXQodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG5cbiAgZ2V0U2V0dGxlbWVudEJ5SWQoe1xuICAgIHNldHRsZW1lbnRJZCxcbiAgICAuLi5wYXJhbXNcbiAgfTogR2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUGFyYW1zKTogUHJvbWlzZTxHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChcbiAgICAgIGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9zZXR0bGVtZW50cy8ke3NldHRsZW1lbnRJZH1gXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5nZXQodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG5cbiAgZ2V0U2V0dGxlbWVudFRyYW5zZmVycyhwYXJhbXM/OiBHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1BhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya1NldHRsZW1lbnRUcmFuc2ZlcnNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChcbiAgICAgIGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9zZXR0bGVtZW50VHJhbnNmZXJzYFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxufVxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL25ldHdvcmsvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBb0M7QUFDcEMsb0RBQTRCO0FBb0M1QixNQUFhLGNBQWM7SUFNekIsWUFBWSxZQUFvQixFQUFFLE1BQWUsRUFBRSxLQUFnQjtRQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWlDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLElBQUksQ0FBQyxZQUFZLG1CQUFtQixDQUFDLENBQUM7UUFDN0csT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFpQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLCtCQUErQixJQUFJLENBQUMsWUFBWSxXQUFXLENBQUMsQ0FBQztRQUNyRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBMkM7UUFDaEUs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SUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBNEM7UUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDckMsK0JBQStCLElBQUksQ0FBQyxZQUFZLDhCQUE4QixDQUMvRSxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztDQUNGO0FBakpELHdDQWlKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi8uLi93YWxsZXQnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMsXG4gIENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zLFxuICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblJlc3BvbnNlLFxuICBDcmVhdGVOZXR3b3JrRGVhbGxvY2F0aW9uUGFyYW1zLFxuICBDcmVhdGVOZXR3b3JrRGVhbGxvY2F0aW9uUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFBhcmFtcyxcbiAgR2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtBbGxvY2F0aW9uc1BhcmFtcyxcbiAgR2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtCYWxhbmNlc1BhcmFtcyxcbiAgR2V0TmV0d29ya0JhbGFuY2VzUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFBhcmFtcyxcbiAgR2V0TmV0d29ya0Nvbm5lY3Rpb25CeUlkUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtDb25uZWN0aW9uc1BhcmFtcyxcbiAgR2V0TmV0d29ya0Nvbm5lY3Rpb25zUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtQYXJ0bmVyc1BhcmFtcyxcbiAgR2V0TmV0d29ya1BhcnRuZXJzUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtTZXR0bGVtZW50QnlJZFBhcmFtcyxcbiAgR2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUmVzcG9uc2UsXG4gIEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUGFyYW1zLFxuICBHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrU2V0dGxlbWVudHNQYXJhbXMsXG4gIEdldE5ldHdvcmtTZXR0bGVtZW50c1Jlc3BvbnNlLFxuICBHZXROZXR3b3JrU3VwcG9ydGVkQ3VycmVuY2llc1BhcmFtcyxcbiAgR2V0TmV0d29ya1N1cHBvcnRlZEN1cnJlbmNpZXNSZXNwb25zZSxcbiAgSVRyYWRpbmdOZXR3b3JrLFxuICBQcmVwYXJlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMsXG4gIFVwZGF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zLFxuICBVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblJlc3BvbnNlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFRyYWRpbmdOZXR3b3JrIGltcGxlbWVudHMgSVRyYWRpbmdOZXR3b3JrIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGVycHJpc2VJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG5cbiAgY29uc3RydWN0b3IoZW50ZXJwcmlzZUlkOiBzdHJpbmcsIHdhbGxldDogSVdhbGxldCwgYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHRoaXMuZW50ZXJwcmlzZUlkID0gZW50ZXJwcmlzZUlkO1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgfVxuXG4gIGdldEJhbGFuY2VzKHBhcmFtcz86IEdldE5ldHdvcmtCYWxhbmNlc1BhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya0JhbGFuY2VzUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2JhbGFuY2VzYCk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGdldFBhcnRuZXJzKHBhcmFtcz86IEdldE5ldHdvcmtQYXJ0bmVyc1BhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya1BhcnRuZXJzUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9wYXJ0bmVyc2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRTdXBwb3J0ZWRDdXJyZW5jaWVzKHBhcmFtczogR2V0TmV0d29ya1N1cHBvcnRlZEN1cnJlbmNpZXNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9zdXBwb3J0ZWRDdXJyZW5jaWVzYCk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb25zKHBhcmFtcz86IEdldE5ldHdvcmtDb25uZWN0aW9uc1BhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya0Nvbm5lY3Rpb25zUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zYCk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb25CeUlkKHtcbiAgICBjb25uZWN0aW9uSWQsXG4gICAgLi4ucGFyYW1zXG4gIH06IEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFBhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya0Nvbm5lY3Rpb25CeUlkUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvY29ubmVjdGlvbnMvJHtjb25uZWN0aW9uSWR9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGNyZWF0ZUNvbm5lY3Rpb24ocGFyYW1zOiBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblBhcmFtcyk6IFByb21pc2U8Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25SZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvY29ubmVjdGlvbnNgKTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5wb3N0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbm5lY3Rpb24oe1xuICAgIGNvbm5lY3Rpb25JZCxcbiAgICAuLi5wYXJhbXNcbiAgfTogVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25QYXJhbXMpOiBQcm9taXNlPFVwZGF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvY29ubmVjdGlvbnMvJHtjb25uZWN0aW9uSWR9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28ucHV0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGdldEFsbG9jYXRpb25zKHBhcmFtcz86IEdldE5ldHdvcmtBbGxvY2F0aW9uc1BhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2FsbG9jYXRpb25zYCk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIGdldEFsbG9jYXRpb25CeUlkKHtcbiAgICBhbGxvY2F0aW9uSWQsXG4gICAgLi4ucGFyYW1zXG4gIH06IEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFBhcmFtcyk6IFByb21pc2U8R2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvYWxsb2NhdGlvbnMvJHthbGxvY2F0aW9uSWR9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHVybCkuc2V0KCdlbnRlcnByaXNlLWlkJywgdGhpcy5lbnRlcnByaXNlSWQpLnNlbmQocGFyYW1zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIGFuIGFsbG9jYXRpb24gZm9yIHN1Ym1pc3Npb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHdhbGxldFBhc3NwaHJhc2Ugb2ZjIHdhbGxldCBwYXNzcGhyYXNlIC0gcmVxdWlyZWQgb25seSB3aGVuIHNpZ25pbmcgdmlhIHVzZXIga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25uZWN0aW9uSWQgY29ubmVjdGlvbiB0byB3aG9tIHRvIG1ha2UgdGhlIGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nPX0gY2xpZW50RXh0ZXJuYWxJZCBvbmUgdGltZSBnZW5lcmF0ZWQgdXVpZCB2NFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VycmVuY3kgY3VycmVuY3kgZm9yIHdoaWNoIHRoZSBhbGxvY2F0aW9uIHNob3VsZCBiZSBtYWRlLiBlLmcuIGJ0YyAvIHRidGNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHF1YW50aXR5IGJhc2UgYW1vdW50LiBlLmcuIDEwMDAwMDAwICgxIEJUQylcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vdGVzIFByaXZhdGUgbm90ZSB0aGF0IHlvdSBjYW4gdmlldyBhbmQgZWRpdFxuICAgKiBAcGFyYW0ge3N0cmluZz19IG5vbmNlIG9uZSB0aW1lIGdlbmVyYXRlZCBzdHJpbmcgLmUuZy4gY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKS50b1N0cmluZygnaGV4JylcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIHByZXBhcmVBbGxvY2F0aW9uKHtcbiAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgIC4uLmJvZHlcbiAgfTogUHJlcGFyZU5ldHdvcmtBbGxvY2F0aW9uUGFyYW1zKTogUHJvbWlzZTxDcmVhdGVOZXR3b3JrQWxsb2NhdGlvblBhcmFtcz4ge1xuICAgIGlmICghYm9keS5jbGllbnRFeHRlcm5hbElkKSB7XG4gICAgICBib2R5LmNsaWVudEV4dGVybmFsSWQgPSB1dWlkVjQoKTtcbiAgICB9XG4gICAgaWYgKCFib2R5Lm5vbmNlKSB7XG4gICAgICBib2R5Lm5vbmNlID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHRoaXMud2FsbGV0LnRvVHJhZGluZ0FjY291bnQoKS5zaWduUGF5bG9hZCh7IHBheWxvYWQsIHdhbGxldFBhc3NwaHJhc2UgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYm9keSxcbiAgICAgIHBheWxvYWQsXG4gICAgICBzaWduYXR1cmUsXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUFsbG9jYXRpb24oe1xuICAgIGNvbm5lY3Rpb25JZCxcbiAgICAuLi5wYXJhbXNcbiAgfTogQ3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMpOiBQcm9taXNlPENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS9uZXR3b3JrL3YxL2VudGVycHJpc2VzLyR7dGhpcy5lbnRlcnByaXNlSWR9L2NsaWVudHMvY29ubmVjdGlvbnMvJHtjb25uZWN0aW9uSWR9L2FsbG9jYXRpb25zYFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28ucG9zdCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBjcmVhdGVEZWFsbG9jYXRpb24oe1xuICAgIGNvbm5lY3Rpb25JZCxcbiAgICAuLi5wYXJhbXNcbiAgfTogQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblBhcmFtcyk6IFByb21pc2U8Q3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL2Nvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbklkfS9kZWFsbG9jYXRpb25zYFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28ucG9zdCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRTZXR0bGVtZW50cyhwYXJhbXM/OiBHZXROZXR3b3JrU2V0dGxlbWVudHNQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtTZXR0bGVtZW50c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL25ldHdvcmsvdjEvZW50ZXJwcmlzZXMvJHt0aGlzLmVudGVycHJpc2VJZH0vY2xpZW50cy9zZXR0bGVtZW50c2ApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRTZXR0bGVtZW50QnlJZCh7XG4gICAgc2V0dGxlbWVudElkLFxuICAgIC4uLnBhcmFtc1xuICB9OiBHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRQYXJhbXMpOiBQcm9taXNlPEdldE5ldHdvcmtTZXR0bGVtZW50QnlJZFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL3NldHRsZW1lbnRzLyR7c2V0dGxlbWVudElkfWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh1cmwpLnNldCgnZW50ZXJwcmlzZS1pZCcsIHRoaXMuZW50ZXJwcmlzZUlkKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICBnZXRTZXR0bGVtZW50VHJhbnNmZXJzKHBhcmFtcz86IEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUGFyYW1zKTogUHJvbWlzZTxHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKFxuICAgICAgYC9hcGkvbmV0d29yay92MS9lbnRlcnByaXNlcy8ke3RoaXMuZW50ZXJwcmlzZUlkfS9jbGllbnRzL3NldHRsZW1lbnRUcmFuc2ZlcnNgXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5nZXQodXJsKS5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLmVudGVycHJpc2VJZCkuc2VuZChwYXJhbXMpLnJlc3VsdCgpO1xuICB9XG59XG4iXX0=
@@ -96,7 +96,7 @@ export type GetNetworkAllocationByIdResponse = {
96
96
  allocation: NetworkAllocation;
97
97
  };
98
98
  export type PrepareNetworkAllocationParams = Omit<CreateNetworkAllocationParams, 'payload' | 'signature'> & {
99
- walletPassphrase: string;
99
+ walletPassphrase?: string;
100
100
  clientExternalId?: string;
101
101
  nonce?: string;
102
102
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy9uZXR3b3JrL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElUcmFkaW5nTmV0d29yayB7XG4gIGdldEJhbGFuY2VzOiAocGFyYW1zPzogR2V0TmV0d29ya0JhbGFuY2VzUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtCYWxhbmNlc1Jlc3BvbnNlPjtcbiAgZ2V0UGFydG5lcnM6IChwYXJhbXM/OiBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya1BhcnRuZXJzUmVzcG9uc2U+O1xuICBnZXRTdXBwb3J0ZWRDdXJyZW5jaWVzOiAoXG4gICAgcGFyYW1zOiBHZXROZXR3b3JrU3VwcG9ydGVkQ3VycmVuY2llc1BhcmFtc1xuICApID0+IFByb21pc2U8R2V0TmV0d29ya1N1cHBvcnRlZEN1cnJlbmNpZXNSZXNwb25zZT47XG4gIGdldENvbm5lY3Rpb25zOiAocGFyYW1zPzogR2V0TmV0d29ya0Nvbm5lY3Rpb25zUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtDb25uZWN0aW9uc1Jlc3BvbnNlPjtcbiAgZ2V0Q29ubmVjdGlvbkJ5SWQ6IChwYXJhbXM6IEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFBhcmFtcykgPT4gUHJvbWlzZTxHZXROZXR3b3JrQ29ubmVjdGlvbkJ5SWRSZXNwb25zZT47XG4gIGNyZWF0ZUNvbm5lY3Rpb246IChwYXJhbXM6IENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zKSA9PiBQcm9taXNlPENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2U+O1xuICB1cGRhdGVDb25uZWN0aW9uOiAocGFyYW1zOiBVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblBhcmFtcykgPT4gUHJvbWlzZTxVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblJlc3BvbnNlPjtcbiAgZ2V0QWxsb2NhdGlvbnM6IChwYXJhbXM/OiBHZXROZXR3b3JrQWxsb2NhdGlvbnNQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2U+O1xuICBnZXRBbGxvY2F0aW9uQnlJZDogKHBhcmFtczogR2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlPjtcbiAgY3JlYXRlQWxsb2NhdGlvbjogKHBhcmFtczogQ3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMpID0+IFByb21pc2U8Q3JlYXRlTmV0d29ya0FsbG9jYXRpb25SZXNwb25zZT47XG4gIGNyZWF0ZURlYWxsb2NhdGlvbjogKHBhcmFtczogQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblBhcmFtcykgPT4gUHJvbWlzZTxDcmVhdGVOZXR3b3JrRGVhbGxvY2F0aW9uUmVzcG9uc2U+O1xuICBnZXRTZXR0bGVtZW50czogKHBhcmFtcz86IEdldE5ldHdvcmtTZXR0bGVtZW50c1BhcmFtcykgPT4gUHJvbWlzZTxHZXROZXR3b3JrU2V0dGxlbWVudHNSZXNwb25zZT47XG4gIGdldFNldHRsZW1lbnRCeUlkOiAocGFyYW1zOiBHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUmVzcG9uc2U+O1xuICBnZXRTZXR0bGVtZW50VHJhbnNmZXJzOiAoXG4gICAgcGFyYW1zPzogR2V0TmV0d29ya1NldHRsZW1lbnRUcmFuc2ZlcnNQYXJhbXNcbiAgKSA9PiBQcm9taXNlPEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUmVzcG9uc2U+O1xufVxuXG4vLyBNRVRIT0QgVFlQRVNcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0JhbGFuY2VzUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0JhbGFuY2VzUmVzcG9uc2UgPSB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIC8vIG9mYyBjb2luXG4gIGJhbGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBOZXR3b3JrQWNjb3VudEJhbGFuY2VSZWNvcmQ+O1xuICAvLyBjb25uZWN0aW9uSWRcbiAgbmV0d29ya0JhbGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBOZXR3b3JrQmFsYW5jZT47XG59O1xuXG5leHBvcnQgdHlwZSBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMgPSBOZXR3b3JrUGFnaW5hdGlvblBhcmFtcyAmIHtcbiAgaWRzPzogc3RyaW5nW107XG4gIG5hbWVzPzogc3RyaW5nW107XG4gIGluc3RpdHV0aW9uSWRzPzogc3RyaW5nW107XG4gIGluc3RpdHV0aW9uSWRlbnRpZmllcnM/OiBzdHJpbmdbXTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtQYXJ0bmVyc1Jlc3BvbnNlID0ge1xuICBwYXJ0bmVyczogTmV0d29ya1BhcnRuZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUGFyYW1zID0ge1xuICBwYXJ0bmVySWRzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUmVzcG9uc2UgPSB7XG4gIHN1cHBvcnRlZEN1cnJlbmNpZXM6IFJlY29yZDxzdHJpbmcsIFYxU3VwcG9ydGVkQ3VycmVuY3lbXT47XG4gIGRvbWFpbjogc3RyaW5nO1xufTtcblxuLyoqIENvbm5lY3Rpb25zICovXG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtDb25uZWN0aW9uc1BhcmFtcyA9IE5ldHdvcmtQYWdpbmF0aW9uUGFyYW1zICYge1xuICBhY3RpdmU/OiBzdHJpbmc7XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmc7XG4gIHBhcnRuZXJJZHM/OiBzdHJpbmc7XG4gIG5hbWVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0Nvbm5lY3Rpb25zUmVzcG9uc2UgPSB7XG4gIGNvbm5lY3Rpb25zOiBOZXR3b3JrQ29ubmVjdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0Nvbm5lY3Rpb25CeUlkUGFyYW1zID0ge1xuICBjb25uZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFJlc3BvbnNlID0ge1xuICBjb25uZWN0aW9uOiBOZXR3b3JrQ29ubmVjdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zID0ge1xuICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjb25uZWN0aW9uS2V5OiBOZXR3b3JrQ29ubmVjdGlvbktleTtcbiAgbm9uY2U6IHN0cmluZztcbiAgcGF5bG9hZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2UgPSB7XG4gIGNvbm5lY3Rpb246IE5ldHdvcmtDb25uZWN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25QYXJhbXMgPSB7XG4gIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25SZXNwb25zZSA9IHtcbiAgY29ubmVjdGlvbjogTmV0d29ya0Nvbm5lY3Rpb247XG59O1xuXG4vKiogQWxsb2NhdGlvbnMgKi9cblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25zUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIHNvcnRGaWVsZD86ICdpZCcgfCAndXBkYXRlZEF0JyB8ICdxdWFudGl0eScgfCAnY3VycmVuY3knO1xuICBzb3J0RGlyZWN0aW9uPzogTmV0d29ya1NvcnREaXJlY3Rpb247XG4gIGFsbG9jYXRpb25JZHM/OiBzdHJpbmdbXTtcbiAgdHlwZXM/OiBOZXR3b3JrQWxsb2NhdGlvblR5cGVbXTtcbiAgc3RhdHVzZXM/OiBOZXR3b3JrQWxsb2NhdGlvblN0YXR1c1tdO1xuICBjdXJyZW5jaWVzPzogc3RyaW5nW107XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2UgPSB7XG4gIGFsbG9jYXRpb25zOiBOZXR3b3JrQWxsb2NhdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUGFyYW1zID0ge1xuICBhbGxvY2F0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlID0ge1xuICBhbGxvY2F0aW9uOiBOZXR3b3JrQWxsb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVOZXR3b3JrQWxsb2NhdGlvblBhcmFtcyA9IE9taXQ8Q3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMsICdwYXlsb2FkJyB8ICdzaWduYXR1cmUnPiAmIHtcbiAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICBjbGllbnRFeHRlcm5hbElkPzogc3RyaW5nO1xuICBub25jZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUGFyYW1zID0ge1xuICBjb25uZWN0aW9uSWQ6IHN0cmluZztcbiAgcGF5bG9hZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAgYW1vdW50OiBOZXR3b3JrQWxsb2NhdGlvbkFtb3VudDtcbiAgY2xpZW50RXh0ZXJuYWxJZDogc3RyaW5nO1xuICBub25jZTogc3RyaW5nO1xuICBub3Rlcz86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtBbGxvY2F0aW9uUmVzcG9uc2UgPSB7XG4gIGFsbG9jYXRpb246IE5ldHdvcmtBbGxvY2F0aW9uO1xufTtcblxuLyoqIERlYWxsb2NhdGlvbnMgKi9cblxuZXhwb3J0IHR5cGUgQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblBhcmFtcyA9IHtcbiAgY29ubmVjdGlvbklkOiBzdHJpbmc7XG4gIHBheWxvYWQ6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGFtb3VudDogTmV0d29ya0FsbG9jYXRpb25BbW91bnQ7XG4gIGNsaWVudEV4dGVybmFsSWQ6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVOZXR3b3JrRGVhbGxvY2F0aW9uUmVzcG9uc2UgPSB7XG4gIGFsbG9jYXRpb246IE5ldHdvcmtBbGxvY2F0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya1NldHRsZW1lbnRzUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIHNldHRsZW1lbnRJZHM/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xuICBwYXJ0eUNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbiAgY291bnRlcnBhcnR5Q29ubmVjdGlvbklkcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya1NldHRsZW1lbnRzUmVzcG9uc2UgPSB7XG4gIHNldHRsZW1lbnRzOiBOZXR3b3JrU2V0dGxlbWVudFtdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIHNldHRsZW1lbnRJZDogc3RyaW5nO1xuICBjdXJyZW5jaWVzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRSZXNwb25zZSA9IHtcbiAgc2V0dGxlbWVudDogTmV0d29ya1NldHRsZW1lbnQ7XG4gIHNldHRsZW1lbnRUcmFuc2ZlcnM6IE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIGN1cnJlbmNpZXM/OiBzdHJpbmdbXTtcbiAgaW5pdGlhdGVkQnk/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xuICBzZXR0bGVtZW50SWRzPzogc3RyaW5nW107XG4gIHNldHRsZW1lbnRTdGF0dXNlcz86IE5ldHdvcmtTZXR0bGVtZW50U3RhdHVzW107XG4gIHNldHRsZW1lbnRVcGRhdGVkQmVmb3JlPzogc3RyaW5nO1xuICBzZXR0bGVtZW50VXBkYXRlZE9uT3JBZnRlcj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUmVzcG9uc2UgPSB7XG4gIHNldHRsZW1lbnRUcmFuc2ZlcnM6IE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJbXTtcbn07XG5cbi8vIE1FVEhPRCBBUlRJRkFDVFNcblxudHlwZSBOZXR3b3JrUGFnaW5hdGlvblBhcmFtcyA9IHtcbiAgcGFnZU51bWJlcj86IHN0cmluZyB8IG51bWJlcjtcbiAgcGFnZVNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG59O1xuXG50eXBlIE5ldHdvcmtTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtBY2NvdW50QmFsYW5jZVJlY29yZCA9IHtcbiAgYXZhaWxhYmxlOiBzdHJpbmc7XG4gIGhlbGQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtCYWxhbmNlID0ge1xuICBiYWxhbmNlczogUmVjb3JkPHN0cmluZywgTmV0d29ya0FjY291bnRCYWxhbmNlUmVjb3JkPjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgcGFydG5lckluc3RpdHV0aW9uSWRlbnRpZmllcjogc3RyaW5nO1xuICBwYXJ0bmVyc0Nvbm5lY3Rpb25JZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVjFTdXBwb3J0ZWRDdXJyZW5jeSA9IHtcbiAgb2ZjQ3VycmVuY3k6IHN0cmluZztcbiAgYmFja2luZ0N1cnJlbmN5OiBzdHJpbmc7XG4gIHBhcnRuZXJOYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbiA9IHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJ0bmVyc0Nvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBwYXJ0bmVyc0NsaWVudElkOiBzdHJpbmc7XG4gIHBhcnRuZXJJZDogc3RyaW5nO1xuICBuZXR3b3JrQWNjb3VudElkOiBzdHJpbmc7XG4gIHByb29mOiBzdHJpbmc7XG4gIG5vbmNlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtDb25uZWN0aW9uS2V5ID1cbiAgfCBOZXR3b3JrQ29ubmVjdGlvbktleVRva2VuXG4gIHwgTmV0d29ya0Nvbm5lY3Rpb25LZXlUb2tlbkFuZFNpZ25hdHVyZVxuICB8IE5ldHdvcmtDb25uZWN0aW9uS2V5QXBpS2V5QW5kU2VjcmV0XG4gIHwgTmV0d29ya0Nvbm5lY3Rpb25LZXlDbGVhcmxvb3A7XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtDb25uZWN0aW9uS2V5VG9rZW4gPSB7XG4gIHNjaGVtYTogJ3Rva2VuJztcbiAgY29ubmVjdGlvblRva2VuOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbktleVRva2VuQW5kU2lnbmF0dXJlID0ge1xuICBzY2hlbWE6ICd0b2tlbkFuZFNpZ25hdHVyZSc7XG4gIGNvbm5lY3Rpb25Ub2tlbjogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtDb25uZWN0aW9uS2V5QXBpS2V5QW5kU2VjcmV0ID0ge1xuICBzY2hlbWE6ICdhcGlLZXlBbmRTZWNyZXQnO1xuICBhcGlLZXk6IHN0cmluZztcbiAgYXBpU2VjcmV0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbktleUNsZWFybG9vcCA9IE9taXQ8TmV0d29ya0Nvbm5lY3Rpb25LZXlBcGlLZXlBbmRTZWNyZXQsICdzY2hlbWEnPiAmIHtcbiAgc2NoZW1hOiAnY2xlYXJsb29wJztcbiAgY2xpZW50QWNjb3VudElkOiBzdHJpbmc7XG4gIGNvbXBhbnlSZWdpc3RyYXRpb25OdW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtBbGxvY2F0aW9uVHlwZSA9ICdhbGxvY2F0aW9uJyB8ICdkZWFsbG9jYXRpb24nO1xuZXhwb3J0IHR5cGUgTmV0d29ya0FsbG9jYXRpb25TdGF0dXMgPSAnY2xlYXJlZCcgfCAncmVsZWFzZWQnIHwgJ3Jlc2VydmVkJztcblxuZXhwb3J0IHR5cGUgTmV0d29ya0FsbG9jYXRpb24gPSB7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBzdGF0dXM6IE5ldHdvcmtBbGxvY2F0aW9uU3RhdHVzO1xuICB0eXBlOiBOZXR3b3JrQWxsb2NhdGlvblR5cGU7XG4gIGlkOiBzdHJpbmc7XG4gIGFtb3VudDogTmV0d29ya0FsbG9jYXRpb25BbW91bnQ7XG4gIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBjbGllbnRFeHRlcm5hbElkOiBzdHJpbmc7XG4gIHBhcnRuZXJFeHRlcm5hbElkPzogc3RyaW5nO1xuICBpbml0aWF0ZWRCeTogc3RyaW5nO1xuICBub3Rlcz86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya0FsbG9jYXRpb25BbW91bnQgPSB7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHF1YW50aXR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya0RlYWxsb2NhdGlvbiA9IE5ldHdvcmtBbGxvY2F0aW9uO1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrU2V0dGxlbWVudCA9IHtcbiAgc3RhdHVzOiBOZXR3b3JrU2V0dGxlbWVudFN0YXR1cztcbiAgcmVhc29uPzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICByZWNvbmNpbGVkOiBib29sZWFuO1xuICBpbml0aWF0ZWRCeTogc3RyaW5nO1xuICBub3Rlcz86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya1NldHRsZW1lbnRUcmFuc2ZlciA9IHtcbiAgaWQ6IHN0cmluZztcbiAgY3VycmVuY3k6IHN0cmluZztcbiAgc2V0dGxlbWVudElkOiBzdHJpbmc7XG4gIHF1YW50aXR5OiBzdHJpbmc7XG4gIHR4SWRzOiBzdHJpbmdbXTtcbiAgc2V0dGxlbWVudFN0YXR1czogTmV0d29ya1NldHRsZW1lbnRTdGF0dXM7XG4gIHNldHRsZW1lbnROb3Rlcz86IHN0cmluZztcbiAgc291cmNlVHJhZGluZ0FjY291bnRJZD86IHN0cmluZztcbiAgc291cmNlQ2xpZW50TmFtZT86IHN0cmluZztcbiAgZGVzdGluYXRpb25UcmFkaW5nQWNjb3VudElkPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbkNsaWVudE5hbWU/OiBzdHJpbmc7XG4gIHNvdXJjZU5ldHdvcmtBY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHNvdXJjZUNvbm5lY3Rpb25OYW1lPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbk5ldHdvcmtBY2NvdW50SWQ/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uQ29ubmVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtTZXR0bGVtZW50U3RhdHVzID0gJ2ZhaWxlZCcgfCAnY29tcGxldGVkJyB8ICdwZW5kaW5nJztcblxuZXhwb3J0IHR5cGUgQ29ubmVjdGlvbktleVNjaGVtYSA9ICd0b2tlbicgfCAndG9rZW5BbmRTaWduYXR1cmUnIHwgJ2FwaUtleUFuZFNlY3JldCcgfCAnY2xlYXJsb29wJztcblxuZXhwb3J0IHR5cGUgTmV0d29ya1BhcnRuZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgaW5zdGl0dXRpb25JZDogc3RyaW5nO1xuICBpbnN0aXR1dGlvbklkZW50aWZpZXI6IHN0cmluZztcbiAgY29ubmVjdGlvbktleVNjaGVtYTogQ29ubmVjdGlvbktleVNjaGVtYTtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBwdWJsaWNLZXk/OiBzdHJpbmc7XG59O1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy9uZXR3b3JrL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElUcmFkaW5nTmV0d29yayB7XG4gIGdldEJhbGFuY2VzOiAocGFyYW1zPzogR2V0TmV0d29ya0JhbGFuY2VzUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtCYWxhbmNlc1Jlc3BvbnNlPjtcbiAgZ2V0UGFydG5lcnM6IChwYXJhbXM/OiBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya1BhcnRuZXJzUmVzcG9uc2U+O1xuICBnZXRTdXBwb3J0ZWRDdXJyZW5jaWVzOiAoXG4gICAgcGFyYW1zOiBHZXROZXR3b3JrU3VwcG9ydGVkQ3VycmVuY2llc1BhcmFtc1xuICApID0+IFByb21pc2U8R2V0TmV0d29ya1N1cHBvcnRlZEN1cnJlbmNpZXNSZXNwb25zZT47XG4gIGdldENvbm5lY3Rpb25zOiAocGFyYW1zPzogR2V0TmV0d29ya0Nvbm5lY3Rpb25zUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtDb25uZWN0aW9uc1Jlc3BvbnNlPjtcbiAgZ2V0Q29ubmVjdGlvbkJ5SWQ6IChwYXJhbXM6IEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFBhcmFtcykgPT4gUHJvbWlzZTxHZXROZXR3b3JrQ29ubmVjdGlvbkJ5SWRSZXNwb25zZT47XG4gIGNyZWF0ZUNvbm5lY3Rpb246IChwYXJhbXM6IENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zKSA9PiBQcm9taXNlPENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2U+O1xuICB1cGRhdGVDb25uZWN0aW9uOiAocGFyYW1zOiBVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblBhcmFtcykgPT4gUHJvbWlzZTxVcGRhdGVOZXR3b3JrQ29ubmVjdGlvblJlc3BvbnNlPjtcbiAgZ2V0QWxsb2NhdGlvbnM6IChwYXJhbXM/OiBHZXROZXR3b3JrQWxsb2NhdGlvbnNQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2U+O1xuICBnZXRBbGxvY2F0aW9uQnlJZDogKHBhcmFtczogR2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUGFyYW1zKSA9PiBQcm9taXNlPEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlPjtcbiAgY3JlYXRlQWxsb2NhdGlvbjogKHBhcmFtczogQ3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMpID0+IFByb21pc2U8Q3JlYXRlTmV0d29ya0FsbG9jYXRpb25SZXNwb25zZT47XG4gIGNyZWF0ZURlYWxsb2NhdGlvbjogKHBhcmFtczogQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblBhcmFtcykgPT4gUHJvbWlzZTxDcmVhdGVOZXR3b3JrRGVhbGxvY2F0aW9uUmVzcG9uc2U+O1xuICBnZXRTZXR0bGVtZW50czogKHBhcmFtcz86IEdldE5ldHdvcmtTZXR0bGVtZW50c1BhcmFtcykgPT4gUHJvbWlzZTxHZXROZXR3b3JrU2V0dGxlbWVudHNSZXNwb25zZT47XG4gIGdldFNldHRsZW1lbnRCeUlkOiAocGFyYW1zOiBHZXROZXR3b3JrU2V0dGxlbWVudEJ5SWRQYXJhbXMpID0+IFByb21pc2U8R2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUmVzcG9uc2U+O1xuICBnZXRTZXR0bGVtZW50VHJhbnNmZXJzOiAoXG4gICAgcGFyYW1zPzogR2V0TmV0d29ya1NldHRsZW1lbnRUcmFuc2ZlcnNQYXJhbXNcbiAgKSA9PiBQcm9taXNlPEdldE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXJzUmVzcG9uc2U+O1xufVxuXG4vLyBNRVRIT0QgVFlQRVNcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0JhbGFuY2VzUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0JhbGFuY2VzUmVzcG9uc2UgPSB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIC8vIG9mYyBjb2luXG4gIGJhbGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBOZXR3b3JrQWNjb3VudEJhbGFuY2VSZWNvcmQ+O1xuICAvLyBjb25uZWN0aW9uSWRcbiAgbmV0d29ya0JhbGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBOZXR3b3JrQmFsYW5jZT47XG59O1xuXG5leHBvcnQgdHlwZSBHZXROZXR3b3JrUGFydG5lcnNQYXJhbXMgPSBOZXR3b3JrUGFnaW5hdGlvblBhcmFtcyAmIHtcbiAgaWRzPzogc3RyaW5nW107XG4gIG5hbWVzPzogc3RyaW5nW107XG4gIGluc3RpdHV0aW9uSWRzPzogc3RyaW5nW107XG4gIGluc3RpdHV0aW9uSWRlbnRpZmllcnM/OiBzdHJpbmdbXTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtQYXJ0bmVyc1Jlc3BvbnNlID0ge1xuICBwYXJ0bmVyczogTmV0d29ya1BhcnRuZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUGFyYW1zID0ge1xuICBwYXJ0bmVySWRzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTdXBwb3J0ZWRDdXJyZW5jaWVzUmVzcG9uc2UgPSB7XG4gIHN1cHBvcnRlZEN1cnJlbmNpZXM6IFJlY29yZDxzdHJpbmcsIFYxU3VwcG9ydGVkQ3VycmVuY3lbXT47XG4gIGRvbWFpbjogc3RyaW5nO1xufTtcblxuLyoqIENvbm5lY3Rpb25zICovXG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtDb25uZWN0aW9uc1BhcmFtcyA9IE5ldHdvcmtQYWdpbmF0aW9uUGFyYW1zICYge1xuICBhY3RpdmU/OiBzdHJpbmc7XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmc7XG4gIHBhcnRuZXJJZHM/OiBzdHJpbmc7XG4gIG5hbWVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0Nvbm5lY3Rpb25zUmVzcG9uc2UgPSB7XG4gIGNvbm5lY3Rpb25zOiBOZXR3b3JrQ29ubmVjdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0Nvbm5lY3Rpb25CeUlkUGFyYW1zID0ge1xuICBjb25uZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtDb25uZWN0aW9uQnlJZFJlc3BvbnNlID0ge1xuICBjb25uZWN0aW9uOiBOZXR3b3JrQ29ubmVjdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUGFyYW1zID0ge1xuICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjb25uZWN0aW9uS2V5OiBOZXR3b3JrQ29ubmVjdGlvbktleTtcbiAgbm9uY2U6IHN0cmluZztcbiAgcGF5bG9hZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uUmVzcG9uc2UgPSB7XG4gIGNvbm5lY3Rpb246IE5ldHdvcmtDb25uZWN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25QYXJhbXMgPSB7XG4gIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlTmV0d29ya0Nvbm5lY3Rpb25SZXNwb25zZSA9IHtcbiAgY29ubmVjdGlvbjogTmV0d29ya0Nvbm5lY3Rpb247XG59O1xuXG4vKiogQWxsb2NhdGlvbnMgKi9cblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25zUGFyYW1zID0gTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgJiB7XG4gIHNvcnRGaWVsZD86ICdpZCcgfCAndXBkYXRlZEF0JyB8ICdxdWFudGl0eScgfCAnY3VycmVuY3knO1xuICBzb3J0RGlyZWN0aW9uPzogTmV0d29ya1NvcnREaXJlY3Rpb247XG4gIGFsbG9jYXRpb25JZHM/OiBzdHJpbmdbXTtcbiAgdHlwZXM/OiBOZXR3b3JrQWxsb2NhdGlvblR5cGVbXTtcbiAgc3RhdHVzZXM/OiBOZXR3b3JrQWxsb2NhdGlvblN0YXR1c1tdO1xuICBjdXJyZW5jaWVzPzogc3RyaW5nW107XG4gIGNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbiAgcGFydG5lcklkcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25zUmVzcG9uc2UgPSB7XG4gIGFsbG9jYXRpb25zOiBOZXR3b3JrQWxsb2NhdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya0FsbG9jYXRpb25CeUlkUGFyYW1zID0ge1xuICBhbGxvY2F0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtBbGxvY2F0aW9uQnlJZFJlc3BvbnNlID0ge1xuICBhbGxvY2F0aW9uOiBOZXR3b3JrQWxsb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVOZXR3b3JrQWxsb2NhdGlvblBhcmFtcyA9IE9taXQ8Q3JlYXRlTmV0d29ya0FsbG9jYXRpb25QYXJhbXMsICdwYXlsb2FkJyB8ICdzaWduYXR1cmUnPiAmIHtcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbiAgY2xpZW50RXh0ZXJuYWxJZD86IHN0cmluZztcbiAgbm9uY2U/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVOZXR3b3JrQWxsb2NhdGlvblBhcmFtcyA9IHtcbiAgY29ubmVjdGlvbklkOiBzdHJpbmc7XG4gIHBheWxvYWQ6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGFtb3VudDogTmV0d29ya0FsbG9jYXRpb25BbW91bnQ7XG4gIGNsaWVudEV4dGVybmFsSWQ6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVOZXR3b3JrQWxsb2NhdGlvblJlc3BvbnNlID0ge1xuICBhbGxvY2F0aW9uOiBOZXR3b3JrQWxsb2NhdGlvbjtcbn07XG5cbi8qKiBEZWFsbG9jYXRpb25zICovXG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ldHdvcmtEZWFsbG9jYXRpb25QYXJhbXMgPSB7XG4gIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBwYXlsb2FkOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xuICBhbW91bnQ6IE5ldHdvcmtBbGxvY2F0aW9uQW1vdW50O1xuICBjbGllbnRFeHRlcm5hbElkOiBzdHJpbmc7XG4gIG5vbmNlOiBzdHJpbmc7XG4gIG5vdGVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlTmV0d29ya0RlYWxsb2NhdGlvblJlc3BvbnNlID0ge1xuICBhbGxvY2F0aW9uOiBOZXR3b3JrQWxsb2NhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTZXR0bGVtZW50c1BhcmFtcyA9IE5ldHdvcmtQYWdpbmF0aW9uUGFyYW1zICYge1xuICBzZXR0bGVtZW50SWRzPzogc3RyaW5nW107XG4gIHBhcnRuZXJJZHM/OiBzdHJpbmdbXTtcbiAgcGFydHlDb25uZWN0aW9uSWRzPzogc3RyaW5nW107XG4gIGNvdW50ZXJwYXJ0eUNvbm5lY3Rpb25JZHM/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTZXR0bGVtZW50c1Jlc3BvbnNlID0ge1xuICBzZXR0bGVtZW50czogTmV0d29ya1NldHRsZW1lbnRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEdldE5ldHdvcmtTZXR0bGVtZW50QnlJZFBhcmFtcyA9IE5ldHdvcmtQYWdpbmF0aW9uUGFyYW1zICYge1xuICBzZXR0bGVtZW50SWQ6IHN0cmluZztcbiAgY3VycmVuY2llcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0TmV0d29ya1NldHRsZW1lbnRCeUlkUmVzcG9uc2UgPSB7XG4gIHNldHRsZW1lbnQ6IE5ldHdvcmtTZXR0bGVtZW50O1xuICBzZXR0bGVtZW50VHJhbnNmZXJzOiBOZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyW107XG59O1xuXG5leHBvcnQgdHlwZSBHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1BhcmFtcyA9IE5ldHdvcmtQYWdpbmF0aW9uUGFyYW1zICYge1xuICBjdXJyZW5jaWVzPzogc3RyaW5nW107XG4gIGluaXRpYXRlZEJ5Pzogc3RyaW5nW107XG4gIHBhcnRuZXJJZHM/OiBzdHJpbmdbXTtcbiAgc2V0dGxlbWVudElkcz86IHN0cmluZ1tdO1xuICBzZXR0bGVtZW50U3RhdHVzZXM/OiBOZXR3b3JrU2V0dGxlbWVudFN0YXR1c1tdO1xuICBzZXR0bGVtZW50VXBkYXRlZEJlZm9yZT86IHN0cmluZztcbiAgc2V0dGxlbWVudFVwZGF0ZWRPbk9yQWZ0ZXI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBHZXROZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyc1Jlc3BvbnNlID0ge1xuICBzZXR0bGVtZW50VHJhbnNmZXJzOiBOZXR3b3JrU2V0dGxlbWVudFRyYW5zZmVyW107XG59O1xuXG4vLyBNRVRIT0QgQVJUSUZBQ1RTXG5cbnR5cGUgTmV0d29ya1BhZ2luYXRpb25QYXJhbXMgPSB7XG4gIHBhZ2VOdW1iZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHBhZ2VTaXplPzogc3RyaW5nIHwgbnVtYmVyO1xufTtcblxudHlwZSBOZXR3b3JrU29ydERpcmVjdGlvbiA9ICdBU0MnIHwgJ0RFU0MnO1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQWNjb3VudEJhbGFuY2VSZWNvcmQgPSB7XG4gIGF2YWlsYWJsZTogc3RyaW5nO1xuICBoZWxkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQmFsYW5jZSA9IHtcbiAgYmFsYW5jZXM6IFJlY29yZDxzdHJpbmcsIE5ldHdvcmtBY2NvdW50QmFsYW5jZVJlY29yZD47XG4gIG5hbWU6IHN0cmluZztcbiAgcGFydG5lcklkOiBzdHJpbmc7XG4gIHBhcnRuZXJJbnN0aXR1dGlvbklkZW50aWZpZXI6IHN0cmluZztcbiAgcGFydG5lcnNDb25uZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFYxU3VwcG9ydGVkQ3VycmVuY3kgPSB7XG4gIG9mY0N1cnJlbmN5OiBzdHJpbmc7XG4gIGJhY2tpbmdDdXJyZW5jeTogc3RyaW5nO1xuICBwYXJ0bmVyTmFtZXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya0Nvbm5lY3Rpb24gPSB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgcGFydG5lcnNDb25uZWN0aW9uSWQ6IHN0cmluZztcbiAgcGFydG5lcnNDbGllbnRJZDogc3RyaW5nO1xuICBwYXJ0bmVySWQ6IHN0cmluZztcbiAgbmV0d29ya0FjY291bnRJZDogc3RyaW5nO1xuICBwcm9vZjogc3RyaW5nO1xuICBub25jZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbktleSA9XG4gIHwgTmV0d29ya0Nvbm5lY3Rpb25LZXlUb2tlblxuICB8IE5ldHdvcmtDb25uZWN0aW9uS2V5VG9rZW5BbmRTaWduYXR1cmVcbiAgfCBOZXR3b3JrQ29ubmVjdGlvbktleUFwaUtleUFuZFNlY3JldFxuICB8IE5ldHdvcmtDb25uZWN0aW9uS2V5Q2xlYXJsb29wO1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbktleVRva2VuID0ge1xuICBzY2hlbWE6ICd0b2tlbic7XG4gIGNvbm5lY3Rpb25Ub2tlbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya0Nvbm5lY3Rpb25LZXlUb2tlbkFuZFNpZ25hdHVyZSA9IHtcbiAgc2NoZW1hOiAndG9rZW5BbmRTaWduYXR1cmUnO1xuICBjb25uZWN0aW9uVG9rZW46IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29ubmVjdGlvbktleUFwaUtleUFuZFNlY3JldCA9IHtcbiAgc2NoZW1hOiAnYXBpS2V5QW5kU2VjcmV0JztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIGFwaVNlY3JldDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya0Nvbm5lY3Rpb25LZXlDbGVhcmxvb3AgPSBPbWl0PE5ldHdvcmtDb25uZWN0aW9uS2V5QXBpS2V5QW5kU2VjcmV0LCAnc2NoZW1hJz4gJiB7XG4gIHNjaGVtYTogJ2NsZWFybG9vcCc7XG4gIGNsaWVudEFjY291bnRJZDogc3RyaW5nO1xuICBjb21wYW55UmVnaXN0cmF0aW9uTnVtYmVyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQWxsb2NhdGlvblR5cGUgPSAnYWxsb2NhdGlvbicgfCAnZGVhbGxvY2F0aW9uJztcbmV4cG9ydCB0eXBlIE5ldHdvcmtBbGxvY2F0aW9uU3RhdHVzID0gJ2NsZWFyZWQnIHwgJ3JlbGVhc2VkJyB8ICdyZXNlcnZlZCc7XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtBbGxvY2F0aW9uID0ge1xuICByZWFzb246IHN0cmluZztcbiAgc3RhdHVzOiBOZXR3b3JrQWxsb2NhdGlvblN0YXR1cztcbiAgdHlwZTogTmV0d29ya0FsbG9jYXRpb25UeXBlO1xuICBpZDogc3RyaW5nO1xuICBhbW91bnQ6IE5ldHdvcmtBbGxvY2F0aW9uQW1vdW50O1xuICBjb25uZWN0aW9uSWQ6IHN0cmluZztcbiAgY2xpZW50RXh0ZXJuYWxJZDogc3RyaW5nO1xuICBwYXJ0bmVyRXh0ZXJuYWxJZD86IHN0cmluZztcbiAgaW5pdGlhdGVkQnk6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtBbGxvY2F0aW9uQW1vdW50ID0ge1xuICBjdXJyZW5jeTogc3RyaW5nO1xuICBxdWFudGl0eT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtEZWFsbG9jYXRpb24gPSBOZXR3b3JrQWxsb2NhdGlvbjtcblxuZXhwb3J0IHR5cGUgTmV0d29ya1NldHRsZW1lbnQgPSB7XG4gIHN0YXR1czogTmV0d29ya1NldHRsZW1lbnRTdGF0dXM7XG4gIHJlYXNvbj86IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgcGFydG5lcklkOiBzdHJpbmc7XG4gIGV4dGVybmFsSWQ6IHN0cmluZztcbiAgcmVjb25jaWxlZDogYm9vbGVhbjtcbiAgaW5pdGlhdGVkQnk6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtTZXR0bGVtZW50VHJhbnNmZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHNldHRsZW1lbnRJZDogc3RyaW5nO1xuICBxdWFudGl0eTogc3RyaW5nO1xuICB0eElkczogc3RyaW5nW107XG4gIHNldHRsZW1lbnRTdGF0dXM6IE5ldHdvcmtTZXR0bGVtZW50U3RhdHVzO1xuICBzZXR0bGVtZW50Tm90ZXM/OiBzdHJpbmc7XG4gIHNvdXJjZVRyYWRpbmdBY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHNvdXJjZUNsaWVudE5hbWU/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uVHJhZGluZ0FjY291bnRJZD86IHN0cmluZztcbiAgZGVzdGluYXRpb25DbGllbnROYW1lPzogc3RyaW5nO1xuICBzb3VyY2VOZXR3b3JrQWNjb3VudElkPzogc3RyaW5nO1xuICBzb3VyY2VDb25uZWN0aW9uTmFtZT86IHN0cmluZztcbiAgZGVzdGluYXRpb25OZXR3b3JrQWNjb3VudElkPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbkNvbm5lY3Rpb25OYW1lPzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrU2V0dGxlbWVudFN0YXR1cyA9ICdmYWlsZWQnIHwgJ2NvbXBsZXRlZCcgfCAncGVuZGluZyc7XG5cbmV4cG9ydCB0eXBlIENvbm5lY3Rpb25LZXlTY2hlbWEgPSAndG9rZW4nIHwgJ3Rva2VuQW5kU2lnbmF0dXJlJyB8ICdhcGlLZXlBbmRTZWNyZXQnIHwgJ2NsZWFybG9vcCc7XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtQYXJ0bmVyID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGluc3RpdHV0aW9uSWQ6IHN0cmluZztcbiAgaW5zdGl0dXRpb25JZGVudGlmaWVyOiBzdHJpbmc7XG4gIGNvbm5lY3Rpb25LZXlTY2hlbWE6IENvbm5lY3Rpb25LZXlTY2hlbWE7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xufTtcbiJdfQ==
@@ -12,13 +12,25 @@ export declare class TradingAccount implements ITradingAccount {
12
12
  constructor(enterpriseId: string, wallet: IWallet, bitgo: BitGoBase);
13
13
  get id(): string;
14
14
  /**
15
- * Signs an arbitrary payload with the user key on this trading account
15
+ * Signs an arbitrary payload. Use the user key if passphrase is provided, or the BitGo key if not.
16
16
  * @param params
17
17
  * @param params.payload arbitrary payload object (string | Record<string, unknown>)
18
18
  * @param params.walletPassphrase passphrase on this trading account, used to unlock the account user key
19
19
  * @returns hex-encoded signature of the payload
20
20
  */
21
21
  signPayload(params: SignPayloadParameters): Promise<string>;
22
+ /**
23
+ * Signs the payload of a trading account via the trading account BitGo key
24
+ * @param params
25
+ * @private
26
+ */
27
+ private signPayloadByBitGoKey;
28
+ /**
29
+ * Signs the payload of a trading account locally by fetching the user's encrypted private key and decrypt using passphrase
30
+ * @param params
31
+ * @private
32
+ */
33
+ private signPayloadByUserKey;
22
34
  /**
23
35
  * Get Trade Network
24
36
  * To enable Off Exchange Allocation & Settlement, contact support@bitgo.com.
@@ -1 +1 @@
1
- {"version":3,"file":"tradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/tradingAccount.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAE/B,MAAM,EAAE,OAAO,CAAC;gBAEX,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;IAMnE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;;;;;OAMG;IACG,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjE;;;;OAIG;IACH,SAAS,IAAI,cAAc;CAG5B"}
1
+ {"version":3,"file":"tradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/tradingAccount.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAE/B,MAAM,EAAE,OAAO,CAAC;gBAEX,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;IAMnE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;;;;;OAMG;IACG,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IASjE;;;;OAIG;YACW,qBAAqB;IAmBnC;;;;OAIG;YACW,oBAAoB;IAUlC;;;;OAIG;IACH,SAAS,IAAI,cAAc;CAG5B"}
@@ -12,13 +12,43 @@ class TradingAccount {
12
12
  return this.wallet.id();
13
13
  }
14
14
  /**
15
- * Signs an arbitrary payload with the user key on this trading account
15
+ * Signs an arbitrary payload. Use the user key if passphrase is provided, or the BitGo key if not.
16
16
  * @param params
17
17
  * @param params.payload arbitrary payload object (string | Record<string, unknown>)
18
18
  * @param params.walletPassphrase passphrase on this trading account, used to unlock the account user key
19
19
  * @returns hex-encoded signature of the payload
20
20
  */
21
21
  async signPayload(params) {
22
+ // if no passphrase is provided, attempt to sign using the wallet's bitgo key remotely
23
+ if (!params.walletPassphrase) {
24
+ return this.signPayloadByBitGoKey(params);
25
+ }
26
+ // if a passphrase is provided, we must be trying to sign using the user private key - decrypt and sign locally
27
+ return this.signPayloadByUserKey(params);
28
+ }
29
+ /**
30
+ * Signs the payload of a trading account via the trading account BitGo key
31
+ * @param params
32
+ * @private
33
+ */
34
+ async signPayloadByBitGoKey(params) {
35
+ const walletData = this.wallet.toJSON();
36
+ if (walletData.userKeySigningRequired) {
37
+ throw new Error('Wallet must use user key to sign ofc transaction, please provide the wallet passphrase or visit your wallet settings page to configure one.');
38
+ }
39
+ if (walletData.keys.length < 2) {
40
+ throw new Error('Wallet does not support BitGo signing. Please reach out to support@bitgo.com to resolve this issue.');
41
+ }
42
+ const url = this.wallet.url('/tx/sign');
43
+ const { signature } = await this.wallet.bitgo.post(url).send(params.payload).result();
44
+ return signature;
45
+ }
46
+ /**
47
+ * Signs the payload of a trading account locally by fetching the user's encrypted private key and decrypt using passphrase
48
+ * @param params
49
+ * @private
50
+ */
51
+ async signPayloadByUserKey(params) {
22
52
  const key = (await this.wallet.baseCoin.keychains().get({ id: this.wallet.keyIds()[0] }));
23
53
  const prv = this.wallet.bitgo.decrypt({
24
54
  input: key.encryptedPrv,
@@ -37,4 +67,4 @@ class TradingAccount {
37
67
  }
38
68
  }
39
69
  exports.TradingAccount = TradingAccount;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ0FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy90cmFkaW5nQWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSx1Q0FBMkM7QUFFM0MsTUFBYSxjQUFjO0lBTXpCLFlBQVksWUFBb0IsRUFBRSxNQUFlLEVBQUUsS0FBZ0I7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUE2QjtRQUM3QyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFRLENBQUM7UUFDakcsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxHQUFHLENBQUMsWUFBWTtZQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtTQUNsQyxDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRyxPQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksd0JBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQXpDRCx3Q0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVRyYWRpbmdBY2NvdW50LCBTaWduUGF5bG9hZFBhcmFtZXRlcnMgfSBmcm9tICcuLi90cmFkaW5nJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHsgVHJhZGluZ05ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuXG5leHBvcnQgY2xhc3MgVHJhZGluZ0FjY291bnQgaW1wbGVtZW50cyBJVHJhZGluZ0FjY291bnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG5cbiAgcHVibGljIHdhbGxldDogSVdhbGxldDtcblxuICBjb25zdHJ1Y3RvcihlbnRlcnByaXNlSWQ6IHN0cmluZywgd2FsbGV0OiBJV2FsbGV0LCBiaXRnbzogQml0R29CYXNlKSB7XG4gICAgdGhpcy5lbnRlcnByaXNlSWQgPSBlbnRlcnByaXNlSWQ7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICB9XG5cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LmlkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IHBheWxvYWQgd2l0aCB0aGUgdXNlciBrZXkgb24gdGhpcyB0cmFkaW5nIGFjY291bnRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zLnBheWxvYWQgYXJiaXRyYXJ5IHBheWxvYWQgb2JqZWN0IChzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICogQHBhcmFtIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIHBhc3NwaHJhc2Ugb24gdGhpcyB0cmFkaW5nIGFjY291bnQsIHVzZWQgdG8gdW5sb2NrIHRoZSBhY2NvdW50IHVzZXIga2V5XG4gICAqIEByZXR1cm5zIGhleC1lbmNvZGVkIHNpZ25hdHVyZSBvZiB0aGUgcGF5bG9hZFxuICAgKi9cbiAgYXN5bmMgc2lnblBheWxvYWQocGFyYW1zOiBTaWduUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGtleSA9IChhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogdGhpcy53YWxsZXQua2V5SWRzKClbMF0gfSkpIGFzIGFueTtcbiAgICBjb25zdCBwcnYgPSB0aGlzLndhbGxldC5iaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0OiBrZXkuZW5jcnlwdGVkUHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgIH0pO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0eXBlb2YgcGFyYW1zLnBheWxvYWQgPT09ICdzdHJpbmcnID8gcGFyYW1zLnBheWxvYWQgOiBKU09OLnN0cmluZ2lmeShwYXJhbXMucGF5bG9hZCk7XG4gICAgcmV0dXJuICgoYXdhaXQgdGhpcy53YWxsZXQuYmFzZUNvaW4uc2lnbk1lc3NhZ2UoeyBwcnYgfSwgcGF5bG9hZCkpIGFzIGFueSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBUcmFkZSBOZXR3b3JrXG4gICAqIFRvIGVuYWJsZSBPZmYgRXhjaGFuZ2UgQWxsb2NhdGlvbiAmIFNldHRsZW1lbnQsIGNvbnRhY3Qgc3VwcG9ydEBiaXRnby5jb20uXG4gICAqIEJpdEdvIHByb3ZpZGVzIGEgVUkgZXhwZXJpZW5jZSBmb3IgY2xpZW50cyBhdDogaHR0cHM6Ly9hcHAuYml0Z28uY29tL3dlYi9lbnRlcnByaXNlcy88ZW50ZXJwcmlzZUlkPi9hbGxvY2F0ZVxuICAgKi9cbiAgdG9OZXR3b3JrKCk6IFRyYWRpbmdOZXR3b3JrIHtcbiAgICByZXR1cm4gbmV3IFRyYWRpbmdOZXR3b3JrKHRoaXMuZW50ZXJwcmlzZUlkLCB0aGlzLndhbGxldCwgdGhpcy5iaXRnbyk7XG4gIH1cbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ0FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy90cmFkaW5nQWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSx1Q0FBMkM7QUFFM0MsTUFBYSxjQUFjO0lBTXpCLFlBQVksWUFBb0IsRUFBRSxNQUFlLEVBQUUsS0FBZ0I7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUE2QjtRQUM3QyxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCwrR0FBK0c7UUFDL0csT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBdUQ7UUFDekYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QyxJQUFJLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNklBQTZJLENBQzlJLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUNiLHFHQUFxRyxDQUN0RyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXRGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQTZCO1FBQzlELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQVEsQ0FBQztRQUNqRyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDcEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxZQUFZO1lBQ3ZCLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1NBQ2xDLENBQUMsQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JHLE9BQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSx3QkFBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBL0VELHdDQStFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJVHJhZGluZ0FjY291bnQsIFNpZ25QYXlsb2FkUGFyYW1ldGVycyB9IGZyb20gJy4uL3RyYWRpbmcnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBUcmFkaW5nTmV0d29yayB9IGZyb20gJy4vbmV0d29yayc7XG5cbmV4cG9ydCBjbGFzcyBUcmFkaW5nQWNjb3VudCBpbXBsZW1lbnRzIElUcmFkaW5nQWNjb3VudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRlcnByaXNlSWQ6IHN0cmluZztcblxuICBwdWJsaWMgd2FsbGV0OiBJV2FsbGV0O1xuXG4gIGNvbnN0cnVjdG9yKGVudGVycHJpc2VJZDogc3RyaW5nLCB3YWxsZXQ6IElXYWxsZXQsIGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICB0aGlzLmVudGVycHJpc2VJZCA9IGVudGVycHJpc2VJZDtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gIH1cblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBhbiBhcmJpdHJhcnkgcGF5bG9hZC4gVXNlIHRoZSB1c2VyIGtleSBpZiBwYXNzcGhyYXNlIGlzIHByb3ZpZGVkLCBvciB0aGUgQml0R28ga2V5IGlmIG5vdC5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zLnBheWxvYWQgYXJiaXRyYXJ5IHBheWxvYWQgb2JqZWN0IChzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICogQHBhcmFtIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIHBhc3NwaHJhc2Ugb24gdGhpcyB0cmFkaW5nIGFjY291bnQsIHVzZWQgdG8gdW5sb2NrIHRoZSBhY2NvdW50IHVzZXIga2V5XG4gICAqIEByZXR1cm5zIGhleC1lbmNvZGVkIHNpZ25hdHVyZSBvZiB0aGUgcGF5bG9hZFxuICAgKi9cbiAgYXN5bmMgc2lnblBheWxvYWQocGFyYW1zOiBTaWduUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIGlmIG5vIHBhc3NwaHJhc2UgaXMgcHJvdmlkZWQsIGF0dGVtcHQgdG8gc2lnbiB1c2luZyB0aGUgd2FsbGV0J3MgYml0Z28ga2V5IHJlbW90ZWx5XG4gICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2lnblBheWxvYWRCeUJpdEdvS2V5KHBhcmFtcyk7XG4gICAgfVxuICAgIC8vIGlmIGEgcGFzc3BocmFzZSBpcyBwcm92aWRlZCwgd2UgbXVzdCBiZSB0cnlpbmcgdG8gc2lnbiB1c2luZyB0aGUgdXNlciBwcml2YXRlIGtleSAtIGRlY3J5cHQgYW5kIHNpZ24gbG9jYWxseVxuICAgIHJldHVybiB0aGlzLnNpZ25QYXlsb2FkQnlVc2VyS2V5KHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdGhlIHBheWxvYWQgb2YgYSB0cmFkaW5nIGFjY291bnQgdmlhIHRoZSB0cmFkaW5nIGFjY291bnQgQml0R28ga2V5XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2lnblBheWxvYWRCeUJpdEdvS2V5KHBhcmFtczogT21pdDxTaWduUGF5bG9hZFBhcmFtZXRlcnMsICd3YWxsZXRQYXNzcGhyYXNlJz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHdhbGxldERhdGEgPSB0aGlzLndhbGxldC50b0pTT04oKTtcbiAgICBpZiAod2FsbGV0RGF0YS51c2VyS2V5U2lnbmluZ1JlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdXYWxsZXQgbXVzdCB1c2UgdXNlciBrZXkgdG8gc2lnbiBvZmMgdHJhbnNhY3Rpb24sIHBsZWFzZSBwcm92aWRlIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBvciB2aXNpdCB5b3VyIHdhbGxldCBzZXR0aW5ncyBwYWdlIHRvIGNvbmZpZ3VyZSBvbmUuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHdhbGxldERhdGEua2V5cy5sZW5ndGggPCAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdXYWxsZXQgZG9lcyBub3Qgc3VwcG9ydCBCaXRHbyBzaWduaW5nLiBQbGVhc2UgcmVhY2ggb3V0IHRvIHN1cHBvcnRAYml0Z28uY29tIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMud2FsbGV0LnVybCgnL3R4L3NpZ24nKTtcbiAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gYXdhaXQgdGhpcy53YWxsZXQuYml0Z28ucG9zdCh1cmwpLnNlbmQocGFyYW1zLnBheWxvYWQpLnJlc3VsdCgpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgcGF5bG9hZCBvZiBhIHRyYWRpbmcgYWNjb3VudCBsb2NhbGx5IGJ5IGZldGNoaW5nIHRoZSB1c2VyJ3MgZW5jcnlwdGVkIHByaXZhdGUga2V5IGFuZCBkZWNyeXB0IHVzaW5nIHBhc3NwaHJhc2VcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaWduUGF5bG9hZEJ5VXNlcktleShwYXJhbXM6IFNpZ25QYXlsb2FkUGFyYW1ldGVycyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qga2V5ID0gKGF3YWl0IHRoaXMud2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiB0aGlzLndhbGxldC5rZXlJZHMoKVswXSB9KSkgYXMgYW55O1xuICAgIGNvbnN0IHBydiA9IHRoaXMud2FsbGV0LmJpdGdvLmRlY3J5cHQoe1xuICAgICAgaW5wdXQ6IGtleS5lbmNyeXB0ZWRQcnYsXG4gICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHR5cGVvZiBwYXJhbXMucGF5bG9hZCA9PT0gJ3N0cmluZycgPyBwYXJhbXMucGF5bG9hZCA6IEpTT04uc3RyaW5naWZ5KHBhcmFtcy5wYXlsb2FkKTtcbiAgICByZXR1cm4gKChhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi5zaWduTWVzc2FnZSh7IHBydiB9LCBwYXlsb2FkKSkgYXMgYW55KS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IFRyYWRlIE5ldHdvcmtcbiAgICogVG8gZW5hYmxlIE9mZiBFeGNoYW5nZSBBbGxvY2F0aW9uICYgU2V0dGxlbWVudCwgY29udGFjdCBzdXBwb3J0QGJpdGdvLmNvbS5cbiAgICogQml0R28gcHJvdmlkZXMgYSBVSSBleHBlcmllbmNlIGZvciBjbGllbnRzIGF0OiBodHRwczovL2FwcC5iaXRnby5jb20vd2ViL2VudGVycHJpc2VzLzxlbnRlcnByaXNlSWQ+L2FsbG9jYXRlXG4gICAqL1xuICB0b05ldHdvcmsoKTogVHJhZGluZ05ldHdvcmsge1xuICAgIHJldHVybiBuZXcgVHJhZGluZ05ldHdvcmsodGhpcy5lbnRlcnByaXNlSWQsIHRoaXMud2FsbGV0LCB0aGlzLmJpdGdvKTtcbiAgfVxufVxuIl19