@bitgo/sdk-core 29.0.0 → 31.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -1
  3. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +9 -9
  5. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +4 -4
  6. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +2 -3
  8. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +0 -10
  9. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  10. package/dist/src/bitgo/baseCoin/baseCoin.js +1 -15
  11. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +0 -2
  12. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  13. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  14. package/dist/src/bitgo/config.d.ts.map +1 -1
  15. package/dist/src/bitgo/config.js +2 -5
  16. package/dist/src/bitgo/environments.d.ts.map +1 -1
  17. package/dist/src/bitgo/environments.js +11 -3
  18. package/dist/src/bitgo/index.d.ts +1 -0
  19. package/dist/src/bitgo/index.d.ts.map +1 -1
  20. package/dist/src/bitgo/index.js +4 -2
  21. package/dist/src/bitgo/utils/opengpgUtils.js +7 -7
  22. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -1
  23. package/dist/src/bitgo/utils/tss/ecdsa/base.js +9 -5
  24. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +22 -22
  25. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
  26. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  27. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +9 -1
  28. package/dist/src/bitgo/wallet/iWallet.d.ts +8 -1
  29. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  30. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  31. package/dist/src/bitgo/wallet/wallet.js +2 -2
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +8 -9
package/CHANGELOG.md CHANGED
@@ -3,6 +3,48 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [31.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@31.0.0) (2025-03-04)
7
+
8
+ ### Bug Fixes
9
+
10
+ - dependency fixes for secp256 lib ([826db0b](https://github.com/BitGo/BitGoJS/commit/826db0b5481435bb38b251e8bb5ba8ce9f78d017))
11
+ - enable tokens for cold wallet ([544733c](https://github.com/BitGo/BitGoJS/commit/544733cdfb3bb64cd283c3f7e4f1f96d2bf9ba3c))
12
+ - fix the atom public rest endpoint ([e6973d4](https://github.com/BitGo/BitGoJS/commit/e6973d442b6bb5f887747d8b231155f40bb3f3c0))
13
+ - **root:** replace elliptic with noble/curves/secp256k1 ([50a208d](https://github.com/BitGo/BitGoJS/commit/50a208d68d8b313ccb9b8e638212f61617daf92a))
14
+ - **sdk-core:** ed tss bug fix ([e424f44](https://github.com/BitGo/BitGoJS/commit/e424f447ec9966e77ee8fc34f8535996b30bbb29))
15
+ - **sdk-lib-mpc:** fix time warp during decrypting comms in MPCv2 ([c060690](https://github.com/BitGo/BitGoJS/commit/c060690105001cb9c532d39461d175b109f11a71))
16
+ - updating coredao api url ([9f79847](https://github.com/BitGo/BitGoJS/commit/9f79847f2f961be1b0bf9d9ef85267f1893b5899))
17
+
18
+ ### Features
19
+
20
+ - **abstract-lightning:** move lnv2 logic from sdk-core ([5c9114d](https://github.com/BitGo/BitGoJS/commit/5c9114d6a4dbdd5a130bde7cb897ff6f1f8132e0))
21
+ - add support to create lightning payments ([ffa5e71](https://github.com/BitGo/BitGoJS/commit/ffa5e71f12b640d9e5bffd41fd47cc144858d09d))
22
+ - remove requirement fee for keyternal ([4b3c1e6](https://github.com/BitGo/BitGoJS/commit/4b3c1e6c8f54dd72a6061c91ac67e2c61e3ccefc))
23
+ - **sdk-coin-apt:** recommend min gas tank balance for next 1000 txns ([74071ab](https://github.com/BitGo/BitGoJS/commit/74071aba4c0754242fc96f7334cec74edba6c73b))
24
+
25
+ ### BREAKING CHANGES
26
+
27
+ - **abstract-lightning:** Lightning v2
28
+
29
+ # [30.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@30.0.0) (2025-02-26)
30
+
31
+ ### Bug Fixes
32
+
33
+ - fix the atom public rest endpoint ([e6973d4](https://github.com/BitGo/BitGoJS/commit/e6973d442b6bb5f887747d8b231155f40bb3f3c0))
34
+ - **root:** replace elliptic with noble/curves/secp256k1 ([50a208d](https://github.com/BitGo/BitGoJS/commit/50a208d68d8b313ccb9b8e638212f61617daf92a))
35
+ - **sdk-core:** ed tss bug fix ([e424f44](https://github.com/BitGo/BitGoJS/commit/e424f447ec9966e77ee8fc34f8535996b30bbb29))
36
+ - **sdk-lib-mpc:** fix time warp during decrypting comms in MPCv2 ([c060690](https://github.com/BitGo/BitGoJS/commit/c060690105001cb9c532d39461d175b109f11a71))
37
+ - updating coredao api url ([9f79847](https://github.com/BitGo/BitGoJS/commit/9f79847f2f961be1b0bf9d9ef85267f1893b5899))
38
+
39
+ ### Features
40
+
41
+ - **abstract-lightning:** move lnv2 logic from sdk-core ([5c9114d](https://github.com/BitGo/BitGoJS/commit/5c9114d6a4dbdd5a130bde7cb897ff6f1f8132e0))
42
+ - **sdk-coin-apt:** recommend min gas tank balance for next 1000 txns ([74071ab](https://github.com/BitGo/BitGoJS/commit/74071aba4c0754242fc96f7334cec74edba6c73b))
43
+
44
+ ### BREAKING CHANGES
45
+
46
+ - **abstract-lightning:** Lightning v2
47
+
6
48
  # [29.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@29.0.0) (2025-02-20)
7
49
 
8
50
  ### Bug Fixes
@@ -1,4 +1,4 @@
1
- import { BIP32Interface, ECPairInterface } from '@bitgo/utxo-lib';
1
+ import { BIP32Interface, ECPairInterface } from '@bitgo/secp256k1';
2
2
  import { KeyPairOptions, ExtendedKeys } from './iface';
3
3
  import { BaseKeyPair } from './baseKeyPair';
4
4
  import { AddressFormat } from './enum';
@@ -1 +1 @@
1
- {"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;GAEG;AACH,8BAAsB,wBAAyB,YAAW,WAAW;IACnE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAUzD,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAI7C;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI7D;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAc/B,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;CAGf"}
1
+ {"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;GAEG;AACH,8BAAsB,wBAAyB,YAAW,WAAW;IACnE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAUzD,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAI7C;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI7D;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAc/B,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;CAGf"}
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Secp256k1ExtendedKeyPair = void 0;
37
- const utxo_lib_1 = require("@bitgo/utxo-lib");
37
+ const secp256k1_1 = require("@bitgo/secp256k1");
38
38
  const Crypto = __importStar(require("../util/crypto"));
39
39
  const errors_1 = require("./errors");
40
40
  /**
@@ -43,10 +43,10 @@ const errors_1 = require("./errors");
43
43
  class Secp256k1ExtendedKeyPair {
44
44
  static toKeyPair(hdNode) {
45
45
  if (hdNode.privateKey) {
46
- return utxo_lib_1.ECPair.fromPrivateKey(hdNode.privateKey);
46
+ return secp256k1_1.ECPair.fromPrivateKey(hdNode.privateKey);
47
47
  }
48
48
  else {
49
- return utxo_lib_1.ECPair.fromPublicKey(hdNode.publicKey);
49
+ return secp256k1_1.ECPair.fromPublicKey(hdNode.publicKey);
50
50
  }
51
51
  }
52
52
  /**
@@ -63,7 +63,7 @@ class Secp256k1ExtendedKeyPair {
63
63
  * @return Buffer 33 bytes if `compressed` is set, 65 bytes otherwise. Standard libsecp256k1 format.
64
64
  */
65
65
  getPublicKey({ compressed }) {
66
- return utxo_lib_1.ECPair.fromPublicKey(this.keyPair?.publicKey, { compressed }).publicKey;
66
+ return secp256k1_1.ECPair.fromPublicKey(this.keyPair?.publicKey, { compressed }).publicKey;
67
67
  }
68
68
  /**
69
69
  * @return Buffer 32 bytes in standard libsecp256k1 format
@@ -78,11 +78,11 @@ class Secp256k1ExtendedKeyPair {
78
78
  */
79
79
  recordKeysFromPrivateKey(prv) {
80
80
  if (Crypto.isValidXprv(prv)) {
81
- this.hdNode = utxo_lib_1.bip32.fromBase58(prv);
81
+ this.hdNode = secp256k1_1.bip32.fromBase58(prv);
82
82
  }
83
83
  else if (Crypto.isValidPrv(prv)) {
84
84
  // Cannot create the HD node without the chain code, so create a regular Key Chain
85
- this.keyPair = utxo_lib_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
85
+ this.keyPair = secp256k1_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
86
86
  }
87
87
  else {
88
88
  throw new Error('Unsupported private key');
@@ -95,11 +95,11 @@ class Secp256k1ExtendedKeyPair {
95
95
  */
96
96
  recordKeysFromPublicKey(pub) {
97
97
  if (Crypto.isValidXpub(pub)) {
98
- this.hdNode = utxo_lib_1.bip32.fromBase58(pub);
98
+ this.hdNode = secp256k1_1.bip32.fromBase58(pub);
99
99
  }
100
100
  else if (Crypto.isValidPub(pub)) {
101
101
  // Cannot create an HD node without the chain code, so create a regular Key Chain
102
- this.keyPair = utxo_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
102
+ this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
103
103
  }
104
104
  else {
105
105
  throw new Error('Unsupported public key: ' + pub);
@@ -132,4 +132,4 @@ class Secp256k1ExtendedKeyPair {
132
132
  }
133
133
  }
134
134
  exports.Secp256k1ExtendedKeyPair = Secp256k1ExtendedKeyPair;
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBaUY7QUFDakYsdURBQXlDO0FBSXpDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQXNCLHdCQUF3QjtJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXNCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8saUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxpQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFPRDs7Ozs7T0FLRztJQUNILFlBQXNCLE1BQXVCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQTJCO1FBQ2xELE9BQU8saUJBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDeEMsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIENyeXB0byBmcm9tICcuLi91dGlsL2NyeXB0byc7XG5pbXBvcnQgeyBLZXlQYWlyT3B0aW9ucywgRXh0ZW5kZWRLZXlzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4vYmFzZUtleVBhaXInO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFNFQ1AyNTZLMSBleHRlbmRlZCBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpciBpbXBsZW1lbnRzIEJhc2VLZXlQYWlyIHtcbiAgc3RhdGljIHRvS2V5UGFpcihoZE5vZGU6IEJJUDMySW50ZXJmYWNlKTogRUNQYWlySW50ZXJmYWNlIHtcbiAgICBpZiAoaGROb2RlLnByaXZhdGVLZXkpIHtcbiAgICAgIHJldHVybiBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoaGROb2RlLnByaXZhdGVLZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRUNQYWlyLmZyb21QdWJsaWNLZXkoaGROb2RlLnB1YmxpY0tleSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIEhEIHByb3RvY29sIChCSVAzMikuIE9ubHkgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSBLZXlQYWlyIGZyb20gYSBzZWVkLFxuICAvLyBvciBleHRlbmRlZCBrZXlzXG4gIHByb3RlY3RlZCBoZE5vZGU/OiBCSVAzMkludGVyZmFjZTtcbiAgcHJvdGVjdGVkIGtleVBhaXI6IEVDUGFpckludGVyZmFjZTtcbiAgcHJvdGVjdGVkIHNvdXJjZT86IEtleVBhaXJPcHRpb25zO1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyT3B0aW9uc30gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5IChleHRlbmRlZCBvciByYXcpLCBvciBhIHB1YmxpYyBrZXlcbiAgICogICAgIChleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkKVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNvbXByZXNzZWRcbiAgICogQHJldHVybiBCdWZmZXIgMzMgYnl0ZXMgaWYgYGNvbXByZXNzZWRgIGlzIHNldCwgNjUgYnl0ZXMgb3RoZXJ3aXNlLiBTdGFuZGFyZCBsaWJzZWNwMjU2azEgZm9ybWF0LlxuICAgKi9cbiAgZ2V0UHVibGljS2V5KHsgY29tcHJlc3NlZCB9OiB7IGNvbXByZXNzZWQ6IGJvb2xlYW4gfSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KHRoaXMua2V5UGFpcj8ucHVibGljS2V5LCB7IGNvbXByZXNzZWQgfSkucHVibGljS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gQnVmZmVyIDMyIGJ5dGVzIGluIHN0YW5kYXJkIGxpYnNlY3AyNTZrMSBmb3JtYXRcbiAgICovXG4gIGdldFByaXZhdGVLZXkoKTogQnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5rZXlQYWlyPy5wcml2YXRlS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgSGllcmFyY2hpY2FsIERldGVybWluaXN0aWMgbm9kZSBvciBhbiBFQ1BhaXIgZnJvbSBhIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJ2IEFuIGV4dGVuZGVkIG9yIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2UgaWYgKENyeXB0by5pc1ZhbGlkUHJ2KHBydikpIHtcbiAgICAgIC8vIENhbm5vdCBjcmVhdGUgdGhlIEhEIG5vZGUgd2l0aG91dCB0aGUgY2hhaW4gY29kZSwgc28gY3JlYXRlIGEgcmVndWxhciBLZXkgQ2hhaW5cbiAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYsICdoZXgnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBIaWVyYXJjaGljYWwgRGV0ZXJtaW5pc3RpYyBub2RlIG9yIGFuIEVDUGFpciBmcm9tIGEgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIEFuIGV4dGVuZGVkLCBjb21wcmVzc2VkLCBvciB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoQ3J5cHRvLmlzVmFsaWRYcHViKHB1YikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgIH0gZWxzZSBpZiAoQ3J5cHRvLmlzVmFsaWRQdWIocHViKSkge1xuICAgICAgLy8gQ2Fubm90IGNyZWF0ZSBhbiBIRCBub2RlIHdpdGhvdXQgdGhlIGNoYWluIGNvZGUsIHNvIGNyZWF0ZSBhIHJlZ3VsYXIgS2V5IENoYWluXG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleTogJyArIHB1Yik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXh0ZW5kZWQgcHVibGljIGtleSwgYW5kIHRoZSBwcml2YXRlIGtleSBpZiBvbmUgaXMgYXZhaWxhYmxlLiBUaGlzIGlzIG9ubHkgcG9zc2libGVcbiAgICogd2hlbiB0aGUga2V5IHBhaXIgd2FzIGNyZWF0ZWQgZnJvbSBhIHNlZWQgb3IgZXh0ZW5kZWQga2V5cy5cbiAgICpcbiAgICogQHJldHVybnMge0V4dGVuZGVkS2V5c30gVGhlIEV4dGVuZGVkIGtleXMgb2JqZWN0XG4gICAqL1xuICBnZXRFeHRlbmRlZEtleXMoKTogRXh0ZW5kZWRLZXlzIHtcbiAgICBpZiAoIXRoaXMuaGROb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgZXh0ZW5kZWQga2V5cycpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IEV4dGVuZGVkS2V5cyA9IHtcbiAgICAgIHhwdWI6IHRoaXMuaGROb2RlLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICB9O1xuICAgIC8vIEEgbmV1dGVyZWQgSEQgbm9kZSBtZWFucyBpdCBvbmx5IGNvbnRhaW5zIHRoZSBwdWJsaWMga2V5IGluZm9ybWF0aW9uXG4gICAgaWYgKCF0aGlzLmhkTm9kZS5pc05ldXRlcmVkKCkpIHtcbiAgICAgIHJlc3VsdC54cHJ2ID0gdGhpcy5oZE5vZGUudG9CYXNlNTgoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEFkZHJlc3MoZm9ybWF0PzogQWRkcmVzc0Zvcm1hdCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEFkZHJlc3Mgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXRLZXlzKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEtleXMgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0Y7QUFDbEYsdURBQXlDO0FBSXpDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQXNCLHdCQUF3QjtJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXNCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxrQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFPRDs7Ozs7T0FLRztJQUNILFlBQXNCLE1BQXVCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQTJCO1FBQ2xELE9BQU8sa0JBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDeEMsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyBDcnlwdG8gZnJvbSAnLi4vdXRpbC9jcnlwdG8nO1xuaW1wb3J0IHsgS2V5UGFpck9wdGlvbnMsIEV4dGVuZGVkS2V5cyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUtleVBhaXIgfSBmcm9tICcuL2Jhc2VLZXlQYWlyJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBTRUNQMjU2SzEgZXh0ZW5kZWQga2V5cGFpcnMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHN0YXRpYyB0b0tleVBhaXIoaGROb2RlOiBCSVAzMkludGVyZmFjZSk6IEVDUGFpckludGVyZmFjZSB7XG4gICAgaWYgKGhkTm9kZS5wcml2YXRlS2V5KSB7XG4gICAgICByZXR1cm4gRUNQYWlyLmZyb21Qcml2YXRlS2V5KGhkTm9kZS5wcml2YXRlS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGhkTm9kZS5wdWJsaWNLZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBIRCBwcm90b2NvbCAoQklQMzIpLiBPbmx5IGF2YWlsYWJsZSB3aGVuIGNyZWF0aW5nIGEgS2V5UGFpciBmcm9tIGEgc2VlZCxcbiAgLy8gb3IgZXh0ZW5kZWQga2V5c1xuICBwcm90ZWN0ZWQgaGROb2RlPzogQklQMzJJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBFQ1BhaXJJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucztcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpck9wdGlvbnN9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSAoZXh0ZW5kZWQgb3IgcmF3KSwgb3IgYSBwdWJsaWMga2V5XG4gICAqICAgICAoZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZClcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjb21wcmVzc2VkXG4gICAqIEByZXR1cm4gQnVmZmVyIDMzIGJ5dGVzIGlmIGBjb21wcmVzc2VkYCBpcyBzZXQsIDY1IGJ5dGVzIG90aGVyd2lzZS4gU3RhbmRhcmQgbGlic2VjcDI1NmsxIGZvcm1hdC5cbiAgICovXG4gIGdldFB1YmxpY0tleSh7IGNvbXByZXNzZWQgfTogeyBjb21wcmVzc2VkOiBib29sZWFuIH0pOiBCdWZmZXIge1xuICAgIHJldHVybiBFQ1BhaXIuZnJvbVB1YmxpY0tleSh0aGlzLmtleVBhaXI/LnB1YmxpY0tleSwgeyBjb21wcmVzc2VkIH0pLnB1YmxpY0tleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIEJ1ZmZlciAzMiBieXRlcyBpbiBzdGFuZGFyZCBsaWJzZWNwMjU2azEgZm9ybWF0XG4gICAqL1xuICBnZXRQcml2YXRlS2V5KCk6IEJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpcj8ucHJpdmF0ZUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIEhpZXJhcmNoaWNhbCBEZXRlcm1pbmlzdGljIG5vZGUgb3IgYW4gRUNQYWlyIGZyb20gYSBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBbiBleHRlbmRlZCBvciByYXcgcHJpdmF0ZSBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChDcnlwdG8uaXNWYWxpZFhwcnYocHJ2KSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tQmFzZTU4KHBydik7XG4gICAgfSBlbHNlIGlmIChDcnlwdG8uaXNWYWxpZFBydihwcnYpKSB7XG4gICAgICAvLyBDYW5ub3QgY3JlYXRlIHRoZSBIRCBub2RlIHdpdGhvdXQgdGhlIGNoYWluIGNvZGUsIHNvIGNyZWF0ZSBhIHJlZ3VsYXIgS2V5IENoYWluXG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgSGllcmFyY2hpY2FsIERldGVybWluaXN0aWMgbm9kZSBvciBhbiBFQ1BhaXIgZnJvbSBhIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBBbiBleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHViKTtcbiAgICB9IGVsc2UgaWYgKENyeXB0by5pc1ZhbGlkUHViKHB1YikpIHtcbiAgICAgIC8vIENhbm5vdCBjcmVhdGUgYW4gSEQgbm9kZSB3aXRob3V0IHRoZSBjaGFpbiBjb2RlLCBzbyBjcmVhdGUgYSByZWd1bGFyIEtleSBDaGFpblxuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHB1YmxpYyBrZXk6ICcgKyBwdWIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGV4dGVuZGVkIHB1YmxpYyBrZXksIGFuZCB0aGUgcHJpdmF0ZSBrZXkgaWYgb25lIGlzIGF2YWlsYWJsZS4gVGhpcyBpcyBvbmx5IHBvc3NpYmxlXG4gICAqIHdoZW4gdGhlIGtleSBwYWlyIHdhcyBjcmVhdGVkIGZyb20gYSBzZWVkIG9yIGV4dGVuZGVkIGtleXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtFeHRlbmRlZEtleXN9IFRoZSBFeHRlbmRlZCBrZXlzIG9iamVjdFxuICAgKi9cbiAgZ2V0RXh0ZW5kZWRLZXlzKCk6IEV4dGVuZGVkS2V5cyB7XG4gICAgaWYgKCF0aGlzLmhkTm9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGV4dGVuZGVkIGtleXMnKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBFeHRlbmRlZEtleXMgPSB7XG4gICAgICB4cHViOiB0aGlzLmhkTm9kZS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgfTtcbiAgICAvLyBBIG5ldXRlcmVkIEhEIG5vZGUgbWVhbnMgaXQgb25seSBjb250YWlucyB0aGUgcHVibGljIGtleSBpbmZvcm1hdGlvblxuICAgIGlmICghdGhpcy5oZE5vZGUuaXNOZXV0ZXJlZCgpKSB7XG4gICAgICByZXN1bHQueHBydiA9IHRoaXMuaGROb2RlLnRvQmFzZTU4KCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRBZGRyZXNzKGZvcm1hdD86IEFkZHJlc3NGb3JtYXQpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0S2V5cygpOiBhbnkge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRLZXlzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=