@bitgo/sdk-core 38.4.0 → 38.5.1

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 (38) hide show
  1. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  2. package/dist/src/bitgo/defi/defiVault.js +2 -1
  3. package/dist/src/bitgo/errors.d.ts +5 -1
  4. package/dist/src/bitgo/errors.d.ts.map +1 -1
  5. package/dist/src/bitgo/errors.js +10 -3
  6. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  7. package/dist/src/bitgo/keychain/keychains.js +12 -3
  8. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +3 -0
  9. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  10. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +1 -1
  11. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  12. package/dist/src/bitgo/pendingApproval/pendingApproval.js +4 -1
  13. package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
  14. package/dist/src/bitgo/safe/safes.js +6 -2
  15. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +2 -0
  16. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  17. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +23 -3
  18. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +3 -9
  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/wallet/iWallet.d.ts +8 -6
  22. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  23. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  24. package/dist/src/bitgo/wallet/iWallets.d.ts +3 -0
  25. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  26. package/dist/src/bitgo/wallet/iWallets.js +2 -1
  27. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  28. package/dist/src/bitgo/wallet/wallets.js +5 -2
  29. package/dist/test/unit/bitgo/defi/defiVault.js +4 -1
  30. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +25 -4
  31. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
  32. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
  33. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
  34. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
  35. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
  36. package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +118 -0
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"defiVault.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/defi/defiVault.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAGL,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,MAAM;CAKhC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,MAAM,EAAE,OAAO;IAK3B;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU9E;;;;;;;;;;OAUG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB3E;;;;OAIG;YACW,sBAAsB;IAcpC;;;OAGG;YACW,oBAAoB;IAkDlC;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCzE;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAQvE;;;;;;;;OAQG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAgBrF;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;IA6BlF;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,aAAa;CAGtB"}
1
+ {"version":3,"file":"defiVault.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/defi/defiVault.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAGL,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,MAAM;CAKhC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,MAAM,EAAE,OAAO;IAK3B;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW9E;;;;;;;;;;OAUG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB3E;;;;OAIG;YACW,sBAAsB;IAcpC;;;OAGG;YACW,oBAAoB;IAkDlC;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCzE;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAQvE;;;;;;;;OAQG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAgBrF;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;IA6BlF;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,aAAa;CAGtB"}
@@ -77,6 +77,7 @@ class DefiVault {
77
77
  }
78
78
  const raw = await this.bitgo
79
79
  .get(this.bitgo.microservicesUrl(`/api/defi-service/v1/vaults/${params.vaultId}`))
80
+ .set('enterprise-id', this.wallet.toJSON().enterprise)
80
81
  .result();
81
82
  return (0, utils_1.decodeWithCodec)(public_types_1.GetVaultResponse, raw, 'getVaultConfig');
82
83
  }
@@ -351,4 +352,4 @@ class DefiVault {
351
352
  }
352
353
  }
353
354
  exports.DefiVault = DefiVault;
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaVZhdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2RlZmkvZGVmaVZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gseUNBQTJCO0FBQzNCLHNEQUFzRTtBQWtCdEUsb0NBQTJDO0FBRTNDOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxLQUFLO0lBR25ELFlBQVksV0FBbUI7UUFDN0IsS0FBSyxDQUFDLCtDQUErQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBUkQsZ0VBUUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxTQUFTO0lBSXBCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBNkI7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUs7YUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ2pGLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFBLHVCQUFlLEVBQUMsK0JBQWdCLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixDQUFD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QUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLG1CQUFtQjtTQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxnQ0FBZ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQWhVRCw4QkFnVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IEdldFZhdWx0UmVzcG9uc2UsIFZhdWx0UHJvdG9jb2wgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7XG4gIENvbmNyZXRlRGVwb3NpdFJlc3VsdCxcbiAgTW9ycGhvRGVwb3NpdFJlc3VsdCxcbiAgRGVmaU9wZXJhdGlvbixcbiAgRGVmaU9wZXJhdGlvbkxpc3RSZXN1bHQsXG4gIERlcG9zaXRSZXN1bHQsXG4gIERlcG9zaXRUb1ZhdWx0T3B0aW9ucyxcbiAgR2V0T3BlcmF0aW9uT3B0aW9ucyxcbiAgR2V0VmF1bHRDb25maWdPcHRpb25zLFxuICBJRGVmaVZhdWx0LFxuICBMaXN0T3BlcmF0aW9uc09wdGlvbnMsXG4gIFJlc3VtZURlcG9zaXRPcHRpb25zLFxuICBXaXRoZHJhd0Zyb21WYXVsdE9wdGlvbnMsXG4gIFdpdGhkcmF3UmVzdWx0LFxufSBmcm9tICcuL2lEZWZpVmF1bHQnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGEgY29uY3VycmVudCBhY3RpdmUgZGVwb3NpdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlICh3YWxsZXQsIHZhdWx0KSBwYWlyLlxuICovXG5leHBvcnQgY2xhc3MgQWN0aXZlT3BlcmF0aW9uRXhpc3RzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBvcGVyYXRpb25JZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbklkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQW4gYWN0aXZlIGRlcG9zaXQgb3BlcmF0aW9uIGFscmVhZHkgZXhpc3RzOiAke29wZXJhdGlvbklkfWApO1xuICAgIHRoaXMubmFtZSA9ICdBY3RpdmVPcGVyYXRpb25FeGlzdHNFcnJvcic7XG4gICAgdGhpcy5vcGVyYXRpb25JZCA9IG9wZXJhdGlvbklkO1xuICB9XG59XG5cbi8qKlxuICogT3JjaGVzdHJhdGVzIEVSQy00NjI2IHZhdWx0IGRlcG9zaXQgYW5kIHdpdGhkcmF3IGZsb3dzIGZvciBhIHdhbGxldC5cbiAqXG4gKiBFeHBvc2VkIGFzIGB3YWxsZXQuZGVmaWAgb24gdGhlIFdhbGxldCBjbGFzcy4gU2VlIFRERCDCpzYuMy4xIGZvciB0aGUgZnVsbFxuICogZGVzaWduOiB0aGUgU0RLIHNlcXVlbmNlcyB0d28gc2VuZE1hbnkgY2FsbHMgKGFwcHJvdmUgKyBkZXBvc2l0KSBhbmRcbiAqIHJldHVybnMgYW4gb3BlcmF0aW9uSWQgdGhhdCB0aGUgVUkgdXNlcyBmb3Igc3RhdHVzIHRyYWNraW5nIGFuZCByZWNvdmVyeS5cbiAqXG4gKiBVc2VzIHdhbGxldC5zZW5kTWFueSgpIHVuZGVyIHRoZSBob29kIHNvIHRoYXQgYm90aCBjdXN0b2R5IHdhbGxldHNcbiAqICh0eFJlcXVlc3QgY3JlYXRpb24gb25seSkgYW5kIGhvdCB3YWxsZXRzIChjcmVhdGUgKyBzaWduICsgYnJvYWRjYXN0KVxuICogYXJlIGhhbmRsZWQgYnkgdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlLlxuICovXG5leHBvcnQgY2xhc3MgRGVmaVZhdWx0IGltcGxlbWVudHMgSURlZmlWYXVsdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2FsbGV0OiBJV2FsbGV0O1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0KSB7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5iaXRnbyA9IHdhbGxldC5iaXRnbztcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB2YXVsdCBjb25maWcgZnJvbSBkZWZpLXNlcnZpY2UuIFVzZWQgaW50ZXJuYWxseSB0byBkZXRlcm1pbmVcbiAgICogd2hpY2ggZGVwb3NpdCBwYXRoIHRvIHRha2UgKENvbmNyZXRlIHZzIE1vcnBobykuXG4gICAqL1xuICBhc3luYyBnZXRWYXVsdENvbmZpZyhwYXJhbXM6IEdldFZhdWx0Q29uZmlnT3B0aW9ucyk6IFByb21pc2U8R2V0VmF1bHRSZXNwb25zZT4ge1xuICAgIGlmICghcGFyYW1zLnZhdWx0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndmF1bHRJZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCByYXcgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChgL2FwaS9kZWZpLXNlcnZpY2UvdjEvdmF1bHRzLyR7cGFyYW1zLnZhdWx0SWR9YCkpXG4gICAgICAucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZVdpdGhDb2RlYyhHZXRWYXVsdFJlc3BvbnNlLCByYXcsICdnZXRWYXVsdENvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcG9zaXQgYW4gYW1vdW50IG9mIHVuZGVybHlpbmcgYXNzZXQgaW50byBhIHZhdWx0LlxuICAgKlxuICAgKiBEaXNwYXRjaGVzIHRvIHRoZSBjb25jcmV0ZSBvciBtb3JwaG8gcGF0aCBiYXNlZCBvbiB2YXVsdCBwcm92aWRlci5cbiAgICogVGhlIGNvbmNyZXRlIHBhdGggcmV0dXJucyBhIHBlbmRpbmdBcHByb3ZhbCAoY3VzdG9kaWFsIHdhbGxldCkuXG4gICAqIFRoZSBtb3JwaG8gcGF0aCBpc3N1ZXMgdHdvIHNlbmRNYW55IGNhbGxzIChhcHByb3ZlICsgZGVwb3NpdCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMudmF1bHRJZCAtIERlRmktc2VydmljZSB2YXVsdCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSBwYXJhbXMuYW1vdW50IC0gYW1vdW50IGluIGJhc2UgdW5pdHMgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXRcbiAgICogQHBhcmFtIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIC0gcmVxdWlyZWQgZm9yIGhvdCB3YWxsZXRzLCBvbWl0IGZvciBjdXN0b2R5XG4gICAqL1xuICBhc3luYyBkZXBvc2l0VG9WYXVsdChwYXJhbXM6IERlcG9zaXRUb1ZhdWx0T3B0aW9ucyk6IFByb21pc2U8RGVwb3NpdFJlc3VsdD4ge1xuICAgIGlmICghcGFyYW1zLnZhdWx0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndmF1bHRJZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5hbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5nZXRWYXVsdENvbmZpZyh7IHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5wcm90b2NvbCA9PT0gVmF1bHRQcm90b2NvbC5DT05DUkVURV9CVENDWCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVwb3NpdFRvQ29uY3JldGVWYXVsdChwYXJhbXMpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlnLnByb3RvY29sID09PSBWYXVsdFByb3RvY29sLk1PUlBITykge1xuICAgICAgcmV0dXJuIHRoaXMuZGVwb3NpdFRvTW9ycGhvVmF1bHQocGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB2YXVsdCBwcm90b2NvbDogJHtjb25maWcucHJvdG9jb2x9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbmNyZXRlIEJUQyB2YXVsdCBkZXBvc2l0IHBhdGguIFRoZSBjbGllbnQgQlRDIHdhbGxldCBpcyBjdXN0b2RpYWwsIHNvXG4gICAqIHNlbmRNYW55IHJldHVybnMgYSBwZW5kaW5nQXBwcm92YWwgcmF0aGVyIHRoYW4gYSBzaWduZWQgdHJhbnNmZXIuXG4gICAqIE5vIHJlY2lwaWVudHMgYXJlIHNlbnQg4oCUIFdQIHJlc29sdmVzIHRoZSBlc2Nyb3cgZGVzdGluYXRpb24gc2VydmVyLXNpZGUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRlcG9zaXRUb0NvbmNyZXRlVmF1bHQocGFyYW1zOiBEZXBvc2l0VG9WYXVsdE9wdGlvbnMpOiBQcm9taXNlPENvbmNyZXRlRGVwb3NpdFJlc3VsdD4ge1xuICAgIGNvbnN0IHNlbmRNYW55UmVzdWx0ID0gYXdhaXQgdGhpcy53YWxsZXQuc2VuZE1hbnkoe1xuICAgICAgdHlwZTogJ2RlZmktZGVwb3NpdCcsXG4gICAgICBkZWZpUGFyYW1zOiB7XG4gICAgICAgIHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkLFxuICAgICAgICBhbW91bnQ6IHBhcmFtcy5hbW91bnQsXG4gICAgICAgIGFjdGlvblR5cGU6ICdkZWZpLWRlcG9zaXQnLFxuICAgICAgfSxcbiAgICAgIC4uLihwYXJhbXMud2FsbGV0UGFzc3BocmFzZSA/IHsgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgfSA6IHt9KSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4dHJhY3RDb25jcmV0ZURlcG9zaXRSZXN1bHQoc2VuZE1hbnlSZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vcnBobyB2YXVsdCBkZXBvc2l0IHBhdGguIElzc3VlcyB0d28gc2VuZE1hbnkgY2FsbHMgKGFwcHJvdmUgKyBkZXBvc2l0KVxuICAgKiBhbmQgcmV0dXJucyB0aGUgb3BlcmF0aW9uSWQgdGhhdCBsaW5rcyB0aGVtLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZXBvc2l0VG9Nb3JwaG9WYXVsdChwYXJhbXM6IERlcG9zaXRUb1ZhdWx0T3B0aW9ucyk6IFByb21pc2U8TW9ycGhvRGVwb3NpdFJlc3VsdD4ge1xuICAgIC8vIFRPRE8oQ0dELTE3MDkpOiBSZS1lbmFibGUgYWN0aXZlIG9wZXJhdGlvbiBwcmUtZmxpZ2h0IGNoZWNrIG9uY2UgdGhlXG4gICAgLy8gZGVmaS1zZXJ2aWNlIG9wZXJhdGlvbnMgZW5kcG9pbnQgaXMgZGVwbG95ZWQgYW5kIHJldHVybmluZyBhY3RpdmUgc3RhdGUuXG4gICAgLy8gY29uc3QgYWN0aXZlT3BzOiBEZWZpT3BlcmF0aW9uTGlzdFJlc3VsdCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAvLyAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMub3BlcmF0aW9uc1VybCgpKSlcbiAgICAvLyAgIC5xdWVyeSh7IHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkLCBzdGF0ZTogJ2FjdGl2ZScgfSlcbiAgICAvLyAgIC5yZXN1bHQoKTtcbiAgICAvL1xuICAgIC8vIGlmIChhY3RpdmVPcHMuaXRlbXMgJiYgYWN0aXZlT3BzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgIHRocm93IG5ldyBBY3RpdmVPcGVyYXRpb25FeGlzdHNFcnJvcihhY3RpdmVPcHMuaXRlbXNbMF0ub3BlcmF0aW9uSWQpO1xuICAgIC8vIH1cblxuICAgIC8vIFN0ZXAgMTogQXBwcm92ZSB0eFJlcXVlc3QgdmlhIHNlbmRNYW55XG4gICAgY29uc3QgYXBwcm92ZVJlc3VsdCA9IGF3YWl0IHRoaXMud2FsbGV0LnNlbmRNYW55KHtcbiAgICAgIHR5cGU6ICdkZWZpQXBwcm92ZScsXG4gICAgICBkZWZpUGFyYW1zOiB7XG4gICAgICAgIHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkLFxuICAgICAgICBhbW91bnQ6IHBhcmFtcy5hbW91bnQsXG4gICAgICB9LFxuICAgICAgLi4uKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID8geyB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9IDoge30pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYXBwcm92ZVR4UmVxdWVzdElkID0gdGhpcy5leHRyYWN0VHhSZXF1ZXN0SWQoYXBwcm92ZVJlc3VsdCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSB0aGlzLmV4dHJhY3RPcGVyYXRpb25JZChhcHByb3ZlUmVzdWx0KTtcblxuICAgIGlmICghb3BlcmF0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3BlcmF0aW9uSWQgbm90IGZvdW5kIGluIGFwcHJvdmUgdHhSZXF1ZXN0IHJlc3BvbnNlJyk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAyOiBEZXBvc2l0IHR4UmVxdWVzdCB2aWEgc2VuZE1hbnlcbiAgICBjb25zdCBkZXBvc2l0UmVzdWx0ID0gYXdhaXQgdGhpcy53YWxsZXQuc2VuZE1hbnkoe1xuICAgICAgdHlwZTogJ2RlZmlEZXBvc2l0JyxcbiAgICAgIGRlZmlQYXJhbXM6IHtcbiAgICAgICAgdmF1bHRJZDogcGFyYW1zLnZhdWx0SWQsXG4gICAgICAgIGFtb3VudDogcGFyYW1zLmFtb3VudCxcbiAgICAgICAgb3BlcmF0aW9uSWQsXG4gICAgICB9LFxuICAgICAgLi4uKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID8geyB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9IDoge30pLFxuICAgIH0pO1xuICAgIGNvbnN0IGRlcG9zaXRUeFJlcXVlc3RJZCA9IHRoaXMuZXh0cmFjdFR4UmVxdWVzdElkKGRlcG9zaXRSZXN1bHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZXJhdGlvbklkLFxuICAgICAgdHhSZXF1ZXN0SWRzOiB7XG4gICAgICAgIGFwcHJvdmU6IGFwcHJvdmVUeFJlcXVlc3RJZCxcbiAgICAgICAgZGVwb3NpdDogZGVwb3NpdFR4UmVxdWVzdElkLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBhIHBhcnRpYWxseS1jb21wbGV0ZWQgZGVwb3NpdC4gQ2FsbCB0aGlzIHdoZW4gdGhlIFNESyBwcm9jZXNzIGRpZWRcbiAgICogYmV0d2VlbiB0aGUgYXBwcm92ZSBhbmQgZGVwb3NpdCB0eFJlcXVlc3QgY3JlYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMub3BlcmF0aW9uSWQgLSB0aGUgb3BlcmF0aW9uSWQgZnJvbSB0aGUgb3JpZ2luYWwgZGVwb3NpdFRvVmF1bHQgY2FsbFxuICAgKiBAcGFyYW0gcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgLSByZXF1aXJlZCBmb3IgaG90IHdhbGxldHMsIG9taXQgZm9yIGN1c3RvZHlcbiAgICovXG4gIGFzeW5jIHJlc3VtZURlcG9zaXQocGFyYW1zOiBSZXN1bWVEZXBvc2l0T3B0aW9ucyk6IFByb21pc2U8RGVwb3NpdFJlc3VsdD4ge1xuICAgIGlmICghcGFyYW1zLm9wZXJhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdGlvbklkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gRmV0Y2ggdGhlIG9wZXJhdGlvbiB0byBnZXQgdGhlIHZhdWx0IGFuZCBhbW91bnQgZGV0YWlsc1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0T3BlcmF0aW9uKHsgb3BlcmF0aW9uSWQ6IHBhcmFtcy5vcGVyYXRpb25JZCB9KTtcblxuICAgIGlmIChvcGVyYXRpb24uYXNzb2NpYXRlZFR4UmVxdWVzdElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlcG9zaXQgdHhSZXF1ZXN0IGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIG9wZXJhdGlvbjsgbm90aGluZyB0byByZXN1bWUnKTtcbiAgICB9XG5cbiAgICBpZiAoIW9wZXJhdGlvbi50eFJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcHByb3ZlIHR4UmVxdWVzdCBub3QgZm91bmQgZm9yIHRoaXMgb3BlcmF0aW9uOyBjYW5ub3QgcmVzdW1lJyk7XG4gICAgfVxuXG4gICAgLy8gSXNzdWUgdGhlIGRlcG9zaXQgdHhSZXF1ZXN0IHVzaW5nIHRoZSBleGlzdGluZyBvcGVyYXRpb24ncyBkZXRhaWxzXG4gICAgY29uc3QgZGVwb3NpdFJlc3VsdCA9IGF3YWl0IHRoaXMud2FsbGV0LnNlbmRNYW55KHtcbiAgICAgIHR5cGU6ICdkZWZpRGVwb3NpdCcsXG4gICAgICBkZWZpUGFyYW1zOiB7XG4gICAgICAgIHZhdWx0SWQ6IG9wZXJhdGlvbi52YXVsdElkLFxuICAgICAgICBhbW91bnQ6IG9wZXJhdGlvbi5hc3NldEFtb3VudCxcbiAgICAgICAgb3BlcmF0aW9uSWQ6IHBhcmFtcy5vcGVyYXRpb25JZCxcbiAgICAgIH0sXG4gICAgICAuLi4ocGFyYW1zLndhbGxldFBhc3NwaHJhc2UgPyB7IHdhbGxldFBhc3NwaHJhc2U6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIH0gOiB7fSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0aW9uSWQ6IHBhcmFtcy5vcGVyYXRpb25JZCxcbiAgICAgIHR4UmVxdWVzdElkczoge1xuICAgICAgICBhcHByb3ZlOiBvcGVyYXRpb24udHhSZXF1ZXN0SWQsXG4gICAgICAgIGRlcG9zaXQ6IHRoaXMuZXh0cmFjdFR4UmVxdWVzdElkKGRlcG9zaXRSZXN1bHQpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIERlRmkgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLm9wZXJhdGlvbklkIC0gdGhlIG9wZXJhdGlvbiB0byByZXRyaWV2ZVxuICAgKi9cbiAgYXN5bmMgZ2V0T3BlcmF0aW9uKHBhcmFtczogR2V0T3BlcmF0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVmaU9wZXJhdGlvbj4ge1xuICAgIGlmICghcGFyYW1zLm9wZXJhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdGlvbklkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLm9wZXJhdGlvbnNVcmwoKSArICcvJyArIHBhcmFtcy5vcGVyYXRpb25JZCkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgb3BlcmF0aW9ucyBmb3IgYSB2YXVsdCBmaWx0ZXJlZCBieSB3YWxsZXRJZC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy52YXVsdElkIC0gdmF1bHQgdG8gbGlzdCBvcGVyYXRpb25zIGZvclxuICAgKiBAcGFyYW0gcGFyYW1zLnN0YXRlIC0gb3B0aW9uYWwgc3RhdGUgZmlsdGVyXG4gICAqIEBwYXJhbSBwYXJhbXMudHlwZSAtIG9wdGlvbmFsIHR5cGUgZmlsdGVyIChERVBPU0lUIHwgV0lUSERSQVcpXG4gICAqIEBwYXJhbSBwYXJhbXMubGltaXQgLSBwYWdlIHNpemVcbiAgICogQHBhcmFtIHBhcmFtcy5jdXJzb3IgLSBwYWdpbmF0aW9uIGN1cnNvclxuICAgKi9cbiAgYXN5bmMgbGlzdE9wZXJhdGlvbnMocGFyYW1zOiBMaXN0T3BlcmF0aW9uc09wdGlvbnMpOiBQcm9taXNlPERlZmlPcGVyYXRpb25MaXN0UmVzdWx0PiB7XG4gICAgaWYgKCFwYXJhbXMudmF1bHRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YXVsdElkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7XG4gICAgICB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCxcbiAgICB9O1xuICAgIGlmIChwYXJhbXMuc3RhdGUpIHF1ZXJ5LnN0YXRlID0gcGFyYW1zLnN0YXRlO1xuICAgIGlmIChwYXJhbXMudHlwZSkgcXVlcnkudHlwZSA9IHBhcmFtcy50eXBlO1xuICAgIGlmIChwYXJhbXMubGltaXQpIHF1ZXJ5LmxpbWl0ID0gcGFyYW1zLmxpbWl0O1xuICAgIGlmIChwYXJhbXMuY3Vyc29yKSBxdWVyeS5jdXJzb3IgPSBwYXJhbXMuY3Vyc29yO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLm9wZXJhdGlvbnNVcmwoKSkpLnF1ZXJ5KHF1ZXJ5KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaXRoZHJhdyB2YXVsdCBzaGFyZXMgZnJvbSBhIERlRmkgdmF1bHQuXG4gICAqXG4gICAqIElzc3VlcyBhIHNpbmdsZSBzZW5kTWFueSBjYWxsIChkZWZpV2l0aGRyYXcpIGFuZCByZXR1cm5zIHRoZSBvcGVyYXRpb25JZFxuICAgKiBhbmQgdHhSZXF1ZXN0SWQuIFRoZSBzdGF0ZSBtYWNoaW5lIGZvciB3aXRoZHJhd2FsIGlzIHNpbXBsZXIgdGhhbiBkZXBvc2l0OlxuICAgKiBDUkVBVEVEIOKGkiBXSVRIRFJBV19UWF9SRVFVRVNURUQg4oaSIFdJVEhEUkFXX1NJR05FRCDihpIgV0lUSERSQVdfQ09ORklSTUVEIOKGkiBDT01QTEVURURcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy52YXVsdElkIC0gRGVGaS1zZXJ2aWNlIHZhdWx0IGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHBhcmFtcy5hbW91bnQgLSBhbW91bnQgaW4gYmFzZSB1bml0cyBvZiB0aGUgdmF1bHQgc2hhcmUgdG9rZW5cbiAgICogQHBhcmFtIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIC0gcmVxdWlyZWQgZm9yIGhvdCB3YWxsZXRzLCBvbWl0IGZvciBjdXN0b2R5XG4gICAqL1xuICBhc3luYyB3aXRoZHJhd0Zyb21WYXVsdChwYXJhbXM6IFdpdGhkcmF3RnJvbVZhdWx0T3B0aW9ucyk6IFByb21pc2U8V2l0aGRyYXdSZXN1bHQ+IHtcbiAgICBpZiAoIXBhcmFtcy52YXVsdElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZhdWx0SWQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMuYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHdpdGhkcmF3UmVzdWx0ID0gYXdhaXQgdGhpcy53YWxsZXQuc2VuZE1hbnkoe1xuICAgICAgdHlwZTogJ2RlZmlXaXRoZHJhdycsXG4gICAgICBkZWZpUGFyYW1zOiB7XG4gICAgICAgIHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkLFxuICAgICAgICBhbW91bnQ6IHBhcmFtcy5hbW91bnQsXG4gICAgICB9LFxuICAgICAgLi4uKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID8geyB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9IDoge30pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdHhSZXF1ZXN0SWQgPSB0aGlzLmV4dHJhY3RUeFJlcXVlc3RJZCh3aXRoZHJhd1Jlc3VsdCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSB0aGlzLmV4dHJhY3RPcGVyYXRpb25JZCh3aXRoZHJhd1Jlc3VsdCk7XG5cbiAgICBpZiAoIW9wZXJhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdGlvbklkIG5vdCBmb3VuZCBpbiB3aXRoZHJhdyB0eFJlcXVlc3QgcmVzcG9uc2UnKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBvcGVyYXRpb25JZCwgdHhSZXF1ZXN0SWQgfTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBJbnRlcm5hbCBoZWxwZXJzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHR4UmVxdWVzdElkIGZyb20gYSBzZW5kTWFueSByZXN1bHQuXG4gICAqIHNlbmRNYW55IHJldHVybnMgZGlmZmVyZW50IHNoYXBlcyBkZXBlbmRpbmcgb24gd2FsbGV0IHR5cGU6XG4gICAqIC0gVFNTIGZ1bGw6IHsgdHhSZXF1ZXN0OiB7IHR4UmVxdWVzdElkIH0gfSBvciB7IHBlbmRpbmdBcHByb3ZhbCwgdHhSZXF1ZXN0IH1cbiAgICogLSBUU1MgbGl0ZTogcmVzdWx0IGZyb20gdHNzVXRpbHMuc2VuZFR4UmVxdWVzdFxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0VHhSZXF1ZXN0SWQoc2VuZE1hbnlSZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBzZW5kTWFueVJlc3VsdC50eFJlcXVlc3QgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHR4UmVxdWVzdD8udHhSZXF1ZXN0SWQpIHtcbiAgICAgIHJldHVybiB0eFJlcXVlc3QudHhSZXF1ZXN0SWQgYXMgc3RyaW5nO1xuICAgIH1cbiAgICBpZiAoc2VuZE1hbnlSZXN1bHQudHhSZXF1ZXN0SWQpIHtcbiAgICAgIHJldHVybiBzZW5kTWFueVJlc3VsdC50eFJlcXVlc3RJZCBhcyBzdHJpbmc7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgbm90IGZvdW5kIGluIHNlbmRNYW55IHJlc3BvbnNlJyk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBvcGVyYXRpb25JZCBmcm9tIGEgc2VuZE1hbnkgcmVzdWx0LlxuICAgKlxuICAgKiBUaGUgV1Agd3JpdGVzIHRoZSBkZWZpLXNlcnZpY2UtbWludGVkIG9wZXJhdGlvbklkIGludG8gdGhlIGJ1aWx0XG4gICAqIHRyYW5zYWN0aW9uJ3MgYGNvaW5TcGVjaWZpY2AgKGFsb25nc2lkZSBgYXNzaWduZWROb25jZWApLCBub3QgaW50byB0aGVcbiAgICogaW50ZW50LiBSZWFkIGl0IGZyb20gdGhlcmU6IHRoZSBgZnVsbGAgYXBpVmVyc2lvbiBzdXJmYWNlcyBpdCBhdFxuICAgKiBgdHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljLm9wZXJhdGlvbklkYCwgdGhlIGBsaXRlYCB2ZXJzaW9uXG4gICAqIGF0IGB1bnNpZ25lZFR4c1swXS5jb2luU3BlY2lmaWMub3BlcmF0aW9uSWRgLiBGYWxsIGJhY2sgdG9cbiAgICogYGludGVudC5vcGVyYXRpb25JZGAgZm9yIGZvcndhcmQtY29tcGF0IGluIGNhc2UgdGhlIFdQIGxhdGVyIGFsc29cbiAgICogcG9wdWxhdGVzIHRoZSBpbnRlbnQuXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RPcGVyYXRpb25JZChzZW5kTWFueVJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IHNlbmRNYW55UmVzdWx0LnR4UmVxdWVzdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXR4UmVxdWVzdCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmdWxsIGFwaVZlcnNpb246IHRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5vcGVyYXRpb25JZFxuICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IHR4UmVxdWVzdC50cmFuc2FjdGlvbnMgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZ1bGxVbnNpZ25lZFR4ID0gdHJhbnNhY3Rpb25zPy5bMF0/LnVuc2lnbmVkVHggYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZnVsbENvaW5TcGVjaWZpYyA9IGZ1bGxVbnNpZ25lZFR4Py5jb2luU3BlY2lmaWMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGZ1bGxDb2luU3BlY2lmaWM/Lm9wZXJhdGlvbklkKSB7XG4gICAgICByZXR1cm4gZnVsbENvaW5TcGVjaWZpYy5vcGVyYXRpb25JZCBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gbGl0ZSBhcGlWZXJzaW9uOiB1bnNpZ25lZFR4c1swXS5jb2luU3BlY2lmaWMub3BlcmF0aW9uSWRcbiAgICBjb25zdCB1bnNpZ25lZFR4cyA9IHR4UmVxdWVzdC51bnNpZ25lZFR4cyBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGl0ZUNvaW5TcGVjaWZpYyA9IHVuc2lnbmVkVHhzPy5bMF0/LmNvaW5TcGVjaWZpYyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAobGl0ZUNvaW5TcGVjaWZpYz8ub3BlcmF0aW9uSWQpIHtcbiAgICAgIHJldHVybiBsaXRlQ29pblNwZWNpZmljLm9wZXJhdGlvbklkIGFzIHN0cmluZztcbiAgICB9XG5cbiAgICAvLyBmb3J3YXJkLWNvbXBhdDogaW50ZW50Lm9wZXJhdGlvbklkIChpbiBjYXNlIHRoZSBXUCBsYXRlciBwb3B1bGF0ZXMgdGhlIGludGVudClcbiAgICBjb25zdCBpbnRlbnQgPSB0eFJlcXVlc3QuaW50ZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBpbnRlbnQ/Lm9wZXJhdGlvbklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB7QGxpbmsgQ29uY3JldGVEZXBvc2l0UmVzdWx0fSBmcm9tIGEgY3VzdG9kaWFsIHNlbmRNYW55IHJlc3BvbnNlLlxuICAgKiBDb25jcmV0ZSBCVEMgZGVwb3NpdHMgcmV0dXJuIGEgYHBlbmRpbmdBcHByb3ZhbGAgaW5zdGVhZCBvZiBhIHR4UmVxdWVzdCDigJRcbiAgICogdGhyb3dzIGlmIGBwZW5kaW5nQXBwcm92YWwuaWRgIGlzIGFic2VudCwgaW5kaWNhdGluZyBhbiB1bmV4cGVjdGVkIHNoYXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0Q29uY3JldGVEZXBvc2l0UmVzdWx0KHNlbmRNYW55UmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENvbmNyZXRlRGVwb3NpdFJlc3VsdCB7XG4gICAgY29uc3QgU2VuZE1hbnlDb25jcmV0ZVJlc3BvbnNlID0gdC50eXBlKHtcbiAgICAgIHBlbmRpbmdBcHByb3ZhbDogdC5pbnRlcnNlY3Rpb24oW3QudHlwZSh7IGlkOiB0LnN0cmluZyB9KSwgdC5wYXJ0aWFsKHsgc3RhdGU6IHQuc3RyaW5nIH0pXSksXG4gICAgfSk7XG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVdpdGhDb2RlYyhTZW5kTWFueUNvbmNyZXRlUmVzcG9uc2UsIHNlbmRNYW55UmVzdWx0LCAnZGVmaS1kZXBvc2l0IHNlbmRNYW55IHJlc3BvbnNlJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlbmRpbmdBcHByb3ZhbElkOiBkZWNvZGVkLnBlbmRpbmdBcHByb3ZhbC5pZCxcbiAgICAgIHN0YXRlOiBkZWNvZGVkLnBlbmRpbmdBcHByb3ZhbC5zdGF0ZSA/PyAnYXdhaXRpbmdTaWduYXR1cmUnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG9wZXJhdGlvbnNVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYC9hcGkvZGVmaS1zZXJ2aWNlL3YxL3dhbGxldHMvJHt0aGlzLndhbGxldC5pZCgpfS9vcGVyYXRpb25zYDtcbiAgfVxufVxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaVZhdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2RlZmkvZGVmaVZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gseUNBQTJCO0FBQzNCLHNEQUFzRTtBQWtCdEUsb0NBQTJDO0FBRTNDOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxLQUFLO0lBR25ELFlBQVksV0FBbUI7UUFDN0IsS0FBSyxDQUFDLCtDQUErQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBUkQsZ0VBUUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxTQUFTO0lBSXBCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBNkI7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUs7YUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ2pGLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDckQsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLElBQUEsdUJBQWUsRUFBQywrQkFBZ0IsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBNkI7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFdEUsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLDRCQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyw0QkFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQTZCO1FBQ2hFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEQsSUFBSSxFQUFFLGNBQWM7WUFDcEIsVUFBVSxFQUFFO2dCQUNWLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixVQUFVLEVBQUUsY0FBYzthQUMzQjtZQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQTZCO1FBQzlELHVFQUF1RTtRQUN2RSwyRUFBMkU7UUFDM0UsOERBQThEO1FBQzlELDREQUE0RDtRQUM1RCx5REFBeUQ7UUFDekQsZUFBZTtRQUNmLEVBQUU7UUFDRix1REFBdUQ7UUFDdkQsMEVBQTBFO1FBQzFFLElBQUk7UUFFSix5Q0FBeUM7UUFDekMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMvQyxJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07YUFDdEI7WUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbEYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELHlDQUF5QztRQUN6QyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQy9DLElBQUksRUFBRSxhQUFhO1lBQ25CLFVBQVUsRUFBRTtnQkFDVixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtnQkFDckIsV0FBVzthQUNaO1lBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ2xGLENBQUMsQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxFLE9BQU87WUFDTCxXQUFXO1lBQ1gsWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLE9BQU8sRUFBRSxrQkFBa0I7YUFDNUI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBNEI7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELDBEQUEwRDtRQUMxRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFL0UsSUFBSSxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMvQyxJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixNQUFNLEVBQUUsU0FBUyxDQUFDLFdBQVc7Z0JBQzdCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzthQUNoQztZQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsRixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsU0FBUyxDQUFDLFdBQVc7Z0JBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO2FBQ2hEO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUEyQjtRQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNySCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQTZCO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBb0M7WUFDN0MsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3hCLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxLQUFLO1lBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzdDLElBQUksTUFBTSxDQUFDLElBQUk7WUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDMUMsSUFBSSxNQUFNLENBQUMsS0FBSztZQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNO1lBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRWhELE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWdDO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNoRCxJQUFJLEVBQUUsY0FBYztZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07YUFDdEI7WUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbEYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCx1RUFBdUU7SUFFdkU7Ozs7O09BS0c7SUFDSyxrQkFBa0IsQ0FBQyxjQUF1QztRQUNoRSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBZ0QsQ0FBQztRQUNsRixJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQyxXQUFxQixDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixPQUFPLGNBQWMsQ0FBQyxXQUFxQixDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSyxrQkFBa0IsQ0FBQyxjQUF1QztRQUNoRSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBZ0QsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsdUVBQXVFO1FBQ3ZFLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUEwRCxDQUFDO1FBQzFGLE1BQU0sY0FBYyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQWlELENBQUM7UUFDNUYsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLEVBQUUsWUFBbUQsQ0FBQztRQUM3RixJQUFJLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sZ0JBQWdCLENBQUMsV0FBcUIsQ0FBQztRQUNoRCxDQUFDO1FBRUQsMkRBQTJEO1FBQzNELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUF5RCxDQUFDO1FBQ3hGLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBbUQsQ0FBQztRQUMvRixJQUFJLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sZ0JBQWdCLENBQUMsV0FBcUIsQ0FBQztRQUNoRCxDQUFDO1FBRUQsaUZBQWlGO1FBQ2pGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUE2QyxDQUFDO1FBQ3ZFLE9BQU8sTUFBTSxFQUFFLFdBQWlDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyw0QkFBNEIsQ0FBQyxjQUF1QztRQUMxRSxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdEMsZUFBZSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1RixDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFBLHVCQUFlLEVBQUMsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFDNUcsT0FBTztZQUNMLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUM3QyxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksbUJBQW1CO1NBQzVELENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLGdDQUFnQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBalVELDhCQWlVQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgR2V0VmF1bHRSZXNwb25zZSwgVmF1bHRQcm90b2NvbCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ29uY3JldGVEZXBvc2l0UmVzdWx0LFxuICBNb3JwaG9EZXBvc2l0UmVzdWx0LFxuICBEZWZpT3BlcmF0aW9uLFxuICBEZWZpT3BlcmF0aW9uTGlzdFJlc3VsdCxcbiAgRGVwb3NpdFJlc3VsdCxcbiAgRGVwb3NpdFRvVmF1bHRPcHRpb25zLFxuICBHZXRPcGVyYXRpb25PcHRpb25zLFxuICBHZXRWYXVsdENvbmZpZ09wdGlvbnMsXG4gIElEZWZpVmF1bHQsXG4gIExpc3RPcGVyYXRpb25zT3B0aW9ucyxcbiAgUmVzdW1lRGVwb3NpdE9wdGlvbnMsXG4gIFdpdGhkcmF3RnJvbVZhdWx0T3B0aW9ucyxcbiAgV2l0aGRyYXdSZXN1bHQsXG59IGZyb20gJy4vaURlZmlWYXVsdCc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBkZWNvZGVXaXRoQ29kZWMgfSBmcm9tICcuLi91dGlscyc7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gYSBjb25jdXJyZW50IGFjdGl2ZSBkZXBvc2l0IGFscmVhZHkgZXhpc3RzIGZvciB0aGUgKHdhbGxldCwgdmF1bHQpIHBhaXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3RpdmVPcGVyYXRpb25FeGlzdHNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IG9wZXJhdGlvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uSWQ6IHN0cmluZykge1xuICAgIHN1cGVyKGBBbiBhY3RpdmUgZGVwb3NpdCBvcGVyYXRpb24gYWxyZWFkeSBleGlzdHM6ICR7b3BlcmF0aW9uSWR9YCk7XG4gICAgdGhpcy5uYW1lID0gJ0FjdGl2ZU9wZXJhdGlvbkV4aXN0c0Vycm9yJztcbiAgICB0aGlzLm9wZXJhdGlvbklkID0gb3BlcmF0aW9uSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBPcmNoZXN0cmF0ZXMgRVJDLTQ2MjYgdmF1bHQgZGVwb3NpdCBhbmQgd2l0aGRyYXcgZmxvd3MgZm9yIGEgd2FsbGV0LlxuICpcbiAqIEV4cG9zZWQgYXMgYHdhbGxldC5kZWZpYCBvbiB0aGUgV2FsbGV0IGNsYXNzLiBTZWUgVEREIMKnNi4zLjEgZm9yIHRoZSBmdWxsXG4gKiBkZXNpZ246IHRoZSBTREsgc2VxdWVuY2VzIHR3byBzZW5kTWFueSBjYWxscyAoYXBwcm92ZSArIGRlcG9zaXQpIGFuZFxuICogcmV0dXJucyBhbiBvcGVyYXRpb25JZCB0aGF0IHRoZSBVSSB1c2VzIGZvciBzdGF0dXMgdHJhY2tpbmcgYW5kIHJlY292ZXJ5LlxuICpcbiAqIFVzZXMgd2FsbGV0LnNlbmRNYW55KCkgdW5kZXIgdGhlIGhvb2Qgc28gdGhhdCBib3RoIGN1c3RvZHkgd2FsbGV0c1xuICogKHR4UmVxdWVzdCBjcmVhdGlvbiBvbmx5KSBhbmQgaG90IHdhbGxldHMgKGNyZWF0ZSArIHNpZ24gKyBicm9hZGNhc3QpXG4gKiBhcmUgaGFuZGxlZCBieSB0aGUgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZpVmF1bHQgaW1wbGVtZW50cyBJRGVmaVZhdWx0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB3YWxsZXQ6IElXYWxsZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcblxuICBjb25zdHJ1Y3Rvcih3YWxsZXQ6IElXYWxsZXQpIHtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLmJpdGdvID0gd2FsbGV0LmJpdGdvO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHZhdWx0IGNvbmZpZyBmcm9tIGRlZmktc2VydmljZS4gVXNlZCBpbnRlcm5hbGx5IHRvIGRldGVybWluZVxuICAgKiB3aGljaCBkZXBvc2l0IHBhdGggdG8gdGFrZSAoQ29uY3JldGUgdnMgTW9ycGhvKS5cbiAgICovXG4gIGFzeW5jIGdldFZhdWx0Q29uZmlnKHBhcmFtczogR2V0VmF1bHRDb25maWdPcHRpb25zKTogUHJvbWlzZTxHZXRWYXVsdFJlc3BvbnNlPiB7XG4gICAgaWYgKCFwYXJhbXMudmF1bHRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YXVsdElkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL2RlZmktc2VydmljZS92MS92YXVsdHMvJHtwYXJhbXMudmF1bHRJZH1gKSlcbiAgICAgIC5zZXQoJ2VudGVycHJpc2UtaWQnLCB0aGlzLndhbGxldC50b0pTT04oKS5lbnRlcnByaXNlKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVXaXRoQ29kZWMoR2V0VmF1bHRSZXNwb25zZSwgcmF3LCAnZ2V0VmF1bHRDb25maWcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXBvc2l0IGFuIGFtb3VudCBvZiB1bmRlcmx5aW5nIGFzc2V0IGludG8gYSB2YXVsdC5cbiAgICpcbiAgICogRGlzcGF0Y2hlcyB0byB0aGUgY29uY3JldGUgb3IgbW9ycGhvIHBhdGggYmFzZWQgb24gdmF1bHQgcHJvdmlkZXIuXG4gICAqIFRoZSBjb25jcmV0ZSBwYXRoIHJldHVybnMgYSBwZW5kaW5nQXBwcm92YWwgKGN1c3RvZGlhbCB3YWxsZXQpLlxuICAgKiBUaGUgbW9ycGhvIHBhdGggaXNzdWVzIHR3byBzZW5kTWFueSBjYWxscyAoYXBwcm92ZSArIGRlcG9zaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLnZhdWx0SWQgLSBEZUZpLXNlcnZpY2UgdmF1bHQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gcGFyYW1zLmFtb3VudCAtIGFtb3VudCBpbiBiYXNlIHVuaXRzIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0XG4gICAqIEBwYXJhbSBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSAtIHJlcXVpcmVkIGZvciBob3Qgd2FsbGV0cywgb21pdCBmb3IgY3VzdG9keVxuICAgKi9cbiAgYXN5bmMgZGVwb3NpdFRvVmF1bHQocGFyYW1zOiBEZXBvc2l0VG9WYXVsdE9wdGlvbnMpOiBQcm9taXNlPERlcG9zaXRSZXN1bHQ+IHtcbiAgICBpZiAoIXBhcmFtcy52YXVsdElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZhdWx0SWQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMuYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZ2V0VmF1bHRDb25maWcoeyB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCB9KTtcblxuICAgIGlmIChjb25maWcucHJvdG9jb2wgPT09IFZhdWx0UHJvdG9jb2wuQ09OQ1JFVEVfQlRDQ1gpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlcG9zaXRUb0NvbmNyZXRlVmF1bHQocGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5wcm90b2NvbCA9PT0gVmF1bHRQcm90b2NvbC5NT1JQSE8pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlcG9zaXRUb01vcnBob1ZhdWx0KHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdmF1bHQgcHJvdG9jb2w6ICR7Y29uZmlnLnByb3RvY29sfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25jcmV0ZSBCVEMgdmF1bHQgZGVwb3NpdCBwYXRoLiBUaGUgY2xpZW50IEJUQyB3YWxsZXQgaXMgY3VzdG9kaWFsLCBzb1xuICAgKiBzZW5kTWFueSByZXR1cm5zIGEgcGVuZGluZ0FwcHJvdmFsIHJhdGhlciB0aGFuIGEgc2lnbmVkIHRyYW5zZmVyLlxuICAgKiBObyByZWNpcGllbnRzIGFyZSBzZW50IOKAlCBXUCByZXNvbHZlcyB0aGUgZXNjcm93IGRlc3RpbmF0aW9uIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZXBvc2l0VG9Db25jcmV0ZVZhdWx0KHBhcmFtczogRGVwb3NpdFRvVmF1bHRPcHRpb25zKTogUHJvbWlzZTxDb25jcmV0ZURlcG9zaXRSZXN1bHQ+IHtcbiAgICBjb25zdCBzZW5kTWFueVJlc3VsdCA9IGF3YWl0IHRoaXMud2FsbGV0LnNlbmRNYW55KHtcbiAgICAgIHR5cGU6ICdkZWZpLWRlcG9zaXQnLFxuICAgICAgZGVmaVBhcmFtczoge1xuICAgICAgICB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCxcbiAgICAgICAgYW1vdW50OiBwYXJhbXMuYW1vdW50LFxuICAgICAgICBhY3Rpb25UeXBlOiAnZGVmaS1kZXBvc2l0JyxcbiAgICAgIH0sXG4gICAgICAuLi4ocGFyYW1zLndhbGxldFBhc3NwaHJhc2UgPyB7IHdhbGxldFBhc3NwaHJhc2U6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIH0gOiB7fSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5leHRyYWN0Q29uY3JldGVEZXBvc2l0UmVzdWx0KHNlbmRNYW55UmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3JwaG8gdmF1bHQgZGVwb3NpdCBwYXRoLiBJc3N1ZXMgdHdvIHNlbmRNYW55IGNhbGxzIChhcHByb3ZlICsgZGVwb3NpdClcbiAgICogYW5kIHJldHVybnMgdGhlIG9wZXJhdGlvbklkIHRoYXQgbGlua3MgdGhlbS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZGVwb3NpdFRvTW9ycGhvVmF1bHQocGFyYW1zOiBEZXBvc2l0VG9WYXVsdE9wdGlvbnMpOiBQcm9taXNlPE1vcnBob0RlcG9zaXRSZXN1bHQ+IHtcbiAgICAvLyBUT0RPKENHRC0xNzA5KTogUmUtZW5hYmxlIGFjdGl2ZSBvcGVyYXRpb24gcHJlLWZsaWdodCBjaGVjayBvbmNlIHRoZVxuICAgIC8vIGRlZmktc2VydmljZSBvcGVyYXRpb25zIGVuZHBvaW50IGlzIGRlcGxveWVkIGFuZCByZXR1cm5pbmcgYWN0aXZlIHN0YXRlLlxuICAgIC8vIGNvbnN0IGFjdGl2ZU9wczogRGVmaU9wZXJhdGlvbkxpc3RSZXN1bHQgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgLy8gICAuZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLm9wZXJhdGlvbnNVcmwoKSkpXG4gICAgLy8gICAucXVlcnkoeyB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCwgc3RhdGU6ICdhY3RpdmUnIH0pXG4gICAgLy8gICAucmVzdWx0KCk7XG4gICAgLy9cbiAgICAvLyBpZiAoYWN0aXZlT3BzLml0ZW1zICYmIGFjdGl2ZU9wcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aHJvdyBuZXcgQWN0aXZlT3BlcmF0aW9uRXhpc3RzRXJyb3IoYWN0aXZlT3BzLml0ZW1zWzBdLm9wZXJhdGlvbklkKTtcbiAgICAvLyB9XG5cbiAgICAvLyBTdGVwIDE6IEFwcHJvdmUgdHhSZXF1ZXN0IHZpYSBzZW5kTWFueVxuICAgIGNvbnN0IGFwcHJvdmVSZXN1bHQgPSBhd2FpdCB0aGlzLndhbGxldC5zZW5kTWFueSh7XG4gICAgICB0eXBlOiAnZGVmaUFwcHJvdmUnLFxuICAgICAgZGVmaVBhcmFtczoge1xuICAgICAgICB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCxcbiAgICAgICAgYW1vdW50OiBwYXJhbXMuYW1vdW50LFxuICAgICAgfSxcbiAgICAgIC4uLihwYXJhbXMud2FsbGV0UGFzc3BocmFzZSA/IHsgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgfSA6IHt9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFwcHJvdmVUeFJlcXVlc3RJZCA9IHRoaXMuZXh0cmFjdFR4UmVxdWVzdElkKGFwcHJvdmVSZXN1bHQpO1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gdGhpcy5leHRyYWN0T3BlcmF0aW9uSWQoYXBwcm92ZVJlc3VsdCk7XG5cbiAgICBpZiAoIW9wZXJhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdGlvbklkIG5vdCBmb3VuZCBpbiBhcHByb3ZlIHR4UmVxdWVzdCByZXNwb25zZScpO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogRGVwb3NpdCB0eFJlcXVlc3QgdmlhIHNlbmRNYW55XG4gICAgY29uc3QgZGVwb3NpdFJlc3VsdCA9IGF3YWl0IHRoaXMud2FsbGV0LnNlbmRNYW55KHtcbiAgICAgIHR5cGU6ICdkZWZpRGVwb3NpdCcsXG4gICAgICBkZWZpUGFyYW1zOiB7XG4gICAgICAgIHZhdWx0SWQ6IHBhcmFtcy52YXVsdElkLFxuICAgICAgICBhbW91bnQ6IHBhcmFtcy5hbW91bnQsXG4gICAgICAgIG9wZXJhdGlvbklkLFxuICAgICAgfSxcbiAgICAgIC4uLihwYXJhbXMud2FsbGV0UGFzc3BocmFzZSA/IHsgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBjb25zdCBkZXBvc2l0VHhSZXF1ZXN0SWQgPSB0aGlzLmV4dHJhY3RUeFJlcXVlc3RJZChkZXBvc2l0UmVzdWx0KTtcblxuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRpb25JZCxcbiAgICAgIHR4UmVxdWVzdElkczoge1xuICAgICAgICBhcHByb3ZlOiBhcHByb3ZlVHhSZXF1ZXN0SWQsXG4gICAgICAgIGRlcG9zaXQ6IGRlcG9zaXRUeFJlcXVlc3RJZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1bWUgYSBwYXJ0aWFsbHktY29tcGxldGVkIGRlcG9zaXQuIENhbGwgdGhpcyB3aGVuIHRoZSBTREsgcHJvY2VzcyBkaWVkXG4gICAqIGJldHdlZW4gdGhlIGFwcHJvdmUgYW5kIGRlcG9zaXQgdHhSZXF1ZXN0IGNyZWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLm9wZXJhdGlvbklkIC0gdGhlIG9wZXJhdGlvbklkIGZyb20gdGhlIG9yaWdpbmFsIGRlcG9zaXRUb1ZhdWx0IGNhbGxcbiAgICogQHBhcmFtIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIC0gcmVxdWlyZWQgZm9yIGhvdCB3YWxsZXRzLCBvbWl0IGZvciBjdXN0b2R5XG4gICAqL1xuICBhc3luYyByZXN1bWVEZXBvc2l0KHBhcmFtczogUmVzdW1lRGVwb3NpdE9wdGlvbnMpOiBQcm9taXNlPERlcG9zaXRSZXN1bHQ+IHtcbiAgICBpZiAoIXBhcmFtcy5vcGVyYXRpb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRpb25JZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIEZldGNoIHRoZSBvcGVyYXRpb24gdG8gZ2V0IHRoZSB2YXVsdCBhbmQgYW1vdW50IGRldGFpbHNcbiAgICBjb25zdCBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLmdldE9wZXJhdGlvbih7IG9wZXJhdGlvbklkOiBwYXJhbXMub3BlcmF0aW9uSWQgfSk7XG5cbiAgICBpZiAob3BlcmF0aW9uLmFzc29jaWF0ZWRUeFJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZXBvc2l0IHR4UmVxdWVzdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBvcGVyYXRpb247IG5vdGhpbmcgdG8gcmVzdW1lJyk7XG4gICAgfVxuXG4gICAgaWYgKCFvcGVyYXRpb24udHhSZXF1ZXN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXBwcm92ZSB0eFJlcXVlc3Qgbm90IGZvdW5kIGZvciB0aGlzIG9wZXJhdGlvbjsgY2Fubm90IHJlc3VtZScpO1xuICAgIH1cblxuICAgIC8vIElzc3VlIHRoZSBkZXBvc2l0IHR4UmVxdWVzdCB1c2luZyB0aGUgZXhpc3Rpbmcgb3BlcmF0aW9uJ3MgZGV0YWlsc1xuICAgIGNvbnN0IGRlcG9zaXRSZXN1bHQgPSBhd2FpdCB0aGlzLndhbGxldC5zZW5kTWFueSh7XG4gICAgICB0eXBlOiAnZGVmaURlcG9zaXQnLFxuICAgICAgZGVmaVBhcmFtczoge1xuICAgICAgICB2YXVsdElkOiBvcGVyYXRpb24udmF1bHRJZCxcbiAgICAgICAgYW1vdW50OiBvcGVyYXRpb24uYXNzZXRBbW91bnQsXG4gICAgICAgIG9wZXJhdGlvbklkOiBwYXJhbXMub3BlcmF0aW9uSWQsXG4gICAgICB9LFxuICAgICAgLi4uKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID8geyB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB9IDoge30pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZXJhdGlvbklkOiBwYXJhbXMub3BlcmF0aW9uSWQsXG4gICAgICB0eFJlcXVlc3RJZHM6IHtcbiAgICAgICAgYXBwcm92ZTogb3BlcmF0aW9uLnR4UmVxdWVzdElkLFxuICAgICAgICBkZXBvc2l0OiB0aGlzLmV4dHJhY3RUeFJlcXVlc3RJZChkZXBvc2l0UmVzdWx0KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBEZUZpIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy5vcGVyYXRpb25JZCAtIHRoZSBvcGVyYXRpb24gdG8gcmV0cmlldmVcbiAgICovXG4gIGFzeW5jIGdldE9wZXJhdGlvbihwYXJhbXM6IEdldE9wZXJhdGlvbk9wdGlvbnMpOiBQcm9taXNlPERlZmlPcGVyYXRpb24+IHtcbiAgICBpZiAoIXBhcmFtcy5vcGVyYXRpb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRpb25JZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5vcGVyYXRpb25zVXJsKCkgKyAnLycgKyBwYXJhbXMub3BlcmF0aW9uSWQpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9wZXJhdGlvbnMgZm9yIGEgdmF1bHQgZmlsdGVyZWQgYnkgd2FsbGV0SWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMudmF1bHRJZCAtIHZhdWx0IHRvIGxpc3Qgb3BlcmF0aW9ucyBmb3JcbiAgICogQHBhcmFtIHBhcmFtcy5zdGF0ZSAtIG9wdGlvbmFsIHN0YXRlIGZpbHRlclxuICAgKiBAcGFyYW0gcGFyYW1zLnR5cGUgLSBvcHRpb25hbCB0eXBlIGZpbHRlciAoREVQT1NJVCB8IFdJVEhEUkFXKVxuICAgKiBAcGFyYW0gcGFyYW1zLmxpbWl0IC0gcGFnZSBzaXplXG4gICAqIEBwYXJhbSBwYXJhbXMuY3Vyc29yIC0gcGFnaW5hdGlvbiBjdXJzb3JcbiAgICovXG4gIGFzeW5jIGxpc3RPcGVyYXRpb25zKHBhcmFtczogTGlzdE9wZXJhdGlvbnNPcHRpb25zKTogUHJvbWlzZTxEZWZpT3BlcmF0aW9uTGlzdFJlc3VsdD4ge1xuICAgIGlmICghcGFyYW1zLnZhdWx0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndmF1bHRJZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0ge1xuICAgICAgdmF1bHRJZDogcGFyYW1zLnZhdWx0SWQsXG4gICAgfTtcbiAgICBpZiAocGFyYW1zLnN0YXRlKSBxdWVyeS5zdGF0ZSA9IHBhcmFtcy5zdGF0ZTtcbiAgICBpZiAocGFyYW1zLnR5cGUpIHF1ZXJ5LnR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICBpZiAocGFyYW1zLmxpbWl0KSBxdWVyeS5saW1pdCA9IHBhcmFtcy5saW1pdDtcbiAgICBpZiAocGFyYW1zLmN1cnNvcikgcXVlcnkuY3Vyc29yID0gcGFyYW1zLmN1cnNvcjtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5vcGVyYXRpb25zVXJsKCkpKS5xdWVyeShxdWVyeSkucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogV2l0aGRyYXcgdmF1bHQgc2hhcmVzIGZyb20gYSBEZUZpIHZhdWx0LlxuICAgKlxuICAgKiBJc3N1ZXMgYSBzaW5nbGUgc2VuZE1hbnkgY2FsbCAoZGVmaVdpdGhkcmF3KSBhbmQgcmV0dXJucyB0aGUgb3BlcmF0aW9uSWRcbiAgICogYW5kIHR4UmVxdWVzdElkLiBUaGUgc3RhdGUgbWFjaGluZSBmb3Igd2l0aGRyYXdhbCBpcyBzaW1wbGVyIHRoYW4gZGVwb3NpdDpcbiAgICogQ1JFQVRFRCDihpIgV0lUSERSQVdfVFhfUkVRVUVTVEVEIOKGkiBXSVRIRFJBV19TSUdORUQg4oaSIFdJVEhEUkFXX0NPTkZJUk1FRCDihpIgQ09NUExFVEVEXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMudmF1bHRJZCAtIERlRmktc2VydmljZSB2YXVsdCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSBwYXJhbXMuYW1vdW50IC0gYW1vdW50IGluIGJhc2UgdW5pdHMgb2YgdGhlIHZhdWx0IHNoYXJlIHRva2VuXG4gICAqIEBwYXJhbSBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSAtIHJlcXVpcmVkIGZvciBob3Qgd2FsbGV0cywgb21pdCBmb3IgY3VzdG9keVxuICAgKi9cbiAgYXN5bmMgd2l0aGRyYXdGcm9tVmF1bHQocGFyYW1zOiBXaXRoZHJhd0Zyb21WYXVsdE9wdGlvbnMpOiBQcm9taXNlPFdpdGhkcmF3UmVzdWx0PiB7XG4gICAgaWYgKCFwYXJhbXMudmF1bHRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YXVsdElkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghcGFyYW1zLmFtb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aXRoZHJhd1Jlc3VsdCA9IGF3YWl0IHRoaXMud2FsbGV0LnNlbmRNYW55KHtcbiAgICAgIHR5cGU6ICdkZWZpV2l0aGRyYXcnLFxuICAgICAgZGVmaVBhcmFtczoge1xuICAgICAgICB2YXVsdElkOiBwYXJhbXMudmF1bHRJZCxcbiAgICAgICAgYW1vdW50OiBwYXJhbXMuYW1vdW50LFxuICAgICAgfSxcbiAgICAgIC4uLihwYXJhbXMud2FsbGV0UGFzc3BocmFzZSA/IHsgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgfSA6IHt9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gdGhpcy5leHRyYWN0VHhSZXF1ZXN0SWQod2l0aGRyYXdSZXN1bHQpO1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gdGhpcy5leHRyYWN0T3BlcmF0aW9uSWQod2l0aGRyYXdSZXN1bHQpO1xuXG4gICAgaWYgKCFvcGVyYXRpb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRpb25JZCBub3QgZm91bmQgaW4gd2l0aGRyYXcgdHhSZXF1ZXN0IHJlc3BvbnNlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgb3BlcmF0aW9uSWQsIHR4UmVxdWVzdElkIH07XG4gIH1cblxuICAvLyDilIDilIAgSW50ZXJuYWwgaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogRXh0cmFjdCB0eFJlcXVlc3RJZCBmcm9tIGEgc2VuZE1hbnkgcmVzdWx0LlxuICAgKiBzZW5kTWFueSByZXR1cm5zIGRpZmZlcmVudCBzaGFwZXMgZGVwZW5kaW5nIG9uIHdhbGxldCB0eXBlOlxuICAgKiAtIFRTUyBmdWxsOiB7IHR4UmVxdWVzdDogeyB0eFJlcXVlc3RJZCB9IH0gb3IgeyBwZW5kaW5nQXBwcm92YWwsIHR4UmVxdWVzdCB9XG4gICAqIC0gVFNTIGxpdGU6IHJlc3VsdCBmcm9tIHRzc1V0aWxzLnNlbmRUeFJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdFR4UmVxdWVzdElkKHNlbmRNYW55UmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB7XG4gICAgY29uc3QgdHhSZXF1ZXN0ID0gc2VuZE1hbnlSZXN1bHQudHhSZXF1ZXN0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eFJlcXVlc3Q/LnR4UmVxdWVzdElkKSB7XG4gICAgICByZXR1cm4gdHhSZXF1ZXN0LnR4UmVxdWVzdElkIGFzIHN0cmluZztcbiAgICB9XG4gICAgaWYgKHNlbmRNYW55UmVzdWx0LnR4UmVxdWVzdElkKSB7XG4gICAgICByZXR1cm4gc2VuZE1hbnlSZXN1bHQudHhSZXF1ZXN0SWQgYXMgc3RyaW5nO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4UmVxdWVzdElkIG5vdCBmb3VuZCBpbiBzZW5kTWFueSByZXNwb25zZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3Qgb3BlcmF0aW9uSWQgZnJvbSBhIHNlbmRNYW55IHJlc3VsdC5cbiAgICpcbiAgICogVGhlIFdQIHdyaXRlcyB0aGUgZGVmaS1zZXJ2aWNlLW1pbnRlZCBvcGVyYXRpb25JZCBpbnRvIHRoZSBidWlsdFxuICAgKiB0cmFuc2FjdGlvbidzIGBjb2luU3BlY2lmaWNgIChhbG9uZ3NpZGUgYGFzc2lnbmVkTm9uY2VgKSwgbm90IGludG8gdGhlXG4gICAqIGludGVudC4gUmVhZCBpdCBmcm9tIHRoZXJlOiB0aGUgYGZ1bGxgIGFwaVZlcnNpb24gc3VyZmFjZXMgaXQgYXRcbiAgICogYHRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5vcGVyYXRpb25JZGAsIHRoZSBgbGl0ZWAgdmVyc2lvblxuICAgKiBhdCBgdW5zaWduZWRUeHNbMF0uY29pblNwZWNpZmljLm9wZXJhdGlvbklkYC4gRmFsbCBiYWNrIHRvXG4gICAqIGBpbnRlbnQub3BlcmF0aW9uSWRgIGZvciBmb3J3YXJkLWNvbXBhdCBpbiBjYXNlIHRoZSBXUCBsYXRlciBhbHNvXG4gICAqIHBvcHVsYXRlcyB0aGUgaW50ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0T3BlcmF0aW9uSWQoc2VuZE1hbnlSZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBzZW5kTWFueVJlc3VsdC50eFJlcXVlc3QgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF0eFJlcXVlc3QpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZnVsbCBhcGlWZXJzaW9uOiB0cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMub3BlcmF0aW9uSWRcbiAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zIGFzIEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmdWxsVW5zaWduZWRUeCA9IHRyYW5zYWN0aW9ucz8uWzBdPy51bnNpZ25lZFR4IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZ1bGxDb2luU3BlY2lmaWMgPSBmdWxsVW5zaWduZWRUeD8uY29pblNwZWNpZmljIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChmdWxsQ29pblNwZWNpZmljPy5vcGVyYXRpb25JZCkge1xuICAgICAgcmV0dXJuIGZ1bGxDb2luU3BlY2lmaWMub3BlcmF0aW9uSWQgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIC8vIGxpdGUgYXBpVmVyc2lvbjogdW5zaWduZWRUeHNbMF0uY29pblNwZWNpZmljLm9wZXJhdGlvbklkXG4gICAgY29uc3QgdW5zaWduZWRUeHMgPSB0eFJlcXVlc3QudW5zaWduZWRUeHMgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxpdGVDb2luU3BlY2lmaWMgPSB1bnNpZ25lZFR4cz8uWzBdPy5jb2luU3BlY2lmaWMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGxpdGVDb2luU3BlY2lmaWM/Lm9wZXJhdGlvbklkKSB7XG4gICAgICByZXR1cm4gbGl0ZUNvaW5TcGVjaWZpYy5vcGVyYXRpb25JZCBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gZm9yd2FyZC1jb21wYXQ6IGludGVudC5vcGVyYXRpb25JZCAoaW4gY2FzZSB0aGUgV1AgbGF0ZXIgcG9wdWxhdGVzIHRoZSBpbnRlbnQpXG4gICAgY29uc3QgaW50ZW50ID0gdHhSZXF1ZXN0LmludGVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gaW50ZW50Py5vcGVyYXRpb25JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMge0BsaW5rIENvbmNyZXRlRGVwb3NpdFJlc3VsdH0gZnJvbSBhIGN1c3RvZGlhbCBzZW5kTWFueSByZXNwb25zZS5cbiAgICogQ29uY3JldGUgQlRDIGRlcG9zaXRzIHJldHVybiBhIGBwZW5kaW5nQXBwcm92YWxgIGluc3RlYWQgb2YgYSB0eFJlcXVlc3Qg4oCUXG4gICAqIHRocm93cyBpZiBgcGVuZGluZ0FwcHJvdmFsLmlkYCBpcyBhYnNlbnQsIGluZGljYXRpbmcgYW4gdW5leHBlY3RlZCBzaGFwZS5cbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdENvbmNyZXRlRGVwb3NpdFJlc3VsdChzZW5kTWFueVJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBDb25jcmV0ZURlcG9zaXRSZXN1bHQge1xuICAgIGNvbnN0IFNlbmRNYW55Q29uY3JldGVSZXNwb25zZSA9IHQudHlwZSh7XG4gICAgICBwZW5kaW5nQXBwcm92YWw6IHQuaW50ZXJzZWN0aW9uKFt0LnR5cGUoeyBpZDogdC5zdHJpbmcgfSksIHQucGFydGlhbCh7IHN0YXRlOiB0LnN0cmluZyB9KV0pLFxuICAgIH0pO1xuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVXaXRoQ29kZWMoU2VuZE1hbnlDb25jcmV0ZVJlc3BvbnNlLCBzZW5kTWFueVJlc3VsdCwgJ2RlZmktZGVwb3NpdCBzZW5kTWFueSByZXNwb25zZScpO1xuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nQXBwcm92YWxJZDogZGVjb2RlZC5wZW5kaW5nQXBwcm92YWwuaWQsXG4gICAgICBzdGF0ZTogZGVjb2RlZC5wZW5kaW5nQXBwcm92YWwuc3RhdGUgPz8gJ2F3YWl0aW5nU2lnbmF0dXJlJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVyYXRpb25zVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAvYXBpL2RlZmktc2VydmljZS92MS93YWxsZXRzLyR7dGhpcy53YWxsZXQuaWQoKX0vb3BlcmF0aW9uc2A7XG4gIH1cbn1cbiJdfQ==
@@ -13,6 +13,9 @@ export declare class NodeEnvironmentError extends BitGoJsError {
13
13
  export declare class UnsupportedCoinError extends BitGoJsError {
14
14
  constructor(coin: string);
15
15
  }
16
+ export declare class SafeMpcCeremonyUnsupportedError extends BitGoJsError {
17
+ constructor(coinFamily: string);
18
+ }
16
19
  export declare class AddressTypeChainMismatchError extends BitGoJsError {
17
20
  constructor(addressType: string, chain: number | string);
18
21
  }
@@ -94,7 +97,8 @@ export declare class ApiResponseError<ResponseBodyType = any> extends BitGoJsErr
94
97
  result?: ResponseBodyType;
95
98
  invalidToken?: boolean;
96
99
  needsOTP?: boolean;
97
- constructor(message: string, status: number, result?: ResponseBodyType, invalidToken?: boolean, needsOTP?: boolean);
100
+ requestId?: string;
101
+ constructor(message: string, status: number, result?: ResponseBodyType, invalidToken?: boolean, needsOTP?: boolean, requestId?: string);
98
102
  }
99
103
  /**
100
104
  * Interface for token approval information used in suspicious transaction detection
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/bitgo/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/bitgo/errors.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TxIntentMismatchApprovalError = exports.TxIntentMismatchContractError = exports.TxIntentMismatchRecipientError = exports.TxIntentMismatchError = exports.ApiResponseError = exports.NeedUserSignupError = exports.IncorrectPasswordError = exports.MissingEncryptedKeychainError = exports.InvalidTransactionError = exports.InvalidKeyPathError = exports.ErrorNoInputToRecover = exports.StellarFederationUserNotFoundError = exports.EthereumLibraryUnavailableError = exports.AddressGenerationError = exports.KeyRecoveryServiceError = exports.InvalidPaymentIdError = exports.InvalidMemoIdError = exports.BlockExplorerUnavailable = exports.MethodNotImplementedError = exports.WalletRecoveryUnsupported = exports.InvalidAddressDerivationPropertyError = exports.UnexpectedAddressError = exports.InvalidAddressVerificationObjectPropertyError = exports.InvalidAddressError = exports.UnsupportedAddressTypeError = exports.P2trMusig2UnsupportedError = exports.P2trUnsupportedError = exports.P2wshUnsupportedError = exports.P2shP2wshUnsupportedError = exports.AddressTypeChainMismatchError = exports.UnsupportedCoinError = exports.NodeEnvironmentError = exports.TlsConfigurationError = exports.BitGoJsError = void 0;
3
+ exports.TxIntentMismatchApprovalError = exports.TxIntentMismatchContractError = exports.TxIntentMismatchRecipientError = exports.TxIntentMismatchError = exports.ApiResponseError = exports.NeedUserSignupError = exports.IncorrectPasswordError = exports.MissingEncryptedKeychainError = exports.InvalidTransactionError = exports.InvalidKeyPathError = exports.ErrorNoInputToRecover = exports.StellarFederationUserNotFoundError = exports.EthereumLibraryUnavailableError = exports.AddressGenerationError = exports.KeyRecoveryServiceError = exports.InvalidPaymentIdError = exports.InvalidMemoIdError = exports.BlockExplorerUnavailable = exports.MethodNotImplementedError = exports.WalletRecoveryUnsupported = exports.InvalidAddressDerivationPropertyError = exports.UnexpectedAddressError = exports.InvalidAddressVerificationObjectPropertyError = exports.InvalidAddressError = exports.UnsupportedAddressTypeError = exports.P2trMusig2UnsupportedError = exports.P2trUnsupportedError = exports.P2wshUnsupportedError = exports.P2shP2wshUnsupportedError = exports.AddressTypeChainMismatchError = exports.SafeMpcCeremonyUnsupportedError = exports.UnsupportedCoinError = exports.NodeEnvironmentError = exports.TlsConfigurationError = exports.BitGoJsError = void 0;
4
4
  // Descriptive error types for common issues which may arise
5
5
  // during the operation of BitGoJS or BitGoExpress
6
6
  const bitgojsError_1 = require("../bitgojsError");
@@ -23,6 +23,12 @@ class UnsupportedCoinError extends bitgojsError_1.BitGoJsError {
23
23
  }
24
24
  }
25
25
  exports.UnsupportedCoinError = UnsupportedCoinError;
26
+ class SafeMpcCeremonyUnsupportedError extends bitgojsError_1.BitGoJsError {
27
+ constructor(coinFamily) {
28
+ super(`Cannot create Wallet Safe root keys for coin family '${coinFamily}': its TSS settings resolve to the legacy MPCv1 ceremony, which does not support safe root tagging (safeId). Enable MPCv2 for '${coinFamily}' before creating a safe with this root type.`);
29
+ }
30
+ }
31
+ exports.SafeMpcCeremonyUnsupportedError = SafeMpcCeremonyUnsupportedError;
26
32
  class AddressTypeChainMismatchError extends bitgojsError_1.BitGoJsError {
27
33
  constructor(addressType, chain) {
28
34
  super(`address type ${addressType} does not correspond to chain ${chain}`);
@@ -174,13 +180,14 @@ class NeedUserSignupError extends bitgojsError_1.BitGoJsError {
174
180
  }
175
181
  exports.NeedUserSignupError = NeedUserSignupError;
176
182
  class ApiResponseError extends bitgojsError_1.BitGoJsError {
177
- constructor(message, status, result, invalidToken, needsOTP) {
183
+ constructor(message, status, result, invalidToken, needsOTP, requestId) {
178
184
  super(message);
179
185
  this.message = message;
180
186
  this.status = status;
181
187
  this.result = result;
182
188
  this.invalidToken = invalidToken;
183
189
  this.needsOTP = needsOTP;
190
+ this.requestId = requestId;
184
191
  }
185
192
  }
186
193
  exports.ApiResponseError = ApiResponseError;
@@ -330,4 +337,4 @@ class TxIntentMismatchApprovalError extends TxIntentMismatchError {
330
337
  }
331
338
  }
332
339
  exports.TxIntentMismatchApprovalError = TxIntentMismatchApprovalError;
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQU90Qyw2RkFQQSwyQkFBWSxPQU9BO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLGdLQUFnSyxJQUFJLFNBQVMsQ0FDeE0sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU5ELG9EQU1DO0FBRUQsTUFBYSw2QkFBOEIsU0FBUSwyQkFBWTtJQUM3RCxZQUFZLFdBQW1CLEVBQUUsS0FBc0I7UUFDckQsS0FBSyxDQUFDLGdCQUFnQixXQUFXLGlDQUFpQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Q0FDRjtBQUpELHNFQUlDO0FBRUQsTUFBYSx5QkFBMEIsU0FBUSwyQkFBWTtJQUN6RCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLElBQUksc0NBQXNDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFKRCw4REFJQztBQUVELE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQUpE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YUFBYSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQXhCRCxzRUF3QkM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHFCQUFxQjtJQUd0RTs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNFLE9BQWUsRUFDZixFQUF1QyxFQUN2QyxRQUE2QixFQUM3QixLQUF5QixFQUN6QixhQUE0QixFQUM1QixhQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQXhCRCxzRUF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEZXNjcmlwdGl2ZSBlcnJvciB0eXBlcyBmb3IgY29tbW9uIGlzc3VlcyB3aGljaCBtYXkgYXJpc2Vcbi8vIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIEJpdEdvSlMgb3IgQml0R29FeHByZXNzXG5pbXBvcnQgeyBCaXRHb0pzRXJyb3IgfSBmcm9tICcuLi9iaXRnb2pzRXJyb3InO1xuaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25QYXJhbXMgfSBmcm9tICcuL2Jhc2VDb2luJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4vYmFzZUNvaW4vaUJhc2VDb2luJztcbmltcG9ydCB7IFNlbmRNYW55T3B0aW9ucyB9IGZyb20gJy4vd2FsbGV0JztcblxuLy8gcmUtZXhwb3J0IGZvciBiYWNrd2FyZHMgY29tcGF0XG5leHBvcnQgeyBCaXRHb0pzRXJyb3IgfTtcblxuZXhwb3J0IGNsYXNzIFRsc0NvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnVExTIGlzIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb2RlRW52aXJvbm1lbnRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnTk9ERV9FTlYgaXMgaW52YWxpZCBmb3IgdGhlIGN1cnJlbnQgYml0Z28gZW52aXJvbm1lbnQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRDb2luRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQ29pbiBvciB0b2tlbiB0eXBlICR7Y29pbn0gbm90IHN1cHBvcnRlZCBvciBub3QgY29tcGlsZWQuIFBsZWFzZSBiZSBzdXJlIHRoYXQgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgQml0R29KUy4gSWYgdXNpbmcgQGJpdGdvL3Nkay1hcGksIHBsZWFzZSBjb25maXJtIHlvdSBoYXZlIHJlZ2lzdGVyZWQgJHtjb2lufSBmaXJzdC5gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc1R5cGVDaGFpbk1pc21hdGNoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihhZGRyZXNzVHlwZTogc3RyaW5nLCBjaGFpbjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgc3VwZXIoYGFkZHJlc3MgdHlwZSAke2FkZHJlc3NUeXBlfSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGNoYWluICR7Y2hhaW59YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAyc2hQMndzaFVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJzaFAyd3NoIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAyd3NoVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJ3c2ggbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ0clVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3AydHIgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ0ck11c2lnMlVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3AydHJNdXNpZzIgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIGFkZHJlc3MgdHlwZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc0Vycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIGFkZHJlc3MnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NWZXJpZmljYXRpb25PYmplY3RQcm9wZXJ0eUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIGNoYWluIGFuZC9vciBpbmRleCBhcmUgaW52YWxpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRSZWNvdmVyeVVuc3VwcG9ydGVkIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICd3YWxsZXQgcmVjb3ZlcnkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0V4cGxvcmVyVW5hdmFpbGFibGUgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3RoaXJkLXBhcnR5IGJsb2NrZXhwbG9yZXIgbm90IHJlc3BvbmRpbmcnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZE1lbW9JZEVycm9yIGV4dGVuZHMgSW52YWxpZEFkZHJlc3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBtZW1vIGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQYXltZW50SWRFcnJvciBleHRlbmRzIEludmFsaWRBZGRyZXNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgcGF5bWVudCBpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXlSZWNvdmVyeVNlcnZpY2VFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAna2V5IHJlY292ZXJ5IHNlcnZpY2UgZW5jb3VudGVyZWQgYW4gZXJyb3InKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc0dlbmVyYXRpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyBnZW5lcmF0aW9uIGZhaWxlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdGhlcmV1bUxpYnJhcnlVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhY2thZ2VOYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgRXRoZXJldW0gbGlicmFyeSByZXF1aXJlZCBmb3Igb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBpbnN0YWxsIFwiJHtwYWNrYWdlTmFtZX1cIi5gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RlbGxhckZlZGVyYXRpb25Vc2VyTm90Rm91bmRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWNjb3VudCBub3QgZm91bmQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JOb0lucHV0VG9SZWNvdmVyIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdObyBpbnB1dCB0byByZWNvdmVyIC0gYWJvcnRpbmchJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRLZXlQYXRoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3Ioa2V5UGF0aDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGludmFsaWQga2V5cGF0aDogJHtrZXlQYXRofWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nRW5jcnlwdGVkS2V5Y2hhaW5FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdObyBlbmNyeXB0ZWQga2V5Y2hhaW5zIG9uIHRoaXMgd2FsbGV0LicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmNvcnJlY3RQYXNzd29yZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ0luY29ycmVjdCBwYXNzd29yZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZWVkVXNlclNpZ251cEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdVc2VyIHNpZ251cCBpcyByZXF1aXJlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXNwb25zZUVycm9yPFJlc3BvbnNlQm9keVR5cGUgPSBhbnk+IGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZTtcbiAgaW52YWxpZFRva2VuPzogYm9vbGVhbjtcbiAgbmVlZHNPVFA/OiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RhdHVzOiBudW1iZXIsXG4gICAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZSxcbiAgICBpbnZhbGlkVG9rZW4/OiBib29sZWFuLFxuICAgIG5lZWRzT1RQPzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgIHRoaXMuaW52YWxpZFRva2VuID0gaW52YWxpZFRva2VuO1xuICAgIHRoaXMubmVlZHNPVFAgPSBuZWVkc09UUDtcbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgdG9rZW4gYXBwcm92YWwgaW5mb3JtYXRpb24gdXNlZCBpbiBzdXNwaWNpb3VzIHRyYW5zYWN0aW9uIGRldGVjdGlvblxuICpcbiAqIEBpbnRlcmZhY2UgVG9rZW5BcHByb3ZhbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt0b2tlbk5hbWVdIC0gT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgdG9rZW5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0b2tlbkFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyBvZiB0aGUgdG9rZW4gYmVpbmcgYXBwcm92ZWRcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBhdXRob3JpemluZ0Ftb3VudCAtIFRoZSBhbW91bnQgYmVpbmcgYXV0aG9yaXplZCBmb3Igc3BlbmRpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdXRob3JpemluZ0FkZHJlc3MgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbkFwcHJvdmFsIHtcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xuICB0b2tlbkFkZHJlc3M6IHN0cmluZztcbiAgYXV0aG9yaXppbmdBbW91bnQ6IHsgdHlwZTogJ3VubGltaXRlZCcgfSB8IHsgdHlwZTogJ2xpbWl0ZWQnOyBhbW91bnQ6IG51bWJlciB9O1xuICBhdXRob3JpemluZ0FkZHJlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIG1pc21hdGNoZWQgcmVjaXBpZW50IGluZm9ybWF0aW9uIGRldGVjdGVkIGR1cmluZyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb25cbiAqXG4gKiBAaW50ZXJmYWNlIE1pc21hdGNoZWRSZWNpcGllbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIHJlY2lwaWVudCBhZGRyZXNzIHRoYXQgd2FzIGZvdW5kIGluIHRoZSB0cmFuc2FjdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgYmVpbmcgc2VudCB0byB0aGlzIHJlY2lwaWVudFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zfSBbZGF0YV0gLSBPcHRpb25hbCB0cmFuc2FjdGlvbiBkYXRhIG9yIHRva2VuIHRyYW5zZmVyIHBhcmFtZXRlcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdG9rZW5OYW1lXSAtIE9wdGlvbmFsIG5hbWUgb2YgdGhlIHRva2VuIGJlaW5nIHRyYW5zZmVycmVkXG4gKiBAcHJvcGVydHkge1Rva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXN9IFt0b2tlbkRhdGFdIC0gT3B0aW9uYWwgc3RydWN0dXJlZCB0b2tlbiB0cmFuc2ZlciBkYXRhXG4gKi9cbmV4cG9ydCB0eXBlIE1pc21hdGNoZWRSZWNpcGllbnQgPSBOb25OdWxsYWJsZTxTZW5kTWFueU9wdGlvbnNbJ3JlY2lwaWVudHMnXT5bMF07XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjb250cmFjdCBpbnRlcmFjdGlvbiBkYXRhIHBheWxvYWQgdXNlZCBpbiBzdXNwaWNpb3VzIHRyYW5zYWN0aW9uIGRldGVjdGlvblxuICpcbiAqIEBpbnRlcmZhY2UgQ29udHJhY3REYXRhUGF5bG9hZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyBiZWluZyBpbnRlcmFjdGVkIHdpdGhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByYXdDb250cmFjdFBheWxvYWQgLSBUaGUgcmF3IGNvbnRyYWN0IHBheWxvYWQgaW4gc2VyaWFsaXplZCBmb3JtIHNwZWNpZmljIHRvIHRoZSBibG9ja2NoYWluXG4gKiBAcHJvcGVydHkge3Vua25vd259IGRlY29kZWRDb250cmFjdFBheWxvYWQgLSBUaGUgZGVjb2RlZCBjb250cmFjdCBwYXlsb2FkLCBzdHJ1Y3R1cmUgdmFyaWVzIGJ5IGNvaW4vY2hhaW4gaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdERhdGFQYXlsb2FkIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICAvLyBUaGUgcmF3IGNvbnRyYWN0IHBheWxvYWQgaW4gc2VyaWFsaXplZCBmb3JtIG9mIHRoZSBjaGFpblxuICByYXdDb250cmFjdFBheWxvYWQ6IHN0cmluZztcbiAgLy8gVG8gYmUgZGVmaW5lZCBvbiBhIHBlci1jb2luIGJhc2lzXG4gIGRlY29kZWRDb250cmFjdFBheWxvYWQ6IHVua25vd247XG59XG5cbi8qKlxuICogQmFzZSBlcnJvciBjbGFzcyBmb3IgdHJhbnNhY3Rpb24gaW50ZW50IG1pc21hdGNoIGRldGVjdGlvblxuICpcbiAqIFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gYSB0cmFuc2FjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdXNlcidzIG9yaWdpbmFsIGludGVudCxcbiAqIGluZGljYXRpbmcgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlcyBvciBtYWxpY2lvdXMgbW9kaWZpY2F0aW9ucy5cbiAqXG4gKiBAY2xhc3MgVHhJbnRlbnRNaXNtYXRjaEVycm9yXG4gKiBAZXh0ZW5kcyB7Qml0R29Kc0Vycm9yfVxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlciBmb3IgdHJhY2tpbmdcbiAqIEBwcm9wZXJ0eSB7VHJhbnNhY3Rpb25QYXJhbXNbXX0gdHhQYXJhbXMgLSBBcnJheSBvZiB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhbmFseXplZFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gVGhlIHJhdyB0cmFuc2FjdGlvbiBpbiBoZXhhZGVjaW1hbCBmb3JtYXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEV4cGxhbmF0aW9uIC0gU3RyaW5naWZpZWQgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXTtcbiAgcHVibGljIHJlYWRvbmx5IHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSB0eEV4cGxhbmF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHhJbnRlbnRNaXNtYXRjaEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHt1bmtub3dufSB0eEV4cGxhbmF0aW9uIC0gVHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdLFxuICAgIHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHhFeHBsYW5hdGlvbj86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMudHhQYXJhbXMgPSB0eFBhcmFtcztcbiAgICB0aGlzLnR4SGV4ID0gdHhIZXg7XG4gICAgdGhpcy50eEV4cGxhbmF0aW9uID0gdHhFeHBsYW5hdGlvbiA/IFR4SW50ZW50TWlzbWF0Y2hFcnJvci5zYWZlU3RyaW5naWZ5KHR4RXhwbGFuYXRpb24pIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhZmVseSBzdHJpbmdpZnkgYSB2YWx1ZSB3aXRoIEJpZ0ludCBzdXBwb3J0XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHN0cmluZ2lmeVxuICAgKiBAcmV0dXJucyBKU09OIHN0cmluZyB3aXRoIEJpZ0ludHMgY29udmVydGVkIHRvIHN0cmluZ3NcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhZmVTdHJpbmdpZnkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgKF8sIHYpID0+ICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcgPyB2LnRvU3RyaW5nKCkgOiB2KSwgMik7XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGdldCB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiBmcm9tIGEgY29pbidzIGV4cGxhaW5UcmFuc2FjdGlvbiBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSBjb2luIC0gQ29pbiBpbnN0YW5jZSBpbXBsZW1lbnRpbmcgSUJhc2VDb2luXG4gICAqIEBwYXJhbSB0eFByZWJ1aWxkIC0gVHJhbnNhY3Rpb24gcHJlYnVpbGQgY29udGFpbmluZyB0eEhleCBhbmQgdHhJbmZvXG4gICAqIEByZXR1cm5zIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIG9iamVjdCBvciB1bmRlZmluZWRcbiAgICovXG4gIHN0YXRpYyBhc3luYyB0cnlHZXRUeEV4cGxhbmF0aW9uKFxuICAgIGNvaW46IElCYXNlQ29pbixcbiAgICB0eFByZWJ1aWxkOiB7IHR4SGV4Pzogc3RyaW5nOyB0eEluZm8/OiB1bmtub3duIH1cbiAgKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKCF0eFByZWJ1aWxkLnR4SGV4KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEhleDogdHhQcmVidWlsZC50eEhleCxcbiAgICAgICAgdHhJbmZvOiB0eFByZWJ1aWxkLnR4SW5mbyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiAnRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uJyxcbiAgICAgICAgdHhIZXg6IHR4UHJlYnVpbGQudHhIZXgsXG4gICAgICAgIGRldGFpbHM6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdHJhbnNhY3Rpb24gcmVjaXBpZW50cyBkb24ndCBtYXRjaCB0aGUgdXNlcidzIGludGVudFxuICpcbiAqIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGNvbnRhaW5zIHJlY2lwaWVudHMgb3IgYW1vdW50cyB0aGF0IGRpZmZlclxuICogZnJvbSB3aGF0IHRoZSB1c2VyIG9yaWdpbmFsbHkgaW50ZW5kZWQgdG8gc2VuZC5cbiAqXG4gKiBAY2xhc3MgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yXG4gKiBAZXh0ZW5kcyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfVxuICogQHByb3BlcnR5IHtNaXNtYXRjaGVkUmVjaXBpZW50W119IG1pc21hdGNoZWRSZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB0aGF0IGRvbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IgZXh0ZW5kcyBUeEludGVudE1pc21hdGNoRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgbWlzbWF0Y2hlZFJlY2lwaWVudHM6IE1pc21hdGNoZWRSZWNpcGllbnRbXTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIHJlY2lwaWVudCBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtNaXNtYXRjaGVkUmVjaXBpZW50W119IG1pc21hdGNoZWRSZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB0aGF0IGRvbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG1pc21hdGNoZWRSZWNpcGllbnRzOiBNaXNtYXRjaGVkUmVjaXBpZW50W10sXG4gICAgdHhFeHBsYW5hdGlvbj86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgaWQsIHR4UGFyYW1zLCB0eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gICAgdGhpcy5taXNtYXRjaGVkUmVjaXBpZW50cyA9IG1pc21hdGNoZWRSZWNpcGllbnRzO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gY29udHJhY3QgaW50ZXJhY3Rpb24gZG9lc24ndCBtYXRjaCB0aGUgdXNlcidzIGludGVudFxuICpcbiAqIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gYSB0cmFuc2FjdGlvbiBpbnRlcmFjdHMgd2l0aCBhIHNtYXJ0IGNvbnRyYWN0IGJ1dCB0aGVcbiAqIGNvbnRyYWN0IGNhbGwgZGF0YSBvciBtZXRob2QgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSB1c2VyIGludGVuZGVkLlxuICpcbiAqIEBjbGFzcyBUeEludGVudE1pc21hdGNoQ29udHJhY3RFcnJvclxuICogQGV4dGVuZHMge1R4SW50ZW50TWlzbWF0Y2hFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7Q29udHJhY3REYXRhUGF5bG9hZH0gbWlzbWF0Y2hlZERhdGFQYXlsb2FkIC0gVGhlIGNvbnRyYWN0IGludGVyYWN0aW9uIGRhdGEgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoQ29udHJhY3RFcnJvciBleHRlbmRzIFR4SW50ZW50TWlzbWF0Y2hFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBtaXNtYXRjaGVkRGF0YVBheWxvYWQ6IENvbnRyYWN0RGF0YVBheWxvYWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHhJbnRlbnRNaXNtYXRjaENvbnRyYWN0RXJyb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGNvbnRyYWN0IGludGVudCBtaXNtYXRjaFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkfSBpZCAtIFRyYW5zYWN0aW9uIElEIG9yIHJlcXVlc3QgdHJhY2VyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QYXJhbXNbXX0gdHhQYXJhbXMgLSBUcmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhbmFseXplZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhIZXggLSBSYXcgdHJhbnNhY3Rpb24gaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0ge0NvbnRyYWN0RGF0YVBheWxvYWR9IG1pc21hdGNoZWREYXRhUGF5bG9hZCAtIFRoZSBjb250cmFjdCBpbnRlcmFjdGlvbiBkYXRhIHRoYXQgZG9lc24ndCBtYXRjaCB1c2VyIGludGVudFxuICAgKiBAcGFyYW0ge3Vua25vd259IHR4RXhwbGFuYXRpb24gLSBUcmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQsXG4gICAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW10sXG4gICAgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBtaXNtYXRjaGVkRGF0YVBheWxvYWQ6IENvbnRyYWN0RGF0YVBheWxvYWQsXG4gICAgdHhFeHBsYW5hdGlvbj86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgaWQsIHR4UGFyYW1zLCB0eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gICAgdGhpcy5taXNtYXRjaGVkRGF0YVBheWxvYWQgPSBtaXNtYXRjaGVkRGF0YVBheWxvYWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0b2tlbiBhcHByb3ZhbCBkb2Vzbid0IG1hdGNoIHRoZSB1c2VyJ3MgaW50ZW50XG4gKlxuICogVGhpcyBlcnJvciBvY2N1cnMgd2hlbiBhIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGEgdG9rZW4gYXBwcm92YWwgdGhhdCB0aGUgdXNlclxuICogZGlkIG5vdCBpbnRlbmQgdG8gYXV0aG9yaXplLCBwb3RlbnRpYWxseSBpbmRpY2F0aW5nIG1hbGljaW91cyBhY3Rpdml0eS5cbiAqXG4gKiBAY2xhc3MgVHhJbnRlbnRNaXNtYXRjaEFwcHJvdmFsRXJyb3JcbiAqIEBleHRlbmRzIHtUeEludGVudE1pc21hdGNoRXJyb3J9XG4gKiBAcHJvcGVydHkge1Rva2VuQXBwcm92YWx9IHRva2VuQXBwcm92YWwgLSBEZXRhaWxzIG9mIHRoZSB0b2tlbiBhcHByb3ZhbCB0aGF0IGRvZXNuJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hBcHByb3ZhbEVycm9yIGV4dGVuZHMgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQXBwcm92YWw6IFRva2VuQXBwcm92YWw7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHhJbnRlbnRNaXNtYXRjaEFwcHJvdmFsRXJyb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGFwcHJvdmFsIGludGVudCBtaXNtYXRjaFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkfSBpZCAtIFRyYW5zYWN0aW9uIElEIG9yIHJlcXVlc3QgdHJhY2VyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QYXJhbXNbXX0gdHhQYXJhbXMgLSBUcmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhbmFseXplZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhIZXggLSBSYXcgdHJhbnNhY3Rpb24gaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0ge1Rva2VuQXBwcm92YWx9IHRva2VuQXBwcm92YWwgLSBEZXRhaWxzIG9mIHRoZSB0b2tlbiBhcHByb3ZhbCB0aGF0IGRvZXNuJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAgICogQHBhcmFtIHt1bmtub3dufSB0eEV4cGxhbmF0aW9uIC0gVHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdLFxuICAgIHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdG9rZW5BcHByb3ZhbDogVG9rZW5BcHByb3ZhbCxcbiAgICB0eEV4cGxhbmF0aW9uPzogdW5rbm93blxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBpZCwgdHhQYXJhbXMsIHR4SGV4LCB0eEV4cGxhbmF0aW9uKTtcbiAgICB0aGlzLnRva2VuQXBwcm92YWwgPSB0b2tlbkFwcHJvdmFsO1xuICB9XG59XG4iXX0=
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQU90Qyw2RkFQQSwyQkFBWSxPQU9BO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLGdLQUFnSyxJQUFJLFNBQVMsQ0FDeE0sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU5ELG9EQU1DO0FBRUQsTUFBYSwrQkFBZ0MsU0FBUSwyQkFBWTtJQUMvRCxZQUFtQixVQUFrQjtRQUNuQyxLQUFLLENBQ0gsd0RBQXdELFVBQVUsa0lBQWtJLFVBQVUsK0NBQStDLENBQzlQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCwwRUFNQztBQUVELE1BQWEsNkJBQThCLFNBQVEsMkJBQVk7SUFDN0QsWUFBWSxXQUFtQixFQUFFLEtBQXNCO1FBQ3JELEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxpQ0FBaUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFKRCxzRUFJQztBQUVELE1BQWEseUJBQTBCLFNBQVEsMkJBQVk7SUFDekQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7SUFDM0Qs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QUNILE1BQWEsNkJBQThCLFNBQVEscUJBQXFCO0lBR3RFOzs7Ozs7Ozs7T0FTRztJQUNILFlBQ0UsT0FBZSxFQUNmLEVBQXVDLEVBQ3ZDLFFBQTZCLEVBQzdCLEtBQXlCLEVBQ3pCLHFCQUEwQyxFQUMxQyxhQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUF4QkQsc0VBd0JDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxxQkFBcUI7SUFHdEU7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFDRSxPQUFlLEVBQ2YsRUFBdUMsRUFDdkMsUUFBNkIsRUFDN0IsS0FBeUIsRUFDekIsYUFBNEIsRUFDNUIsYUFBdUI7UUFFdkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUF4QkQsc0VBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVzY3JpcHRpdmUgZXJyb3IgdHlwZXMgZm9yIGNvbW1vbiBpc3N1ZXMgd2hpY2ggbWF5IGFyaXNlXG4vLyBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiBCaXRHb0pTIG9yIEJpdEdvRXhwcmVzc1xuaW1wb3J0IHsgQml0R29Kc0Vycm9yIH0gZnJvbSAnLi4vYml0Z29qc0Vycm9yJztcbmltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2VDb2luL2lCYXNlQ29pbic7XG5pbXBvcnQgeyBTZW5kTWFueU9wdGlvbnMgfSBmcm9tICcuL3dhbGxldCc7XG5cbi8vIHJlLWV4cG9ydCBmb3IgYmFja3dhcmRzIGNvbXBhdFxuZXhwb3J0IHsgQml0R29Kc0Vycm9yIH07XG5cbmV4cG9ydCBjbGFzcyBUbHNDb25maWd1cmF0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ1RMUyBpcyBjb25maWd1cmF0aW9uIGlzIGludmFsaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm9kZUVudmlyb25tZW50RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05PREVfRU5WIGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJpdGdvIGVudmlyb25tZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkQ29pbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW46IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYENvaW4gb3IgdG9rZW4gdHlwZSAke2NvaW59IG5vdCBzdXBwb3J0ZWQgb3Igbm90IGNvbXBpbGVkLiBQbGVhc2UgYmUgc3VyZSB0aGF0IHlvdSBhcmUgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEJpdEdvSlMuIElmIHVzaW5nIEBiaXRnby9zZGstYXBpLCBwbGVhc2UgY29uZmlybSB5b3UgaGF2ZSByZWdpc3RlcmVkICR7Y29pbn0gZmlyc3QuYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNhZmVNcGNDZXJlbW9ueVVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbkZhbWlseTogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQ2Fubm90IGNyZWF0ZSBXYWxsZXQgU2FmZSByb290IGtleXMgZm9yIGNvaW4gZmFtaWx5ICcke2NvaW5GYW1pbHl9JzogaXRzIFRTUyBzZXR0aW5ncyByZXNvbHZlIHRvIHRoZSBsZWdhY3kgTVBDdjEgY2VyZW1vbnksIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgc2FmZSByb290IHRhZ2dpbmcgKHNhZmVJZCkuIEVuYWJsZSBNUEN2MiBmb3IgJyR7Y29pbkZhbWlseX0nIGJlZm9yZSBjcmVhdGluZyBhIHNhZmUgd2l0aCB0aGlzIHJvb3QgdHlwZS5gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc1R5cGVDaGFpbk1pc21hdGNoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihhZGRyZXNzVHlwZTogc3RyaW5nLCBjaGFpbjogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgc3VwZXIoYGFkZHJlc3MgdHlwZSAke2FkZHJlc3NUeXBlfSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGNoYWluICR7Y2hhaW59YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAyc2hQMndzaFVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJzaFAyd3NoIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAyd3NoVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJ3c2ggbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ0clVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3AydHIgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ0ck11c2lnMlVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3AydHJNdXNpZzIgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIGFkZHJlc3MgdHlwZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc0Vycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIGFkZHJlc3MnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NWZXJpZmljYXRpb25PYmplY3RQcm9wZXJ0eUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIGNoYWluIGFuZC9vciBpbmRleCBhcmUgaW52YWxpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRSZWNvdmVyeVVuc3VwcG9ydGVkIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICd3YWxsZXQgcmVjb3ZlcnkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0V4cGxvcmVyVW5hdmFpbGFibGUgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3RoaXJkLXBhcnR5IGJsb2NrZXhwbG9yZXIgbm90IHJlc3BvbmRpbmcnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZE1lbW9JZEVycm9yIGV4dGVuZHMgSW52YWxpZEFkZHJlc3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBtZW1vIGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQYXltZW50SWRFcnJvciBleHRlbmRzIEludmFsaWRBZGRyZXNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgcGF5bWVudCBpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXlSZWNvdmVyeVNlcnZpY2VFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAna2V5IHJlY292ZXJ5IHNlcnZpY2UgZW5jb3VudGVyZWQgYW4gZXJyb3InKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc0dlbmVyYXRpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyBnZW5lcmF0aW9uIGZhaWxlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdGhlcmV1bUxpYnJhcnlVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhY2thZ2VOYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgRXRoZXJldW0gbGlicmFyeSByZXF1aXJlZCBmb3Igb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBpbnN0YWxsIFwiJHtwYWNrYWdlTmFtZX1cIi5gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RlbGxhckZlZGVyYXRpb25Vc2VyTm90Rm91bmRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWNjb3VudCBub3QgZm91bmQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JOb0lucHV0VG9SZWNvdmVyIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdObyBpbnB1dCB0byByZWNvdmVyIC0gYWJvcnRpbmchJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRLZXlQYXRoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3Ioa2V5UGF0aDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGludmFsaWQga2V5cGF0aDogJHtrZXlQYXRofWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nRW5jcnlwdGVkS2V5Y2hhaW5FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdObyBlbmNyeXB0ZWQga2V5Y2hhaW5zIG9uIHRoaXMgd2FsbGV0LicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmNvcnJlY3RQYXNzd29yZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ0luY29ycmVjdCBwYXNzd29yZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZWVkVXNlclNpZ251cEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdVc2VyIHNpZ251cCBpcyByZXF1aXJlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXNwb25zZUVycm9yPFJlc3BvbnNlQm9keVR5cGUgPSBhbnk+IGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZTtcbiAgaW52YWxpZFRva2VuPzogYm9vbGVhbjtcbiAgbmVlZHNPVFA/OiBib29sZWFuO1xuICAvLyBFY2hvZWQgYmFjayB2aWEgdGhlIGBSZXF1ZXN0LUlEYCByZXNwb25zZSBoZWFkZXIgKHNlZSBsb2dnaW5nLWV4cHJlc3MncyBgYmVnaW5Mb2dnaW5nYCksXG4gIC8vIHNvIGl0IGNhbiBiZSB1c2VkIHRvIGNvcnJlbGF0ZSB0aGlzIGVycm9yIHdpdGggdGhlIHNlcnZlci1zaWRlIHJlcXVlc3QgbG9ncy5cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RhdHVzOiBudW1iZXIsXG4gICAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZSxcbiAgICBpbnZhbGlkVG9rZW4/OiBib29sZWFuLFxuICAgIG5lZWRzT1RQPzogYm9vbGVhbixcbiAgICByZXF1ZXN0SWQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICB0aGlzLmludmFsaWRUb2tlbiA9IGludmFsaWRUb2tlbjtcbiAgICB0aGlzLm5lZWRzT1RQID0gbmVlZHNPVFA7XG4gICAgdGhpcy5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRva2VuIGFwcHJvdmFsIGluZm9ybWF0aW9uIHVzZWQgaW4gc3VzcGljaW91cyB0cmFuc2FjdGlvbiBkZXRlY3Rpb25cbiAqXG4gKiBAaW50ZXJmYWNlIFRva2VuQXBwcm92YWxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdG9rZW5OYW1lXSAtIE9wdGlvbmFsIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhlIHRva2VuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG9rZW5BZGRyZXNzIC0gVGhlIGNvbnRyYWN0IGFkZHJlc3Mgb2YgdGhlIHRva2VuIGJlaW5nIGFwcHJvdmVkXG4gKiBAcHJvcGVydHkge09iamVjdH0gYXV0aG9yaXppbmdBbW91bnQgLSBUaGUgYW1vdW50IGJlaW5nIGF1dGhvcml6ZWQgZm9yIHNwZW5kaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXV0aG9yaXppbmdBZGRyZXNzIC0gVGhlIGFkZHJlc3MgYmVpbmcgYXV0aG9yaXplZCB0byBzcGVuZCB0aGUgdG9rZW5zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5BcHByb3ZhbCB7XG4gIHRva2VuTmFtZT86IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGF1dGhvcml6aW5nQW1vdW50OiB7IHR5cGU6ICd1bmxpbWl0ZWQnIH0gfCB7IHR5cGU6ICdsaW1pdGVkJzsgYW1vdW50OiBudW1iZXIgfTtcbiAgYXV0aG9yaXppbmdBZGRyZXNzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBtaXNtYXRjaGVkIHJlY2lwaWVudCBpbmZvcm1hdGlvbiBkZXRlY3RlZCBkdXJpbmcgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uXG4gKlxuICogQGludGVyZmFjZSBNaXNtYXRjaGVkUmVjaXBpZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzcyAtIFRoZSByZWNpcGllbnQgYWRkcmVzcyB0aGF0IHdhcyBmb3VuZCBpbiB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhbW91bnQgLSBUaGUgYW1vdW50IGJlaW5nIHNlbnQgdG8gdGhpcyByZWNpcGllbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtc30gW2RhdGFdIC0gT3B0aW9uYWwgdHJhbnNhY3Rpb24gZGF0YSBvciB0b2tlbiB0cmFuc2ZlciBwYXJhbWV0ZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rva2VuTmFtZV0gLSBPcHRpb25hbCBuYW1lIG9mIHRoZSB0b2tlbiBiZWluZyB0cmFuc2ZlcnJlZFxuICogQHByb3BlcnR5IHtUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zfSBbdG9rZW5EYXRhXSAtIE9wdGlvbmFsIHN0cnVjdHVyZWQgdG9rZW4gdHJhbnNmZXIgZGF0YVxuICovXG5leHBvcnQgdHlwZSBNaXNtYXRjaGVkUmVjaXBpZW50ID0gTm9uTnVsbGFibGU8U2VuZE1hbnlPcHRpb25zWydyZWNpcGllbnRzJ10+WzBdO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgY29udHJhY3QgaW50ZXJhY3Rpb24gZGF0YSBwYXlsb2FkIHVzZWQgaW4gc3VzcGljaW91cyB0cmFuc2FjdGlvbiBkZXRlY3Rpb25cbiAqXG4gKiBAaW50ZXJmYWNlIENvbnRyYWN0RGF0YVBheWxvYWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGNvbnRyYWN0IGFkZHJlc3MgYmVpbmcgaW50ZXJhY3RlZCB3aXRoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmF3Q29udHJhY3RQYXlsb2FkIC0gVGhlIHJhdyBjb250cmFjdCBwYXlsb2FkIGluIHNlcmlhbGl6ZWQgZm9ybSBzcGVjaWZpYyB0byB0aGUgYmxvY2tjaGFpblxuICogQHByb3BlcnR5IHt1bmtub3dufSBkZWNvZGVkQ29udHJhY3RQYXlsb2FkIC0gVGhlIGRlY29kZWQgY29udHJhY3QgcGF5bG9hZCwgc3RydWN0dXJlIHZhcmllcyBieSBjb2luL2NoYWluIGltcGxlbWVudGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3REYXRhUGF5bG9hZCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgLy8gVGhlIHJhdyBjb250cmFjdCBwYXlsb2FkIGluIHNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgY2hhaW5cbiAgcmF3Q29udHJhY3RQYXlsb2FkOiBzdHJpbmc7XG4gIC8vIFRvIGJlIGRlZmluZWQgb24gYSBwZXItY29pbiBiYXNpc1xuICBkZWNvZGVkQ29udHJhY3RQYXlsb2FkOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEJhc2UgZXJyb3IgY2xhc3MgZm9yIHRyYW5zYWN0aW9uIGludGVudCBtaXNtYXRjaCBkZXRlY3Rpb25cbiAqXG4gKiBUaGlzIGVycm9yIGlzIHRocm93biB3aGVuIGEgdHJhbnNhY3Rpb24gZG9lcyBub3QgbWF0Y2ggdGhlIHVzZXIncyBvcmlnaW5hbCBpbnRlbnQsXG4gKiBpbmRpY2F0aW5nIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgb3IgbWFsaWNpb3VzIG1vZGlmaWNhdGlvbnMuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hFcnJvclxuICogQGV4dGVuZHMge0JpdEdvSnNFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXIgZm9yIHRyYWNraW5nXG4gKiBAcHJvcGVydHkge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFRoZSByYXcgdHJhbnNhY3Rpb24gaW4gaGV4YWRlY2ltYWwgZm9ybWF0XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhFeHBsYW5hdGlvbiAtIFN0cmluZ2lmaWVkIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW107XG4gIHB1YmxpYyByZWFkb25seSB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdHhFeHBsYW5hdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hFcnJvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnR4UGFyYW1zID0gdHhQYXJhbXM7XG4gICAgdGhpcy50eEhleCA9IHR4SGV4O1xuICAgIHRoaXMudHhFeHBsYW5hdGlvbiA9IHR4RXhwbGFuYXRpb24gPyBUeEludGVudE1pc21hdGNoRXJyb3Iuc2FmZVN0cmluZ2lmeSh0eEV4cGxhbmF0aW9uKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWZlbHkgc3RyaW5naWZ5IGEgdmFsdWUgd2l0aCBCaWdJbnQgc3VwcG9ydFxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBzdHJpbmdpZnlcbiAgICogQHJldHVybnMgSlNPTiBzdHJpbmcgd2l0aCBCaWdJbnRzIGNvbnZlcnRlZCB0byBzdHJpbmdzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzYWZlU3RyaW5naWZ5KHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIChfLCB2KSA9PiAodHlwZW9mIHYgPT09ICdiaWdpbnQnID8gdi50b1N0cmluZygpIDogdiksIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBnZXQgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gZnJvbSBhIGNvaW4ncyBleHBsYWluVHJhbnNhY3Rpb24gbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gY29pbiAtIENvaW4gaW5zdGFuY2UgaW1wbGVtZW50aW5nIElCYXNlQ29pblxuICAgKiBAcGFyYW0gdHhQcmVidWlsZCAtIFRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbnRhaW5pbmcgdHhIZXggYW5kIHR4SW5mb1xuICAgKiBAcmV0dXJucyBUcmFuc2FjdGlvbiBleHBsYW5hdGlvbiBvYmplY3Qgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgdHJ5R2V0VHhFeHBsYW5hdGlvbihcbiAgICBjb2luOiBJQmFzZUNvaW4sXG4gICAgdHhQcmVidWlsZDogeyB0eEhleD86IHN0cmluZzsgdHhJbmZvPzogdW5rbm93biB9XG4gICk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICghdHhQcmVidWlsZC50eEhleCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHR4UHJlYnVpbGQudHhIZXgsXG4gICAgICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvcjogJ0ZhaWxlZCB0byBwYXJzZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbicsXG4gICAgICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgICAgICBkZXRhaWxzOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIHRyYW5zYWN0aW9uIHJlY2lwaWVudHMgZG9uJ3QgbWF0Y2ggdGhlIHVzZXIncyBpbnRlbnRcbiAqXG4gKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBjb250YWlucyByZWNpcGllbnRzIG9yIGFtb3VudHMgdGhhdCBkaWZmZXJcbiAqIGZyb20gd2hhdCB0aGUgdXNlciBvcmlnaW5hbGx5IGludGVuZGVkIHRvIHNlbmQuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvclxuICogQGV4dGVuZHMge1R4SW50ZW50TWlzbWF0Y2hFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7TWlzbWF0Y2hlZFJlY2lwaWVudFtdfSBtaXNtYXRjaGVkUmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgdGhhdCBkb24ndCBtYXRjaCB1c2VyIGludGVudFxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGV4dGVuZHMgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IG1pc21hdGNoZWRSZWNpcGllbnRzOiBNaXNtYXRjaGVkUmVjaXBpZW50W107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSByZWNpcGllbnQgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7TWlzbWF0Y2hlZFJlY2lwaWVudFtdfSBtaXNtYXRjaGVkUmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgdGhhdCBkb24ndCBtYXRjaCB1c2VyIGludGVudFxuICAgKiBAcGFyYW0ge3Vua25vd259IHR4RXhwbGFuYXRpb24gLSBUcmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQsXG4gICAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW10sXG4gICAgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBtaXNtYXRjaGVkUmVjaXBpZW50czogTWlzbWF0Y2hlZFJlY2lwaWVudFtdLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIGlkLCB0eFBhcmFtcywgdHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICAgIHRoaXMubWlzbWF0Y2hlZFJlY2lwaWVudHMgPSBtaXNtYXRjaGVkUmVjaXBpZW50cztcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGNvbnRyYWN0IGludGVyYWN0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhlIHVzZXIncyBpbnRlbnRcbiAqXG4gKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIGEgdHJhbnNhY3Rpb24gaW50ZXJhY3RzIHdpdGggYSBzbWFydCBjb250cmFjdCBidXQgdGhlXG4gKiBjb250cmFjdCBjYWxsIGRhdGEgb3IgbWV0aG9kIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgdXNlciBpbnRlbmRlZC5cbiAqXG4gKiBAY2xhc3MgVHhJbnRlbnRNaXNtYXRjaENvbnRyYWN0RXJyb3JcbiAqIEBleHRlbmRzIHtUeEludGVudE1pc21hdGNoRXJyb3J9XG4gKiBAcHJvcGVydHkge0NvbnRyYWN0RGF0YVBheWxvYWR9IG1pc21hdGNoZWREYXRhUGF5bG9hZCAtIFRoZSBjb250cmFjdCBpbnRlcmFjdGlvbiBkYXRhIHRoYXQgZG9lc24ndCBtYXRjaCB1c2VyIGludGVudFxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaENvbnRyYWN0RXJyb3IgZXh0ZW5kcyBUeEludGVudE1pc21hdGNoRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgbWlzbWF0Y2hlZERhdGFQYXlsb2FkOiBDb250cmFjdERhdGFQYXlsb2FkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hDb250cmFjdEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBjb250cmFjdCBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtDb250cmFjdERhdGFQYXlsb2FkfSBtaXNtYXRjaGVkRGF0YVBheWxvYWQgLSBUaGUgY29udHJhY3QgaW50ZXJhY3Rpb24gZGF0YSB0aGF0IGRvZXNuJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAgICogQHBhcmFtIHt1bmtub3dufSB0eEV4cGxhbmF0aW9uIC0gVHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdLFxuICAgIHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbWlzbWF0Y2hlZERhdGFQYXlsb2FkOiBDb250cmFjdERhdGFQYXlsb2FkLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIGlkLCB0eFBhcmFtcywgdHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICAgIHRoaXMubWlzbWF0Y2hlZERhdGFQYXlsb2FkID0gbWlzbWF0Y2hlZERhdGFQYXlsb2FkO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdG9rZW4gYXBwcm92YWwgZG9lc24ndCBtYXRjaCB0aGUgdXNlcidzIGludGVudFxuICpcbiAqIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gYSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHRva2VuIGFwcHJvdmFsIHRoYXQgdGhlIHVzZXJcbiAqIGRpZCBub3QgaW50ZW5kIHRvIGF1dGhvcml6ZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyBtYWxpY2lvdXMgYWN0aXZpdHkuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hBcHByb3ZhbEVycm9yXG4gKiBAZXh0ZW5kcyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfVxuICogQHByb3BlcnR5IHtUb2tlbkFwcHJvdmFsfSB0b2tlbkFwcHJvdmFsIC0gRGV0YWlscyBvZiB0aGUgdG9rZW4gYXBwcm92YWwgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoQXBwcm92YWxFcnJvciBleHRlbmRzIFR4SW50ZW50TWlzbWF0Y2hFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkFwcHJvdmFsOiBUb2tlbkFwcHJvdmFsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hBcHByb3ZhbEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBhcHByb3ZhbCBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtUb2tlbkFwcHJvdmFsfSB0b2tlbkFwcHJvdmFsIC0gRGV0YWlscyBvZiB0aGUgdG9rZW4gYXBwcm92YWwgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRva2VuQXBwcm92YWw6IFRva2VuQXBwcm92YWwsXG4gICAgdHhFeHBsYW5hdGlvbj86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgaWQsIHR4UGFyYW1zLCB0eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gICAgdGhpcy50b2tlbkFwcHJvdmFsID0gdG9rZW5BcHByb3ZhbDtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/keychains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAElB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,mCAAmC,EACpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAkC,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAEzB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAKjD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcxD;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB1E;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiD9E;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAgB3D;;;;;;;;OAQG;IACG,4BAA4B,CAAC,MAAM,GAAE,mCAAwC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BvG;;;;;;;;OAQG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9E;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO;IAOpE;;;OAGG;IACG,GAAG,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0D7D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwBvE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWnF;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B9D,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgDxE;;;;;;;OAOG;IACG,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0GjH;;;;OAIG;IACG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB5G;;;;;;;OAOG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmCtE;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAGnD"}
1
+ {"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/keychains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EACL,kBAAkB,EAElB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,mCAAmC,EACpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAkC,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAEzB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAKjD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcxD;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB1E;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiD9E;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAgB3D;;;;;;;;OAQG;IACG,4BAA4B,CAAC,MAAM,GAAE,mCAAwC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BvG;;;;;;;;OAQG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9E;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO;IAOpE;;;OAGG;IACG,GAAG,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0D7D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwBvE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWnF;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqC9D,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgDxE;;;;;;;OAOG;IACG,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0GjH;;;;OAIG;IACG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB5G;;;;;;;OAOG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmCtE;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAGnD"}