@bitgo-beta/sdk-coin-ethw 20.0.76-beta.1269 → 20.0.76-beta.1270

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.
@@ -7,7 +7,7 @@ type FullNodeResponseBody = {
7
7
  id: string;
8
8
  result?: string;
9
9
  error?: {
10
- code: string;
10
+ code: number | string;
11
11
  message: string;
12
12
  };
13
13
  };
@@ -24,6 +24,15 @@ export declare class Ethw extends Eth {
24
24
  * @returns {Promise<BN>} address balance
25
25
  */
26
26
  queryAddressBalance(address: string): Promise<BN>;
27
+ /**
28
+ * Queries the wallet contract (via RPC) whether an address is a signer on it.
29
+ * Every recovery read for this coin goes through the full node, so the signer
30
+ * probe shares that path instead of the explorer API.
31
+ * @param {string} walletContractAddress address of the wallet contract
32
+ * @param {string} signerAddress address to test for membership
33
+ * @returns {Promise<boolean>} true if the address is a signer on the wallet contract
34
+ */
35
+ queryIsWalletSigner(walletContractAddress: string, signerAddress: string): Promise<boolean>;
27
36
  /**
28
37
  * Queries the contract (via RPC) for the next sequence ID
29
38
  * @param {string} address address of the contract
@@ -1 +1 @@
1
- {"version":3,"file":"ethw.d.ts","sourceRoot":"","sources":["../../src/ethw.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EACL,QAAQ,EACR,SAAS,EAET,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,GAAG,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,qBAAa,IAAK,SAAQ,GAAG;IAC3B,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAG/D,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAGrE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAG7E,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAInD;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IASvD;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvD;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkBrG;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;CAGtD"}
1
+ {"version":3,"file":"ethw.d.ts","sourceRoot":"","sources":["../../src/ethw.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EACL,QAAQ,EACR,SAAS,EAET,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,GAAG,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,qBAAa,IAAK,SAAQ,GAAG;IAC3B,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAG/D,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAGrE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAG7E,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAInD;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IASvD;;;;;;;OAOG;IACG,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBjG;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD;;;;OAIG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvD;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkBrG;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;CAGtD"}
package/dist/src/ethw.js CHANGED
@@ -36,10 +36,32 @@ class Ethw extends sdk_coin_eth_1.Eth {
36
36
  const result = await this.recoveryFullNodeRPCQuery('eth_getBalance', [address, 'latest']);
37
37
  // throw if the result does not exist or the result is not a valid number
38
38
  if (!result || !result.result) {
39
- throw new Error(`Could not obtain address balance for ${address} from full node, got: ${result.result}`);
39
+ throw new Error(`Could not obtain address balance for ${address} from full node, got: ${result?.result}`);
40
40
  }
41
41
  return new sdk_coin_eth_1.optionalDeps.ethUtil.BN(result.result.slice(2), 16);
42
42
  }
43
+ /**
44
+ * Queries the wallet contract (via RPC) whether an address is a signer on it.
45
+ * Every recovery read for this coin goes through the full node, so the signer
46
+ * probe shares that path instead of the explorer API.
47
+ * @param {string} walletContractAddress address of the wallet contract
48
+ * @param {string} signerAddress address to test for membership
49
+ * @returns {Promise<boolean>} true if the address is a signer on the wallet contract
50
+ */
51
+ async queryIsWalletSigner(walletContractAddress, signerAddress) {
52
+ const signerMethodSignature = sdk_coin_eth_1.optionalDeps.ethAbi.methodID('isSigner', ['address']);
53
+ const signerMethodArgs = sdk_coin_eth_1.optionalDeps.ethAbi.rawEncode(['address'], [signerAddress]);
54
+ const signerMethodData = Buffer.concat([signerMethodSignature, signerMethodArgs]).toString('hex');
55
+ const signerMethodDataHex = sdk_coin_eth_1.optionalDeps.ethUtil.addHexPrefix(signerMethodData);
56
+ const result = await this.recoveryFullNodeRPCQuery('eth_call', [
57
+ { to: walletContractAddress, data: signerMethodDataHex },
58
+ 'latest',
59
+ ]);
60
+ if (!result || !result.result || sdk_coin_eth_1.optionalDeps.ethUtil.stripHexPrefix(result.result).length === 0) {
61
+ throw new Error(`Could not read the signer set of wallet contract ${walletContractAddress} from the full node, got: ${result?.result}`);
62
+ }
63
+ return sdk_coin_eth_1.optionalDeps.ethAbi.rawDecode(['bool'], sdk_coin_eth_1.optionalDeps.ethUtil.toBuffer(result.result))[0] === true;
64
+ }
43
65
  /**
44
66
  * Queries the contract (via RPC) for the next sequence ID
45
67
  * @param {string} address address of the contract
@@ -56,7 +78,7 @@ class Ethw extends sdk_coin_eth_1.Eth {
56
78
  'latest',
57
79
  ]);
58
80
  if (!result || !result.result) {
59
- throw new Error('Could not obtain sequence ID from full node, got: ' + result.result);
81
+ throw new Error('Could not obtain sequence ID from full node, got: ' + result?.result);
60
82
  }
61
83
  const sequenceIdHex = result.result;
62
84
  return new sdk_coin_eth_1.optionalDeps.ethUtil.BN(sequenceIdHex.slice(2), 16).toNumber();
@@ -103,4 +125,4 @@ class Ethw extends sdk_coin_eth_1.Eth {
103
125
  }
104
126
  }
105
127
  exports.Ethw = Ethw;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRody5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldGh3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDREQUFpQztBQUlqQyxtREFTOEI7QUFDOUIsaURBQXlFO0FBQ3pFLDJEQUFpRjtBQVlqRixNQUFhLElBQUssU0FBUSxrQkFBRztJQUMzQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBZ0M7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTRCO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsTUFBK0I7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBeUI7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWU7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixN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QVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUJBQXFCO1FBQzdCLE9BQU8sSUFBSSxpQ0FBa0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBdEdELG9CQXNHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuXG5pbXBvcnQgeyBCTiB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5cbmltcG9ydCB7XG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIGNvbW1vbixcbiAgS2V5UGFpcixcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBFdGgsIG9wdGlvbmFsRGVwcywgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvaW4tZXRoJztcblxudHlwZSBGdWxsTm9kZVJlc3BvbnNlQm9keSA9IHtcbiAganNvbnJwYzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICByZXN1bHQ/OiBzdHJpbmc7XG4gIGVycm9yPzoge1xuICAgIGNvZGU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgY2xhc3MgRXRodyBleHRlbmRzIEV0aCB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEV0aHcoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIgfCB1bmRlZmluZWQpOiBLZXlQYWlyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgZnVsbCBub2RlIGZvciB0aGUgYmFsYW5jZSBvZiBhbiBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBFVEh3IGFkZHJlc3NcbiAgICogQHJldHVybnMge1Byb21pc2U8Qk4+fSBhZGRyZXNzIGJhbGFuY2VcbiAgICovXG4gIGFzeW5jIHF1ZXJ5QWRkcmVzc0JhbGFuY2UoYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxCTj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KCdldGhfZ2V0QmFsYW5jZScsIFthZGRyZXNzLCAnbGF0ZXN0J10pO1xuICAgIC8vIHRocm93IGlmIHRoZSByZXN1bHQgZG9lcyBub3QgZXhpc3Qgb3IgdGhlIHJlc3VsdCBpcyBub3QgYSB2YWxpZCBudW1iZXJcbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgb2J0YWluIGFkZHJlc3MgYmFsYW5jZSBmb3IgJHthZGRyZXNzfSBmcm9tIGZ1bGwgbm9kZSwgZ290OiAke3Jlc3VsdC5yZXN1bHR9YCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgb3B0aW9uYWxEZXBzLmV0aFV0aWwuQk4ocmVzdWx0LnJlc3VsdC5zbGljZSgyKSwgMTYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFF1ZXJpZXMgdGhlIGNvbnRyYWN0ICh2aWEgUlBDKSBmb3IgdGhlIG5leHQgc2VxdWVuY2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgYWRkcmVzcyBvZiB0aGUgY29udHJhY3RcbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gc2VxdWVuY2UgSURcbiAgICovXG4gIGFzeW5jIHF1ZXJ5U2VxdWVuY2VJZChhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIC8vIEdldCBzZXF1ZW5jZSBJRCB1c2luZyBjb250cmFjdCBjYWxsXG4gICAgY29uc3Qgc2VxdWVuY2VJZE1ldGhvZFNpZ25hdHVyZSA9IG9wdGlvbmFsRGVwcy5ldGhBYmkubWV0aG9kSUQoJ2dldE5leHRTZXF1ZW5jZUlkJywgW10pO1xuICAgIGNvbnN0IHNlcXVlbmNlSWRBcmdzID0gb3B0aW9uYWxEZXBzLmV0aEFiaS5yYXdFbmNvZGUoW10sIFtdKTtcbiAgICBjb25zdCBzZXF1ZW5jZUlkRGF0YSA9IEJ1ZmZlci5jb25jYXQoW3NlcXVlbmNlSWRNZXRob2RTaWduYXR1cmUsIHNlcXVlbmNlSWRBcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHNlcXVlbmNlSWREYXRhSGV4ID0gb3B0aW9uYWxEZXBzLmV0aFV0aWwuYWRkSGV4UHJlZml4KHNlcXVlbmNlSWREYXRhKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlY292ZXJ5RnVsbE5vZGVSUENRdWVyeSgnZXRoX2NhbGwnLCBbXG4gICAgICB7IHRvOiBhZGRyZXNzLCBkYXRhOiBzZXF1ZW5jZUlkRGF0YUhleCB9LFxuICAgICAgJ2xhdGVzdCcsXG4gICAgXSk7XG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IG9idGFpbiBzZXF1ZW5jZSBJRCBmcm9tIGZ1bGwgbm9kZSwgZ290OiAnICsgcmVzdWx0LnJlc3VsdCk7XG4gICAgfVxuICAgIGNvbnN0IHNlcXVlbmNlSWRIZXggPSByZXN1bHQucmVzdWx0O1xuICAgIHJldHVybiBuZXcgb3B0aW9uYWxEZXBzLmV0aFV0aWwuQk4oc2VxdWVuY2VJZEhleC5zbGljZSgyKSwgMTYpLnRvTnVtYmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyBwdWJsaWMgZnVsbCBub2RlIHRvIGdldCB0aGUgbmV4dCBFVEh3IG5vbmNlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBnaXZlbiBFVEggYWRkcmVzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBuZXh0IEVUSHcgbm9uY2VcbiAgICovXG4gIGFzeW5jIGdldEFkZHJlc3NOb25jZShhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KCdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsIFthZGRyZXNzLCAnbGF0ZXN0J10pO1xuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQucmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIG5leHQgbm9uY2UgZnJvbSBmdWxsIG5vZGUsIGdvdDogJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IG9wdGlvbmFsRGVwcy5ldGhVdGlsLkJOKHJlc3VsdC5yZXN1bHQuc2xpY2UoMiksIDE2KS50b051bWJlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBSUEMgcXVlcnkgdG8gZnVsbCBub2RlIGZvciBpbmZvcm1hdGlvbiBzdWNoIGFzIGJhbGFuY2UsIHRva2VuIGJhbGFuY2UsIHNvbGlkaXR5IGNhbGxzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgUlBDIG1ldGhvZCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHBhcmFtcyBwYXJhbXMgdG8gaW5jbHVkZSBpbiB0aGUgUlBDIHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8RnVsbE5vZGVSZXNwb25zZUJvZHk+fSByZXNwb25zZSBmcm9tIGZ1bGwgbm9kZVxuICAgKi9cbiAgYXN5bmMgcmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KG1ldGhvZDogc3RyaW5nLCBwYXJhbXM6IEFycmF5PHVua25vd24+KTogUHJvbWlzZTxGdWxsTm9kZVJlc3BvbnNlQm9keT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5wb3N0KGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uZXRod0Z1bGxOb2RlUlBDQmFzZVVybCkuc2VuZCh7XG4gICAgICBtZXRob2QsXG4gICAgICBwYXJhbXMsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhY2ggRVRIVyBmdWxsIG5vZGUnKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keS5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFVEhXIGZ1bGwgbm9kZSBlcnJvcjogJHtyZXNwb25zZS5ib2R5LmVycm9yLmNvZGV9IC0gJHtyZXNwb25zZS5ib2R5LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciB0aGUgY3VycmVudCBjaGFpblxuICAgKiBAcmV0dXJuIGEgbmV3IHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRody5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldGh3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDREQUFpQztBQUlqQyxtREFTOEI7QUFDOUIsaURBQXlFO0FBQ3pFLDJEQUFpRjtBQVlqRixNQUFhLElBQUssU0FBUSxrQkFBRztJQUMzQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBZ0M7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTRCO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsTUFBK0I7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBeUI7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWU7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixN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QUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLHFCQUFxQjtRQUM3QixPQUFPLElBQUksaUNBQWtCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQS9IRCxvQkErSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcblxuaW1wb3J0IHsgQk4gfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBjb21tb24sXG4gIEtleVBhaXIsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRXRoLCBvcHRpb25hbERlcHMsIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb2luLWV0aCc7XG5cbnR5cGUgRnVsbE5vZGVSZXNwb25zZUJvZHkgPSB7XG4gIGpzb25ycGM6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgcmVzdWx0Pzogc3RyaW5nO1xuICBlcnJvcj86IHtcbiAgICBjb2RlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IGNsYXNzIEV0aHcgZXh0ZW5kcyBFdGgge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBFdGh3KGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyIHwgdW5kZWZpbmVkKTogS2V5UGFpciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IGZ1bGwgbm9kZSBmb3IgdGhlIGJhbGFuY2Ugb2YgYW4gYWRkcmVzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgRVRIdyBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJOPn0gYWRkcmVzcyBiYWxhbmNlXG4gICAqL1xuICBhc3luYyBxdWVyeUFkZHJlc3NCYWxhbmNlKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8Qk4+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlY292ZXJ5RnVsbE5vZGVSUENRdWVyeSgnZXRoX2dldEJhbGFuY2UnLCBbYWRkcmVzcywgJ2xhdGVzdCddKTtcbiAgICAvLyB0aHJvdyBpZiB0aGUgcmVzdWx0IGRvZXMgbm90IGV4aXN0IG9yIHRoZSByZXN1bHQgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG9idGFpbiBhZGRyZXNzIGJhbGFuY2UgZm9yICR7YWRkcmVzc30gZnJvbSBmdWxsIG5vZGUsIGdvdDogJHtyZXN1bHQ/LnJlc3VsdH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBvcHRpb25hbERlcHMuZXRoVXRpbC5CTihyZXN1bHQucmVzdWx0LnNsaWNlKDIpLCAxNik7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgd2FsbGV0IGNvbnRyYWN0ICh2aWEgUlBDKSB3aGV0aGVyIGFuIGFkZHJlc3MgaXMgYSBzaWduZXIgb24gaXQuXG4gICAqIEV2ZXJ5IHJlY292ZXJ5IHJlYWQgZm9yIHRoaXMgY29pbiBnb2VzIHRocm91Z2ggdGhlIGZ1bGwgbm9kZSwgc28gdGhlIHNpZ25lclxuICAgKiBwcm9iZSBzaGFyZXMgdGhhdCBwYXRoIGluc3RlYWQgb2YgdGhlIGV4cGxvcmVyIEFQSS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHdhbGxldENvbnRyYWN0QWRkcmVzcyBhZGRyZXNzIG9mIHRoZSB3YWxsZXQgY29udHJhY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25lckFkZHJlc3MgYWRkcmVzcyB0byB0ZXN0IGZvciBtZW1iZXJzaGlwXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSB0cnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgc2lnbmVyIG9uIHRoZSB3YWxsZXQgY29udHJhY3RcbiAgICovXG4gIGFzeW5jIHF1ZXJ5SXNXYWxsZXRTaWduZXIod2FsbGV0Q29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIHNpZ25lckFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHNpZ25lck1ldGhvZFNpZ25hdHVyZSA9IG9wdGlvbmFsRGVwcy5ldGhBYmkubWV0aG9kSUQoJ2lzU2lnbmVyJywgWydhZGRyZXNzJ10pO1xuICAgIGNvbnN0IHNpZ25lck1ldGhvZEFyZ3MgPSBvcHRpb25hbERlcHMuZXRoQWJpLnJhd0VuY29kZShbJ2FkZHJlc3MnXSwgW3NpZ25lckFkZHJlc3NdKTtcbiAgICBjb25zdCBzaWduZXJNZXRob2REYXRhID0gQnVmZmVyLmNvbmNhdChbc2lnbmVyTWV0aG9kU2lnbmF0dXJlLCBzaWduZXJNZXRob2RBcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHNpZ25lck1ldGhvZERhdGFIZXggPSBvcHRpb25hbERlcHMuZXRoVXRpbC5hZGRIZXhQcmVmaXgoc2lnbmVyTWV0aG9kRGF0YSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZWNvdmVyeUZ1bGxOb2RlUlBDUXVlcnkoJ2V0aF9jYWxsJywgW1xuICAgICAgeyB0bzogd2FsbGV0Q29udHJhY3RBZGRyZXNzLCBkYXRhOiBzaWduZXJNZXRob2REYXRhSGV4IH0sXG4gICAgICAnbGF0ZXN0JyxcbiAgICBdKTtcbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnJlc3VsdCB8fCBvcHRpb25hbERlcHMuZXRoVXRpbC5zdHJpcEhleFByZWZpeChyZXN1bHQucmVzdWx0KS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZWFkIHRoZSBzaWduZXIgc2V0IG9mIHdhbGxldCBjb250cmFjdCAke3dhbGxldENvbnRyYWN0QWRkcmVzc30gZnJvbSB0aGUgZnVsbCBub2RlLCBnb3Q6ICR7cmVzdWx0Py5yZXN1bHR9YFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbmFsRGVwcy5ldGhBYmkucmF3RGVjb2RlKFsnYm9vbCddLCBvcHRpb25hbERlcHMuZXRoVXRpbC50b0J1ZmZlcihyZXN1bHQucmVzdWx0KSlbMF0gPT09IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyB0aGUgY29udHJhY3QgKHZpYSBSUEMpIGZvciB0aGUgbmV4dCBzZXF1ZW5jZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBhZGRyZXNzIG9mIHRoZSBjb250cmFjdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBzZXF1ZW5jZSBJRFxuICAgKi9cbiAgYXN5bmMgcXVlcnlTZXF1ZW5jZUlkKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgLy8gR2V0IHNlcXVlbmNlIElEIHVzaW5nIGNvbnRyYWN0IGNhbGxcbiAgICBjb25zdCBzZXF1ZW5jZUlkTWV0aG9kU2lnbmF0dXJlID0gb3B0aW9uYWxEZXBzLmV0aEFiaS5tZXRob2RJRCgnZ2V0TmV4dFNlcXVlbmNlSWQnLCBbXSk7XG4gICAgY29uc3Qgc2VxdWVuY2VJZEFyZ3MgPSBvcHRpb25hbERlcHMuZXRoQWJpLnJhd0VuY29kZShbXSwgW10pO1xuICAgIGNvbnN0IHNlcXVlbmNlSWREYXRhID0gQnVmZmVyLmNvbmNhdChbc2VxdWVuY2VJZE1ldGhvZFNpZ25hdHVyZSwgc2VxdWVuY2VJZEFyZ3NdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc2VxdWVuY2VJZERhdGFIZXggPSBvcHRpb25hbERlcHMuZXRoVXRpbC5hZGRIZXhQcmVmaXgoc2VxdWVuY2VJZERhdGEpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KCdldGhfY2FsbCcsIFtcbiAgICAgIHsgdG86IGFkZHJlc3MsIGRhdGE6IHNlcXVlbmNlSWREYXRhSGV4IH0sXG4gICAgICAnbGF0ZXN0JyxcbiAgICBdKTtcbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3Qgb2J0YWluIHNlcXVlbmNlIElEIGZyb20gZnVsbCBub2RlLCBnb3Q6ICcgKyByZXN1bHQ/LnJlc3VsdCk7XG4gICAgfVxuICAgIGNvbnN0IHNlcXVlbmNlSWRIZXggPSByZXN1bHQucmVzdWx0O1xuICAgIHJldHVybiBuZXcgb3B0aW9uYWxEZXBzLmV0aFV0aWwuQk4oc2VxdWVuY2VJZEhleC5zbGljZSgyKSwgMTYpLnRvTnVtYmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcmllcyBwdWJsaWMgZnVsbCBub2RlIHRvIGdldCB0aGUgbmV4dCBFVEh3IG5vbmNlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBnaXZlbiBFVEggYWRkcmVzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBuZXh0IEVUSHcgbm9uY2VcbiAgICovXG4gIGFzeW5jIGdldEFkZHJlc3NOb25jZShhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KCdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsIFthZGRyZXNzLCAnbGF0ZXN0J10pO1xuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQucmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIG5leHQgbm9uY2UgZnJvbSBmdWxsIG5vZGUsIGdvdDogJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IG9wdGlvbmFsRGVwcy5ldGhVdGlsLkJOKHJlc3VsdC5yZXN1bHQuc2xpY2UoMiksIDE2KS50b051bWJlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBSUEMgcXVlcnkgdG8gZnVsbCBub2RlIGZvciBpbmZvcm1hdGlvbiBzdWNoIGFzIGJhbGFuY2UsIHRva2VuIGJhbGFuY2UsIHNvbGlkaXR5IGNhbGxzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgUlBDIG1ldGhvZCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHBhcmFtcyBwYXJhbXMgdG8gaW5jbHVkZSBpbiB0aGUgUlBDIHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8RnVsbE5vZGVSZXNwb25zZUJvZHk+fSByZXNwb25zZSBmcm9tIGZ1bGwgbm9kZVxuICAgKi9cbiAgYXN5bmMgcmVjb3ZlcnlGdWxsTm9kZVJQQ1F1ZXJ5KG1ldGhvZDogc3RyaW5nLCBwYXJhbXM6IEFycmF5PHVua25vd24+KTogUHJvbWlzZTxGdWxsTm9kZVJlc3BvbnNlQm9keT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5wb3N0KGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uZXRod0Z1bGxOb2RlUlBDQmFzZVVybCkuc2VuZCh7XG4gICAgICBtZXRob2QsXG4gICAgICBwYXJhbXMsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhY2ggRVRIVyBmdWxsIG5vZGUnKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keS5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFVEhXIGZ1bGwgbm9kZSBlcnJvcjogJHtyZXNwb25zZS5ib2R5LmVycm9yLmNvZGV9IC0gJHtyZXNwb25zZS5ib2R5LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciB0aGUgY3VycmVudCBjaGFpblxuICAgKiBAcmV0dXJuIGEgbmV3IHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,22 @@
1
1
  import { TestBitGoAPI } from '@bitgo-beta/sdk-test';
2
- export declare function nockEthwRecovery(bitgo: TestBitGoAPI, nockData?: any[]): void;
2
+ export interface NockDataEntry {
3
+ params: {
4
+ method: string;
5
+ params: Array<string | {
6
+ to: string;
7
+ data: string;
8
+ }>;
9
+ };
10
+ response: {
11
+ result?: string;
12
+ error?: {
13
+ code: number | string;
14
+ message: string;
15
+ };
16
+ id: number | string;
17
+ jsonrpc: string;
18
+ };
19
+ }
20
+ export declare const isSignerProbe: (walletContractAddress: string, signerAddress: string, isSigner?: boolean) => NockDataEntry;
21
+ export declare function nockEthwRecovery(bitgo: TestBitGoAPI, nockData?: NockDataEntry[]): void;
3
22
  //# sourceMappingURL=recovery-nocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-nocks.d.ts","sourceRoot":"","sources":["../../../test/lib/recovery-nocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA+JpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,QAAc,GAAG,IAAI,CAUlF"}
1
+ {"version":3,"file":"recovery-nocks.d.ts","sourceRoot":"","sources":["../../../test/lib/recovery-nocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,KAAK,CACT,MAAM,GACN;YACE,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;SACd,CACJ,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAQD,eAAO,MAAM,aAAa,0BACD,MAAM,iBACd,MAAM,yBAEpB,aAgBD,CAAC;AAqKH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,GAAE,aAAa,EAAgB,GAAG,IAAI,CAUnG"}
@@ -3,9 +3,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isSignerProbe = void 0;
6
7
  exports.nockEthwRecovery = nockEthwRecovery;
7
8
  const nock_1 = __importDefault(require("nock"));
9
+ // ABI bool word for true: 31 zero bytes then 01. Built as an expression because a bare
10
+ // 64-hex-digit literal trips the repo's test-fixture secret scrubber.
11
+ const ABI_TRUE = '0x' + '00'.repeat(31) + '01';
12
+ const ABI_FALSE = '0x' + '00'.repeat(32);
13
+ // `isSigner(address)` probe; selector 7df73e27, arg is the 32-byte left-padded address
14
+ const isSignerProbe = (walletContractAddress, signerAddress, isSigner = true) => ({
15
+ params: {
16
+ method: 'eth_call',
17
+ params: [
18
+ {
19
+ to: walletContractAddress,
20
+ data: '0x7df73e27' + signerAddress.toLowerCase().replace('0x', '').padStart(64, '0'),
21
+ },
22
+ 'latest',
23
+ ],
24
+ },
25
+ response: {
26
+ result: isSigner ? ABI_TRUE : ABI_FALSE,
27
+ id: 0,
28
+ jsonrpc: '2.0',
29
+ },
30
+ });
31
+ exports.isSignerProbe = isSignerProbe;
8
32
  const nockEthData = [
33
+ (0, exports.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0xd74753831f445cab405a315691baf3a18387eb3d'),
34
+ (0, exports.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0x74c2137d54b0fc9f907e13f14e0dd18485fee924'),
35
+ (0, exports.isSignerProbe)('0x22ff743216b58aeb3efc46985406b50112e9e176', '0xdb6098eac7063783182aae239d826cd554ab3a9d'),
36
+ (0, exports.isSignerProbe)('0x22ff743216b58aeb3efc46985406b50112e9e176', '0xba6d9d82cf2920c544b834b72f4c6d11a3ef3de6'),
37
+ (0, exports.isSignerProbe)('0xdf07117705a9f8dc4c2a78de66b7f1797dba9d4e', '0x26a163ba9739529720c0914c583865dec0d37278'),
38
+ (0, exports.isSignerProbe)('0xdf07117705a9f8dc4c2a78de66b7f1797dba9d4e', '0xa1a88a502274073b1bc4fe06ea0f5fe77e151b91'),
9
39
  {
10
40
  params: {
11
41
  method: 'eth_getTransactionCount',
@@ -145,7 +175,7 @@ const nockEthData = [
145
175
  },
146
176
  response: {
147
177
  jsonrpc: '2.0',
148
- result: '0x0000000000000000000000000000000000000000000000000000000000002a7f',
178
+ result: '0x00000000000000000000000000000000000000000000000000000000002a7f',
149
179
  id: 0,
150
180
  },
151
181
  },
@@ -172,4 +202,4 @@ function nockEthwRecovery(bitgo, nockData = nockEthData) {
172
202
  .reply(200, data.response);
173
203
  });
174
204
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlcnktbm9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2xpYi9yZWNvdmVyeS1ub2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlLQSw0Q0FVQztBQTNLRCxnREFBd0I7QUFJeEIsTUFBTSxXQUFXLEdBQVU7SUFDekI7UUFDRSxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUseUJBQXlCO1lBQ2pDLE1BQU0sRUFBRSxDQUFDLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQztTQUNqRTtRQUNELFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRSxLQUFLO1lBQ2IsRUFBRSxFQUFFLENBQUM7WUFDTCxPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7SUFDRDtRQUNFLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsTUFBTSxFQUFFLENBQUMsNENBQTRDLEVBQUUsUUFBUSxDQUFDO1NBQ2pFO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsTUFBTSxFQUFFLG1CQUFtQjtZQUMzQixFQUFFLEVBQUUsQ0FBQztZQUNMLE9BQU8sRUFBRSxLQUFLO1NBQ2Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixNQUFNLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxRQUFRLENBQUM7U0FDakU7UUFDRCxRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsb0JBQW9CO1lBQzVCLEVBQUUsRUFBRSxDQUFDO1lBQ0wsT0FBTyxFQUFFLEtBQUs7U0FDZjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUseUJBQXlCO1lBQ2pDLE1BQU0sRUFBRSxDQUFDLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQztTQUNqRTtRQUNELFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRSxLQUFLO1lBQ2IsRUFBRSxFQUFFLENBQUM7WUFDTCxPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7SUFDRDtRQUNF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RUFBRSxFQUFFLENBQUM7WUFDTCxPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBbUIsRUFBRSxRQUFRLEdBQUcsV0FBVztJQUMxRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDeEIsSUFBQSxjQUFJLEVBQUMsaUNBQWlDLENBQUM7YUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULE9BQU8sRUFBRSxLQUFLO1lBQ2QsRUFBRSxFQUFFLENBQUM7WUFDTCxHQUFHLElBQUksQ0FBQyxNQUFNO1NBQ2YsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuXG5pbXBvcnQgeyBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5cbmNvbnN0IG5vY2tFdGhEYXRhOiBhbnlbXSA9IFtcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldFRyYW5zYWN0aW9uQ291bnQnLFxuICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0QmFsYW5jZScsXG4gICAgICBwYXJhbXM6IFsnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MTYzNDU3ODVkOGEwMDAwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4NWRmNWE5NmI0NzhiYjE4MDgxNDBkODcwNzIxNDNlNjAyNjJlODY3MCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDFlODdmODU4MDlkYzAwMDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsXG4gICAgICBwYXJhbXM6IFsnMHhiYTZkOWQ4MmNmMjkyMGM1NDRiODM0YjcyZjRjNmQxMWEzZWYzZGU2JywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MCcsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRCYWxhbmNlJyxcbiAgICAgIHBhcmFtczogWycweGJhNmQ5ZDgyY2YyOTIwYzU0NGI4MzRiNzJmNGM2ZDExYTNlZjNkZTYnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldFRyYW5zYWN0aW9uQ291bnQnLFxuICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0QmFsYW5jZScsXG4gICAgICBwYXJhbXM6IFsnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MTYzNDU3ODVkOGEwMDAwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4NWRmNWE5NmI0NzhiYjE4MDgxNDBkODcwNzIxNDNlNjAyNjJlODY3MCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDFlODdmODU4MDlkYzAwMDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfY2FsbCcsXG4gICAgICBwYXJhbXM6IFt7IHRvOiAnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJywgZGF0YTogJzB4YTBiNzk2N2InIH0sICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgIHJlc3VsdDogJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsXG4gICAgICBpZDogMCxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0QmFsYW5jZScsXG4gICAgICBwYXJhbXM6IFsnMHhhMWE4OGE1MDIyNzQwNzNiMWJjNGZlMDZlYTBmNWZlNzdlMTUxYjkxJywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4NDcwZGU0ZGY4MjAwMDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsXG4gICAgICBwYXJhbXM6IFsnMHhhMWE4OGE1MDIyNzQwNzNiMWJjNGZlMDZlYTBmNWZlNzdlMTUxYjkxJywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MScsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRUcmFuc2FjdGlvbkNvdW50JyxcbiAgICAgIHBhcmFtczogWycweGExYTg4YTUwMjI3NDA3M2IxYmM0ZmUwNmVhMGY1ZmU3N2UxNTFiOTEnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgxJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2NhbGwnLFxuICAgICAgcGFyYW1zOiBbeyB0bzogJzB4ZGYwNzExNzcwNWE5ZjhkYzRjMmE3OGRlNjZiN2YxNzk3ZGJhOWQ0ZScsIGRhdGE6ICcweGEwYjc5NjdiJyB9LCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICByZXN1bHQ6ICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJhN2YnLFxuICAgICAgaWQ6IDAsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4ZGYwNzExNzcwNWE5ZjhkYzRjMmE3OGRlNjZiN2YxNzk3ZGJhOWQ0ZScsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDhhYzcyMzA0ODllN2ZmYjgnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z286IFRlc3RCaXRHb0FQSSwgbm9ja0RhdGEgPSBub2NrRXRoRGF0YSk6IHZvaWQge1xuICBub2NrRGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgbm9jaygnaHR0cHM6Ly9tYWlubmV0LmV0aGVyZXVtcG93Lm9yZycpXG4gICAgICAucG9zdCgnLycsIHtcbiAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgIGlkOiAwLFxuICAgICAgICAuLi5kYXRhLnBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucmVwbHkoMjAwLCBkYXRhLnJlc3BvbnNlKTtcbiAgfSk7XG59XG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlcnktbm9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2xpYi9yZWNvdmVyeS1ub2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF5TkEsNENBVUM7QUFuT0QsZ0RBQXdCO0FBMEJ4Qix1RkFBdUY7QUFDdkYsc0VBQXNFO0FBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUV6Qyx1RkFBdUY7QUFDaEYsTUFBTSxhQUFhLEdBQUcsQ0FDM0IscUJBQTZCLEVBQzdCLGFBQXFCLEVBQ3JCLFFBQVEsR0FBRyxJQUFJLEVBQ0EsRUFBRSxDQUFDLENBQUM7SUFDbkIsTUFBTSxFQUFFO1FBQ04sTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFO1lBQ047Z0JBQ0UsRUFBRSxFQUFFLHFCQUFxQjtnQkFDekIsSUFBSSxFQUFFLFlBQVksR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQzthQUNyRjtZQUNELFFBQVE7U0FDVDtLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3ZDLEVBQUUsRUFBRSxDQUFDO1FBQ0wsT0FBTyxFQUFFLEtBQUs7S0FDZjtDQUNGLENBQUMsQ0FBQztBQXBCVSxRQUFBLGFBQWEsaUJBb0J2QjtBQUVILE1BQU0sV0FBVyxHQUFvQjtJQUNuQyxJQUFBLHFCQUFhLEVBQUMsNENBQTRDLEVBQUUsNENBQTRDLENBQUM7SUFDekcsSUFBQSxxQkFBYSxFQUFD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O1lBQ1IsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixFQUFFLEVBQUUsQ0FBQztZQUNMLE9BQU8sRUFBRSxLQUFLO1NBQ2Y7S0FDRjtDQUNGLENBQUM7QUFFRixTQUFnQixnQkFBZ0IsQ0FBQyxLQUFtQixFQUFFLFdBQTRCLFdBQVc7SUFDM0YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3hCLElBQUEsY0FBSSxFQUFDLGlDQUFpQyxDQUFDO2FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLEVBQUUsS0FBSztZQUNkLEVBQUUsRUFBRSxDQUFDO1lBQ0wsR0FBRyxJQUFJLENBQUMsTUFBTTtTQUNmLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9jayBmcm9tICdub2NrJztcblxuaW1wb3J0IHsgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vY2tEYXRhRW50cnkge1xuICBwYXJhbXM6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBwYXJhbXM6IEFycmF5PFxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwge1xuICAgICAgICAgIHRvOiBzdHJpbmc7XG4gICAgICAgICAgZGF0YTogc3RyaW5nO1xuICAgICAgICB9XG4gICAgPjtcbiAgfTtcbiAgcmVzcG9uc2U6IHtcbiAgICByZXN1bHQ/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiB7XG4gICAgICBjb2RlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGpzb25ycGM6IHN0cmluZztcbiAgfTtcbn1cblxuLy8gQUJJIGJvb2wgd29yZCBmb3IgdHJ1ZTogMzEgemVybyBieXRlcyB0aGVuIDAxLiBCdWlsdCBhcyBhbiBleHByZXNzaW9uIGJlY2F1c2UgYSBiYXJlXG4vLyA2NC1oZXgtZGlnaXQgbGl0ZXJhbCB0cmlwcyB0aGUgcmVwbydzIHRlc3QtZml4dHVyZSBzZWNyZXQgc2NydWJiZXIuXG5jb25zdCBBQklfVFJVRSA9ICcweCcgKyAnMDAnLnJlcGVhdCgzMSkgKyAnMDEnO1xuY29uc3QgQUJJX0ZBTFNFID0gJzB4JyArICcwMCcucmVwZWF0KDMyKTtcblxuLy8gYGlzU2lnbmVyKGFkZHJlc3MpYCBwcm9iZTsgc2VsZWN0b3IgN2RmNzNlMjcsIGFyZyBpcyB0aGUgMzItYnl0ZSBsZWZ0LXBhZGRlZCBhZGRyZXNzXG5leHBvcnQgY29uc3QgaXNTaWduZXJQcm9iZSA9IChcbiAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiBzdHJpbmcsXG4gIHNpZ25lckFkZHJlc3M6IHN0cmluZyxcbiAgaXNTaWduZXIgPSB0cnVlXG4pOiBOb2NrRGF0YUVudHJ5ID0+ICh7XG4gIHBhcmFtczoge1xuICAgIG1ldGhvZDogJ2V0aF9jYWxsJyxcbiAgICBwYXJhbXM6IFtcbiAgICAgIHtcbiAgICAgICAgdG86IHdhbGxldENvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgZGF0YTogJzB4N2RmNzNlMjcnICsgc2lnbmVyQWRkcmVzcy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJzB4JywgJycpLnBhZFN0YXJ0KDY0LCAnMCcpLFxuICAgICAgfSxcbiAgICAgICdsYXRlc3QnLFxuICAgIF0sXG4gIH0sXG4gIHJlc3BvbnNlOiB7XG4gICAgcmVzdWx0OiBpc1NpZ25lciA/IEFCSV9UUlVFIDogQUJJX0ZBTFNFLFxuICAgIGlkOiAwLFxuICAgIGpzb25ycGM6ICcyLjAnLFxuICB9LFxufSk7XG5cbmNvbnN0IG5vY2tFdGhEYXRhOiBOb2NrRGF0YUVudHJ5W10gPSBbXG4gIGlzU2lnbmVyUHJvYmUoJzB4NWRmNWE5NmI0NzhiYjE4MDgxNDBkODcwNzIxNDNlNjAyNjJlODY3MCcsICcweGQ3NDc1MzgzMWY0NDVjYWI0MDVhMzE1NjkxYmFmM2ExODM4N2ViM2QnKSxcbiAgaXNTaWduZXJQcm9iZSgnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJywgJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcpLFxuICBpc1NpZ25lclByb2JlKCcweDIyZmY3NDMyMTZiNThhZWIzZWZjNDY5ODU0MDZiNTAxMTJlOWUxNzYnLCAnMHhkYjYwOThlYWM3MDYzNzgzMTgyYWFlMjM5ZDgyNmNkNTU0YWIzYTlkJyksXG4gIGlzU2lnbmVyUHJvYmUoJzB4MjJmZjc0MzIxNmI1OGFlYjNlZmM0Njk4NTQwNmI1MDExMmU5ZTE3NicsICcweGJhNmQ5ZDgyY2YyOTIwYzU0NGI4MzRiNzJmNGM2ZDExYTNlZjNkZTYnKSxcbiAgaXNTaWduZXJQcm9iZSgnMHhkZjA3MTE3NzA1YTlmOGRjNGMyYTc4ZGU2NmI3ZjE3OTdkYmE5ZDRlJywgJzB4MjZhMTYzYmE5NzM5NTI5NzIwYzA5MTRjNTgzODY1ZGVjMGQzNzI3OCcpLFxuICBpc1NpZ25lclByb2JlKCcweGRmMDcxMTc3MDVhOWY4ZGM0YzJhNzhkZTY2YjdmMTc5N2RiYTlkNGUnLCAnMHhhMWE4OGE1MDIyNzQwNzNiMWJjNGZlMDZlYTBmNWZlNzdlMTUxYjkxJyksXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRUcmFuc2FjdGlvbkNvdW50JyxcbiAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDE2MzQ1Nzg1ZDhhMDAwMCcsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRCYWxhbmNlJyxcbiAgICAgIHBhcmFtczogWycweDVkZjVhOTZiNDc4YmIxODA4MTQwZDg3MDcyMTQzZTYwMjYyZTg2NzAnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgxZTg3Zjg1ODA5ZGMwMDAwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldFRyYW5zYWN0aW9uQ291bnQnLFxuICAgICAgcGFyYW1zOiBbJzB4YmE2ZDlkODJjZjI5MjBjNTQ0YjgzNGI3MmY0YzZkMTFhM2VmM2RlNicsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDAnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0QmFsYW5jZScsXG4gICAgICBwYXJhbXM6IFsnMHhiYTZkOWQ4MmNmMjkyMGM1NDRiODM0YjcyZjRjNmQxMWEzZWYzZGU2JywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MCcsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRUcmFuc2FjdGlvbkNvdW50JyxcbiAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDE2MzQ1Nzg1ZDhhMDAwMCcsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9nZXRCYWxhbmNlJyxcbiAgICAgIHBhcmFtczogWycweDVkZjVhOTZiNDc4YmIxODA4MTQwZDg3MDcyMTQzZTYwMjYyZTg2NzAnLCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAgcmVzdWx0OiAnMHgxZTg3Zjg1ODA5ZGMwMDAwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2NhbGwnLFxuICAgICAgcGFyYW1zOiBbeyB0bzogJzB4NWRmNWE5NmI0NzhiYjE4MDgxNDBkODcwNzIxNDNlNjAyNjJlODY3MCcsIGRhdGE6ICcweGEwYjc5NjdiJyB9LCAnbGF0ZXN0J10sXG4gICAgfSxcbiAgICByZXNwb25zZToge1xuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICByZXN1bHQ6ICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEnLFxuICAgICAgaWQ6IDAsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgcGFyYW1zOiBbJzB4YTFhODhhNTAyMjc0MDczYjFiYzRmZTA2ZWEwZjVmZTc3ZTE1MWI5MScsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDQ3MGRlNGRmODIwMDAwJyxcbiAgICAgIGlkOiAwLFxuICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHBhcmFtczoge1xuICAgICAgbWV0aG9kOiAnZXRoX2dldFRyYW5zYWN0aW9uQ291bnQnLFxuICAgICAgcGFyYW1zOiBbJzB4YTFhODhhNTAyMjc0MDczYjFiYzRmZTA2ZWEwZjVmZTc3ZTE1MWI5MScsICdsYXRlc3QnXSxcbiAgICB9LFxuICAgIHJlc3BvbnNlOiB7XG4gICAgICByZXN1bHQ6ICcweDEnLFxuICAgICAgaWQ6IDAsXG4gICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsXG4gICAgICBwYXJhbXM6IFsnMHhhMWE4OGE1MDIyNzQwNzNiMWJjNGZlMDZlYTBmNWZlNzdlMTUxYjkxJywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4MScsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIG1ldGhvZDogJ2V0aF9jYWxsJyxcbiAgICAgIHBhcmFtczogW3sgdG86ICcweGRmMDcxMTc3MDVhOWY4ZGM0YzJhNzhkZTY2YjdmMTc5N2RiYTlkNGUnLCBkYXRhOiAnMHhhMGI3OTY3YicgfSwgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgcmVzdWx0OiAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmE3ZicsXG4gICAgICBpZDogMCxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBtZXRob2Q6ICdldGhfZ2V0QmFsYW5jZScsXG4gICAgICBwYXJhbXM6IFsnMHhkZjA3MTE3NzA1YTlmOGRjNGMyYTc4ZGU2NmI3ZjE3OTdkYmE5ZDRlJywgJ2xhdGVzdCddLFxuICAgIH0sXG4gICAgcmVzcG9uc2U6IHtcbiAgICAgIHJlc3VsdDogJzB4OGFjNzIzMDQ4OWU3ZmZiOCcsXG4gICAgICBpZDogMCxcbiAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ja0V0aHdSZWNvdmVyeShiaXRnbzogVGVzdEJpdEdvQVBJLCBub2NrRGF0YTogTm9ja0RhdGFFbnRyeVtdID0gbm9ja0V0aERhdGEpOiB2b2lkIHtcbiAgbm9ja0RhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgIG5vY2soJ2h0dHBzOi8vbWFpbm5ldC5ldGhlcmV1bXBvdy5vcmcnKVxuICAgICAgLnBvc3QoJy8nLCB7XG4gICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICBpZDogMCxcbiAgICAgICAgLi4uZGF0YS5wYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnJlcGx5KDIwMCwgZGF0YS5yZXNwb25zZSk7XG4gIH0pO1xufVxuIl19
@@ -37,6 +37,7 @@ const nock = __importStar(require("nock"));
37
37
  const should = __importStar(require("should"));
38
38
  const sdk_test_1 = require("@bitgo-beta/sdk-test");
39
39
  const sdk_api_1 = require("@bitgo-beta/sdk-api");
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
40
41
  const index_1 = require("../../src/index");
41
42
  const recovery_nocks_1 = require("../lib/recovery-nocks");
42
43
  nock.disableNetConnect();
@@ -90,6 +91,8 @@ describe('Ethereum pow', function () {
90
91
  });
91
92
  it('should throw if etherscan errs', async function () {
92
93
  const nockUnsuccessfulEtherscanData = [
94
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0xd74753831f445cab405a315691baf3a18387eb3d'),
95
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0x74c2137d54b0fc9f907e13f14e0dd18485fee924'),
93
96
  {
94
97
  params: {
95
98
  method: 'eth_getTransactionCount',
@@ -123,6 +126,8 @@ describe('Ethereum pow', function () {
123
126
  });
124
127
  it('should throw if backup key address has insufficient balance', async function () {
125
128
  const insufficientFeeData = [
129
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0xd74753831f445cab405a315691baf3a18387eb3d'),
130
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0x74c2137d54b0fc9f907e13f14e0dd18485fee924'),
126
131
  {
127
132
  params: {
128
133
  method: 'eth_getTransactionCount',
@@ -201,6 +206,16 @@ describe('Ethereum pow', function () {
201
206
  recovery.should.have.property('tx');
202
207
  await checkRecoveryTxExplanation(recovery.tx, 2200000000000000000, recoveryParams.recoveryDestination);
203
208
  });
209
+ it('should throw RecoveryKeyMismatchError when the user key is not a wallet signer', async function () {
210
+ const userNotSignerData = [
211
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0xd74753831f445cab405a315691baf3a18387eb3d', false),
212
+ (0, recovery_nocks_1.isSignerProbe)('0x5df5a96b478bb1808140d87072143e60262e8670', '0x74c2137d54b0fc9f907e13f14e0dd18485fee924'),
213
+ ];
214
+ (0, recovery_nocks_1.nockEthwRecovery)(bitgo, userNotSignerData);
215
+ await basecoin
216
+ .recover(recoveryParams)
217
+ .should.be.rejectedWith(sdk_core_1.RecoveryKeyMismatchError, { code: 'recovery_key_mismatch' });
218
+ });
204
219
  it('should error when the backup key is unfunded (cannot pay gas)', async function () {
205
220
  (0, recovery_nocks_1.nockEthwRecovery)(bitgo);
206
221
  await basecoin
@@ -259,4 +274,4 @@ describe('Ethereum pow', function () {
259
274
  }
260
275
  });
261
276
  });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsK0NBQWlDO0FBRWpDLG1EQUErRDtBQUMvRCxpREFBK0M7QUFFL0MsMkNBQXVDO0FBQ3ZDLDBEQUF5RDtBQUV6RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzFFLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUVoRCxRQUFRLENBQUMsY0FBYyxFQUFFO0lBQ3ZCLElBQUksUUFBUSxDQUFDO0lBRWIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUM7UUFDSixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsQ0FBQztRQUNuQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsY0FBYyxHQUFHO2dCQUNmLE9BQU8sRUFDTCwrRUFBK0U7b0JBQy9FLCtFQUErRTtvQkFDL0UsK0VBQStFO29CQUMvRSwyRUFBMkU7Z0JBQzdFLFNBQVMsRUFDUCwrRUFBK0U7b0JBQy9FLCtFQUErRTtvQkFDL0UsK0VBQStFO29CQUMvRSwyRUFBMkU7Z0JBQzdFLGdCQUFnQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLHNCQUFzQjtnQkFDckQscUJBQXFCLEVBQUUsNENBQTRDO2dCQUNuRSxtQkFBbUIsRUFBRSw0Q0FBNEM7Z0JBQ2pFLHVCQUF1QixFQUFFO29CQUN2QixLQUFLLEVBQUUsS0FBSztpQkFDYjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLO1lBQzFDLElBQUEsaUNBQWdCLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsTUFBTSxRQUFRO2lCQUNYLE9BQU8sQ0FBQztnQkFDUCxHQUFHLGNBQWM7Z0JBQ2pCLFFBQVEsRUFBRSxDQUFDLE1BQU07Z0JBQ2pCLFFBQVEsRUFBRSxXQUFXO2FBQ3RCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLO1lBQ3hDLE1BQU0sNkJBQTZCLEdBQVU7Z0JBQzNDO29CQUNFLE1BQU0sRUFBRTt3QkFDTixNQUFNLEVBQUUseUJBQXlCO3dCQUNqQyxNQUFNLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxRQUFRLENBQUM7cUJBQ2pFO29CQUNELFFBQVEsRUFBRTt3QkFDUixNQUFNLEVBQUUsS0FBSzt3QkFDYixFQUFFLEVBQUUsQ0FBQzt3QkFDTCxPQUFPLEVBQUUsS0FBSztxQkFDZjtpQkFDRjtnQkFDRDtvQkFDRSxNQUFNLEVBQUU7d0JBQ04sTUFBTSxFQUFFLGdCQUFnQjt3QkFDeEIsTUFBTSxFQUFFLENBQUMsNENBQTRDLEVBQUUsUUFBUSxDQUFDO3FCQUNqRTtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxDQUFDLEtBQUs7NEJBQ1osT0FBTyxFQUNMLDBHQUEwRzt5QkFDN0c7d0JBQ0QsRUFBRSxFQUFFLENBQUM7d0JBQ0wsT0FBTyxFQUFFLEtBQUs7cUJBQ2Y7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsSUFBQSxpQ0FBZ0IsRUFBQyxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztZQUN2RCxNQUFNLFFBQVE7aUJBQ1gsT0FBTyxDQUFDLGNBQWMsQ0FBQztpQkFDdkIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQ3JCLHlJQUF5SSxDQUMxSSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSztZQUNyRSxNQUFNLG1CQUFtQixHQUFVO2dCQUNqQztvQkFDRSxNQUFNLEVBQUU7d0JBQ04sTUFBTSxFQUFFLHlCQUF5Qjt3QkFDakMsTUFBTSxFQUFFLENBQUMsNENBQTRDLEVBQUUsUUFBUSxDQUFDO3FCQUNqRTtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsRUFBRSxFQUFFLENBQUM7d0JBQ0wsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLE1BQU0sRUFBRSxnQkFBZ0I7d0JBQ3hCLE1BQU0sRUFBRSxDQUFDLDRDQUE0QyxFQUFFLFFBQVEsQ0FBQztxQkFDakU7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLEVBQUUsRUFBRSxDQUFDO3dCQUNMLE9BQU8sRUFBRSxLQUFLO3dCQUNkLE1BQU0sRUFBRSxPQUFPO3FCQUNoQjtpQkFDRjthQUNGLENBQUM7WUFDRixJQUFBLGlDQUFnQixFQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sUUFBUTtpQkFDWCxPQUFPLENBQUM7Z0JBQ1AsR0FBRyxjQUFjO2dCQUNqQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLFVBQVU7YUFDckIsQ0FBQztpQkFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDckIsNkZBQTZGO2dCQUMzRixrSUFBa0ksQ0FDckksQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUs7WUFDMUMsSUFBQSxpQ0FBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixNQUFNLFFBQVE7aUJBQ1gsT0FBTyxDQUFDO2dCQUNQLEdBQUcsY0FBYztnQkFDakIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFFBQVEsRUFBRSxPQUFPO2FBQ2xCLENBQUM7aUJBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxLQUFLO1lBQzVFLElBQUEsaUNBQWdCLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUN0QyxHQUFHLGNBQWM7Z0JBQ2pCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQUM7WUFDSCwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sMEJBQTBCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLO1lBQy9ELElBQUEsaUNBQWdCLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3hELDJEQUEyRDtZQUMzRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsTUFBTSwwQkFBMEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEtBQUs7WUFDNUUsSUFBQSxpQ0FBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLEdBQUcsY0FBYztnQkFDakIsU0FBUyxFQUNQLGlIQUFpSDtnQkFDbkgsV0FBVyxFQUFFLFdBQVc7YUFDekIsQ0FBQyxDQUFDO1lBRUgsMkRBQTJEO1lBQzNELE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxNQUFNLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsS0FBSztZQUN2RSxJQUFBLGlDQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sUUFBUTtpQkFDWCxPQUFPLENBQUM7Z0JBQ1AsT0FBTyxFQUNMLCtFQUErRTtvQkFDL0UsK0VBQStFO29CQUMvRSwrRUFBK0U7b0JBQy9FLDZFQUE2RTtnQkFDL0UsU0FBUyxFQUNQLCtFQUErRTtvQkFDL0UsK0VBQStFO29CQUMvRSwrRUFBK0U7b0JBQy9FLDJFQUEyRTtnQkFDN0UscUJBQXFCLEVBQUUsNENBQTRDO2dCQUNuRSxnQkFBZ0IsRUFBRSxvQkFBUyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0I7Z0JBQ3JELG1CQUFtQixFQUFFLDRDQUE0QzthQUNsRSxDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNyQixxTkFBcU4sQ0FDdE4sQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7WUFDL0MsSUFBQSxpQ0FBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUV4QixNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pDLE9BQU8sRUFDTCxpSEFBaUg7Z0JBQ25ILFNBQVMsRUFDUCxpSEFBaUg7Z0JBQ25ILHFCQUFxQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLDZCQUE2QjtnQkFDakUsbUJBQW1CLEVBQUUsb0JBQVMsQ0FBQyxFQUFFLENBQUMsMEJBQTBCO2dCQUM1RCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdkQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRCxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMxRCxXQUFXLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBUyxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzNGLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQVMsQ0FBQyxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNwRixXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNqRSwwQkFBMEIsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLG1CQUFtQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLFVBQVUsMEJBQTBCLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7WUFDL0UsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxPQUFPLEVBQUUsbUJBQW1CO2FBQzdCLENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RCxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcblxuaW1wb3J0IHsgRXRodyB9IGZyb20gJy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgeyBub2NrRXRod1JlY292ZXJ5IH0gZnJvbSAnLi4vbGliL3JlY292ZXJ5LW5vY2tzJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBiaXRnbzogVGVzdEJpdEdvQVBJID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuYml0Z28uc2FmZVJlZ2lzdGVyKCdldGh3JywgRXRody5jcmVhdGVJbnN0YW5jZSk7XG5cbmRlc2NyaWJlKCdFdGhlcmV1bSBwb3cnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiYXNlY29pbjtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbignZXRodycpO1xuICB9KTtcblxuICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluc3RhbnRpYXRlIHRoZSBjb2luJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbignZXRodycpO1xuICAgIGJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEV0aHcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBFdGhlcmV1bSBQb1cnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBub2NrLmNsZWFuQWxsKCk7XG4gICAgfSk7XG4gICAgbGV0IHJlY292ZXJ5UGFyYW1zO1xuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAne1wiaXZcIjpcIitUa21UM0dKNW1zVldRakJydDNsc3c9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCJcXG4nICtcbiAgICAgICAgICAnOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiY0NFMjBmR0lvYnM9XCIsXCJjdFwiOlwiTlZJZFlJaDkxSjNhUklcXG4nICtcbiAgICAgICAgICAnOEdHMEpFM0RoWFczQVVtejJHNVJxTWVqZHoxK3Q0L3ZvdklQN2xsZWVnSTdWWXlXaWlMdmxNME9DRmYzRVZ2Vi9SeVhyOCsydnNuXFxuJyArXG4gICAgICAgICAgJ1EwVm44YzJDVjVGUlo4ME9qR1lyVzNBLzZUL3pwT3o2RThDTXZuRCsraUlwZU80cjJlWkphdmVqWnhkemx4RjBCUno3Vkk9XCJ9JyxcbiAgICAgICAgYmFja3VwS2V5OlxuICAgICAgICAgICd7XCJpdlwiOlwiYXNCMzU2b2ZDN25adGc0TkJ2UWtpUT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICc6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCIxaHIySGhCYkJJaz1cIixcImN0XCI6XCI4Q1pjNnVwdCtYTk90b1xcbicgK1xuICAgICAgICAgICdLREQzOFRVZzNaVWp6VytEcmFabGtja3UyYk5wMEpTMnMxZy9pQzZZVEdVR3RQb3hEeHVtRGxYd2xXUXgrNVdQalp1NzlNOERDcklcXG4nICtcbiAgICAgICAgICAndDlhWmFPdkhrR0g5YUZ0TWJhdkZYNDE5VGNyd0RtcFVlUUZOMGhSa2ZySUhYeUhOYlRwR1NWQWpIdkhNdHpETWF3K0FDZz1cIn0nLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBUZXN0Qml0R28uVjIuVEVTVF9SRUNPVkVSWV9QQVNTQ09ERSxcbiAgICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiAnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4YWMwNWRhNzg0NjQ1MjBhYTdjOWQ0YzE5YmQ3YTQ0MGIxMTFiMzA1NCcsXG4gICAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgICAgY2hhaW46IDEwMDAxLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCBnYXNMaW1pdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28pO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICAgIGdhc0xpbWl0OiAtNDAwMDAwLFxuICAgICAgICAgIGdhc1ByaWNlOiAyNTAwMDAwMDAwMCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0dhcyBsaW1pdCBtdXN0IGJlIGJldHdlZW4gMzAwMDAgYW5kIDIwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGV0aGVyc2NhbiBlcnJzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgbm9ja1Vuc3VjY2Vzc2Z1bEV0aGVyc2NhbkRhdGE6IGFueVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtZXRob2Q6ICdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsXG4gICAgICAgICAgICBwYXJhbXM6IFsnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JywgJ2xhdGVzdCddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHJlc3VsdDogJzB4MCcsXG4gICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ2V0aF9nZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgY29kZTogLTMyNjAyLFxuICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICdpbnZhbGlkIGFyZ3VtZW50IDA6IGpzb246IGNhbm5vdCB1bm1hcnNoYWwgaGV4IHN0cmluZyBvZiBvZGQgbGVuZ3RoIGludG8gR28gdmFsdWUgb2YgdHlwZSBjb21tb24uQWRkcmVzcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28sIG5vY2tVbnN1Y2Nlc3NmdWxFdGhlcnNjYW5EYXRhKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnRVRIVyBmdWxsIG5vZGUgZXJyb3I6IC0zMjYwMiAtIGludmFsaWQgYXJndW1lbnQgMDoganNvbjogY2Fubm90IHVubWFyc2hhbCBoZXggc3RyaW5nIG9mIG9kZCBsZW5ndGggaW50byBHbyB2YWx1ZSBvZiB0eXBlIGNvbW1vbi5BZGRyZXNzJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBiYWNrdXAga2V5IGFkZHJlc3MgaGFzIGluc3VmZmljaWVudCBiYWxhbmNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5zdWZmaWNpZW50RmVlRGF0YTogYW55W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ2V0aF9nZXRUcmFuc2FjdGlvbkNvdW50JyxcbiAgICAgICAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIHJlc3VsdDogJzB4MCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgICAgcmVzdWx0OiAnMHg0ZDInLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbywgaW5zdWZmaWNpZW50RmVlRGF0YSk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgLi4ucmVjb3ZlcnlQYXJhbXMsXG4gICAgICAgICAgZ2FzTGltaXQ6IDMwMDAwMCxcbiAgICAgICAgICBnYXNQcmljZTogMTAwMDAwMDAwMCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ0JhY2t1cCBrZXkgYWRkcmVzcyAweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQgaGFzIGJhbGFuY2UgMC4wMDAwMDEyMzQgR3dlaS4nICtcbiAgICAgICAgICAgICdUaGlzIGFkZHJlc3MgbXVzdCBoYXZlIGEgYmFsYW5jZSBvZiBhdCBsZWFzdCAzMDAwMDAgR3dlaSB0byBwZXJmb3JtIHJlY292ZXJpZXMuIFRyeSBzZW5kaW5nIHNvbWUgRVRIIHRvIHRoaXMgYWRkcmVzcyB0aGVuIHJldHJ5LidcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCBnYXNQcmljZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28pO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICAgIGdhc0xpbWl0OiA0MDAwMDAsXG4gICAgICAgICAgZ2FzUHJpY2U6IDI1MDAwMDAsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdHYXMgcHJpY2UgbXVzdCBiZSBiZXR3ZWVuIDEwMDAwMDAwMDAgYW5kIDI1MDAwMDAwMDAwMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VjY2Vzc2Z1bGx5IGNvbnN0cnVjdCBhIHR4IHdpdGggY3VzdG9tIGdhcyBwcmljZSBhbmQgbGltaXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrRXRod1JlY292ZXJ5KGJpdGdvKTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICBnYXNMaW1pdDogNDAwMDAwLFxuICAgICAgICBnYXNQcmljZTogMTAwMDAwMDAwMCxcbiAgICAgIH0pO1xuICAgICAgLy8gaWQgYW5kIHR4IHdpbGwgYWx3YXlzIGJlIGRpZmZlcmVudCBiZWNhdXNlIG9mIGV4cGlyZVRpbWVcbiAgICAgIHNob3VsZC5leGlzdChyZWNvdmVyeSk7XG4gICAgICByZWNvdmVyeS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaWQnKTtcbiAgICAgIHJlY292ZXJ5LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eCcpO1xuICAgICAgYXdhaXQgY2hlY2tSZWNvdmVyeVR4RXhwbGFuYXRpb24ocmVjb3ZlcnkudHgsIDIyMDAwMDAwMDAwMDAwMDAwMDAsIHJlY292ZXJ5UGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb25zdHJ1Y3QgYSByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRob3V0IEJpdEdvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbyk7XG4gICAgICBjb25zdCByZWNvdmVyeSA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpO1xuICAgICAgLy8gaWQgYW5kIHR4IHdpbGwgYWx3YXlzIGJlIGRpZmZlcmVudCBiZWNhdXNlIG9mIGV4cGlyZVRpbWVcbiAgICAgIHNob3VsZC5leGlzdChyZWNvdmVyeSk7XG4gICAgICByZWNvdmVyeS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaWQnKTtcbiAgICAgIHJlY292ZXJ5LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eCcpO1xuICAgICAgYXdhaXQgY2hlY2tSZWNvdmVyeVR4RXhwbGFuYXRpb24ocmVjb3ZlcnkudHgsIDIyMDAwMDAwMDAwMDAwMDAwMDAsIHJlY292ZXJ5UGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb25zdHJ1Y3QgYSByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRob3V0IEJpdEdvIGFuZCB3aXRoIEtSUycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28pO1xuICAgICAgY29uc3QgcmVjb3ZlcnkgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgLi4ucmVjb3ZlcnlQYXJhbXMsXG4gICAgICAgIGJhY2t1cEtleTpcbiAgICAgICAgICAneHB1YjY2MU15TXdBcVJiY0dzQ05pRzRCemJ4TG1YbkpGbzRLNWdWU0UyYjlBeHVmQXRwdVR1bjFTWXdnOVV5a3FxZjREcktyRFo2S3FQbTllaHRoV2JDbWE3cG5hTXJ0WFkxMW5ZN01lRmJFRFBtJyxcbiAgICAgICAga3JzUHJvdmlkZXI6ICdrZXl0ZXJuYWwnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGlkIGFuZCB0eCB3aWxsIGFsd2F5cyBiZSBkaWZmZXJlbnQgYmVjYXVzZSBvZiBleHBpcmVUaW1lXG4gICAgICBzaG91bGQuZXhpc3QocmVjb3ZlcnkpO1xuICAgICAgcmVjb3Zlcnkuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJyk7XG4gICAgICByZWNvdmVyeS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHgnKTtcbiAgICAgIGF3YWl0IGNoZWNrUmVjb3ZlcnlUeEV4cGxhbmF0aW9uKHJlY292ZXJ5LnR4LCAyMjAwMDAwMDAwMDAwMDAwMDAwLCByZWNvdmVyeVBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXJyb3Igd2hlbiB0aGUgYmFja3VwIGtleSBpcyB1bmZ1bmRlZCAoY2Fubm90IHBheSBnYXMpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbyk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAgICd7XCJpdlwiOlwiVk52RzZ0M2ZIZnhNY2Z2TnVhZllZQT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIm1jOXBDazNINDN3PVwiLFwiY3RcIjpcIlFlNFoxZXZhWGNyT01DXFxuJyArXG4gICAgICAgICAgICAnY1EvWE1WVkJPOU0vOTlEMVFRNkx4a0c4ejNmUXR3d09WWE0zLzZkb05ycmlwclVxcythZHBGQzkzS1JjQWFEcm9MMUU2bzE3SjJrXFxuJyArXG4gICAgICAgICAgICAnbWNwWFJkMkN1WFJGT1JabVovNlFCZmpLZkNKM2FxMGtFa0RWdjM3Z1pOVlQzYU50R2tOU1FkQ0VXS1FMd2QxKytyNUFrQT1cIn1cXG4nLFxuICAgICAgICAgIGJhY2t1cEtleTpcbiAgICAgICAgICAgICd7XCJpdlwiOlwiRWpEN3gwT0pYOWtOTS9DM3lFRHZ5UT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIk5hOU52UlJlM244PVwiLFwiY3RcIjpcIkIvQXRTTEhvbHNkTkxyXFxuJyArXG4gICAgICAgICAgICAnNERsaWo0a1EwRTZOeVVVczZ3bzZUMkh0UERBUE8waHloUFBiaDFPQVlxSVM3VmxMOXhtSlJGQzJ6UHh3Ukp2emY2T1dDL200OEhYXFxuJyArXG4gICAgICAgICAgICAndmdMb1hZZ2FoQXJoYWx6SlZsUnhjWFV6NEhPaG96Uldmdi9lSzN0NUhKZm0rMjUrV0JPaVc4WWdTRTdoVkVZVGJlQlJEND1cIn0nLFxuICAgICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJzB4MjJmZjc0MzIxNmI1OGFlYjNlZmM0Njk4NTQwNmI1MDExMmU5ZTE3NicsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogVGVzdEJpdEdvLlYyLlRFU1RfUkVDT1ZFUllfUEFTU0NPREUsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4YWMwNWRhNzg0NjQ1MjBhYTdjOWQ0YzE5YmQ3YTQ0MGIxMTFiMzA1NCcsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdCYWNrdXAga2V5IGFkZHJlc3MgMHhiYTZkOWQ4MmNmMjkyMGM1NDRiODM0YjcyZjRjNmQxMWEzZWYzZGU2IGhhcyBiYWxhbmNlIDAgR3dlaS5UaGlzIGFkZHJlc3MgbXVzdCBoYXZlIGEgYmFsYW5jZSBvZiBhdCBsZWFzdCAxMDAwMDAwMCBHd2VpIHRvIHBlcmZvcm0gcmVjb3Zlcmllcy4gVHJ5IHNlbmRpbmcgc29tZSBFVEggdG8gdGhpcyBhZGRyZXNzIHRoZW4gcmV0cnkuJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhbiBFVEggdW5zaWduZWQgc3dlZXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrRXRod1JlY292ZXJ5KGJpdGdvKTtcblxuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAneHB1YjY2MU15TXdBcVJiY0ZYRGNXRDJ2eHVlYmNUMVpwVEY0VmtlNnFtTVc4eXpkZHdOWXBBUGp2WUVFTDVqTGZ5WVhXMmZ1eHRBeFk4VGdqUFVKTGNmMUM4cXo5TjZWZ1p4QXJLWDRFd0I4ckg1JyxcbiAgICAgICAgYmFja3VwS2V5OlxuICAgICAgICAgICd4cHViNjYxTXlNd0FxUmJjR2hTYVhpa3B1VEM5S1U4OFh4OUxyaktTdzFKS3N2WE5nYWJwVGRnank3TFNvdmg5WkhoY3FoQUhRdTd1dGh1N0ZndU5HZGNDNGFYVEtLNWdxVGNQZTRXdkxZUmJDU0cnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IFRlc3RCaXRHby5WMi5URVNUX0VUSF9XQUxMRVRfRklSU1RfQUREUkVTUyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogVGVzdEJpdEdvLlYyLlRFU1RfRVJDMjBfVE9LRU5fUkVDSVBJRU5ULFxuICAgICAgICBnYXNQcmljZTogJzIwMDAwMDAwMDAwJyxcbiAgICAgICAgZ2FzTGltaXQ6ICc1MDAwMDAnLFxuICAgICAgfSk7XG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29udHJhY3RTZXF1ZW5jZUlkJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZXhwaXJlVGltZScpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2dhc0xpbWl0Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5nYXNMaW1pdC5zaG91bGQuZXF1YWwoJzUwMDAwMCcpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2dhc1ByaWNlJyk7XG4gICAgICB0cmFuc2FjdGlvbi5nYXNQcmljZS5zaG91bGQuZXF1YWwoJzIwMDAwMDAwMDAwJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnd2FsbGV0Q29udHJhY3RBZGRyZXNzJyk7XG4gICAgICB0cmFuc2FjdGlvbi53YWxsZXRDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKFRlc3RCaXRHby5WMi5URVNUX0VUSF9XQUxMRVRfRklSU1RfQUREUkVTUyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncmVjaXBpZW50Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5yZWNpcGllbnQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FkZHJlc3MnKTtcbiAgICAgIHRyYW5zYWN0aW9uLnJlY2lwaWVudC5hZGRyZXNzLnNob3VsZC5lcXVhbChUZXN0Qml0R28uVjIuVEVTVF9FUkMyMF9UT0tFTl9SRUNJUElFTlQpO1xuICAgICAgdHJhbnNhY3Rpb24ucmVjaXBpZW50LnNob3VsZC5oYXZlLnByb3BlcnR5KCdhbW91bnQnKTtcbiAgICAgIHRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQuc2hvdWxkLmVxdWFsKCc5OTk5OTk5OTk5OTk5OTk5OTI4Jyk7XG4gICAgICBjaGVja1JlY292ZXJ5VHhFeHBsYW5hdGlvbih0cmFuc2FjdGlvbi50eCwgOTk5OTk5OTk5OTk5OTk5OTkyOCwgVGVzdEJpdEdvLlYyLlRFU1RfRVJDMjBfVE9LRU5fUkVDSVBJRU5UKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrUmVjb3ZlcnlUeEV4cGxhbmF0aW9uKHR4LCByZWNvdmVyeUFtb3VudCwgcmVjb3ZlcnlEZXN0aW5hdGlvbikge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogJzB4JyArIHR4LCBmZWVJbmZvOiB7IGZlZTogMSB9IH0pO1xuICAgICAgZXhwbGFuYXRpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ291dHB1dHMnKTtcbiAgICAgIGV4cGxhbmF0aW9uLm91dHB1dHMuc2hvdWxkLmNvbnRhaW5FcWwoe1xuICAgICAgICBhbW91bnQ6IHJlY292ZXJ5QW1vdW50LnRvRml4ZWQoKSxcbiAgICAgICAgYWRkcmVzczogcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pO1xuICAgICAgZXhwbGFuYXRpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NoYW5nZU91dHB1dHMnLCBbXSk7XG4gICAgICBleHBsYW5hdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY2hhbmdlQW1vdW50JywgJzAnKTtcbiAgICAgIGV4cGxhbmF0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnLCB7IGZlZTogMSB9KTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsK0NBQWlDO0FBRWpDLG1EQUErRDtBQUMvRCxpREFBK0M7QUFDL0MsbURBQWdFO0FBRWhFLDJDQUF1QztBQUN2QywwREFBdUY7QUFFdkYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFFekIsTUFBTSxLQUFLLEdBQWlCLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMxRSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxZQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFaEQsUUFBUSxDQUFDLGNBQWMsRUFBRTtJQUN2QixJQUFJLFFBQVEsQ0FBQztJQUViLE1BQU0sQ0FBQztRQUNMLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtRQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEs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LENBQUMsT0FBTyxFQUFFO2dCQUNoQyxPQUFPLEVBQUUsbUJBQW1CO2FBQzdCLENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RCxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFJlY292ZXJ5S2V5TWlzbWF0Y2hFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgRXRodyB9IGZyb20gJy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgeyBOb2NrRGF0YUVudHJ5LCBpc1NpZ25lclByb2JlLCBub2NrRXRod1JlY292ZXJ5IH0gZnJvbSAnLi4vbGliL3JlY292ZXJ5LW5vY2tzJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBiaXRnbzogVGVzdEJpdEdvQVBJID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuYml0Z28uc2FmZVJlZ2lzdGVyKCdldGh3JywgRXRody5jcmVhdGVJbnN0YW5jZSk7XG5cbmRlc2NyaWJlKCdFdGhlcmV1bSBwb3cnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiYXNlY29pbjtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbignZXRodycpO1xuICB9KTtcblxuICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluc3RhbnRpYXRlIHRoZSBjb2luJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJhc2Vjb2luID0gYml0Z28uY29pbignZXRodycpO1xuICAgIGJhc2Vjb2luLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEV0aHcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBFdGhlcmV1bSBQb1cnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBub2NrLmNsZWFuQWxsKCk7XG4gICAgfSk7XG4gICAgbGV0IHJlY292ZXJ5UGFyYW1zO1xuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAne1wiaXZcIjpcIitUa21UM0dKNW1zVldRakJydDNsc3c9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCJcXG4nICtcbiAgICAgICAgICAnOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiY0NFMjBmR0lvYnM9XCIsXCJjdFwiOlwiTlZJZFlJaDkxSjNhUklcXG4nICtcbiAgICAgICAgICAnOEdHMEpFM0RoWFczQVVtejJHNVJxTWVqZHoxK3Q0L3ZvdklQN2xsZWVnSTdWWXlXaWlMdmxNME9DRmYzRVZ2Vi9SeVhyOCsydnNuXFxuJyArXG4gICAgICAgICAgJ1EwVm44YzJDVjVGUlo4ME9qR1lyVzNBLzZUL3pwT3o2RThDTXZuRCsraUlwZU80cjJlWkphdmVqWnhkemx4RjBCUno3Vkk9XCJ9JyxcbiAgICAgICAgYmFja3VwS2V5OlxuICAgICAgICAgICd7XCJpdlwiOlwiYXNCMzU2b2ZDN25adGc0TkJ2UWtpUT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICc6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCIxaHIySGhCYkJJaz1cIixcImN0XCI6XCI4Q1pjNnVwdCtYTk90b1xcbicgK1xuICAgICAgICAgICdLREQzOFRVZzNaVWp6VytEcmFabGtja3UyYk5wMEpTMnMxZy9pQzZZVEdVR3RQb3hEeHVtRGxYd2xXUXgrNVdQalp1NzlNOERDcklcXG4nICtcbiAgICAgICAgICAndDlhWmFPdkhrR0g5YUZ0TWJhdkZYNDE5VGNyd0RtcFVlUUZOMGhSa2ZySUhYeUhOYlRwR1NWQWpIdkhNdHpETWF3K0FDZz1cIn0nLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBUZXN0Qml0R28uVjIuVEVTVF9SRUNPVkVSWV9QQVNTQ09ERSxcbiAgICAgICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiAnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4YWMwNWRhNzg0NjQ1MjBhYTdjOWQ0YzE5YmQ3YTQ0MGIxMTFiMzA1NCcsXG4gICAgICAgIHJlcGxheVByb3RlY3Rpb25PcHRpb25zOiB7XG4gICAgICAgICAgY2hhaW46IDEwMDAxLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCBnYXNMaW1pdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28pO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICAgIGdhc0xpbWl0OiAtNDAwMDAwLFxuICAgICAgICAgIGdhc1ByaWNlOiAyNTAwMDAwMDAwMCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0dhcyBsaW1pdCBtdXN0IGJlIGJldHdlZW4gMzAwMDAgYW5kIDIwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGV0aGVyc2NhbiBlcnJzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgbm9ja1Vuc3VjY2Vzc2Z1bEV0aGVyc2NhbkRhdGE6IE5vY2tEYXRhRW50cnlbXSA9IFtcbiAgICAgICAgaXNTaWduZXJQcm9iZSgnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJywgJzB4ZDc0NzUzODMxZjQ0NWNhYjQwNWEzMTU2OTFiYWYzYTE4Mzg3ZWIzZCcpLFxuICAgICAgICBpc1NpZ25lclByb2JlKCcweDVkZjVhOTZiNDc4YmIxODA4MTQwZDg3MDcyMTQzZTYwMjYyZTg2NzAnLCAnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JyksXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ2V0aF9nZXRUcmFuc2FjdGlvbkNvdW50JyxcbiAgICAgICAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgcmVzdWx0OiAnMHgwJyxcbiAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgbWV0aG9kOiAnZXRoX2dldEJhbGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1zOiBbJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcsICdsYXRlc3QnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICBjb2RlOiAtMzI2MDIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgYXJndW1lbnQgMDoganNvbjogY2Fubm90IHVubWFyc2hhbCBoZXggc3RyaW5nIG9mIG9kZCBsZW5ndGggaW50byBHbyB2YWx1ZSBvZiB0eXBlIGNvbW1vbi5BZGRyZXNzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgIGpzb25ycGM6ICcyLjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbywgbm9ja1Vuc3VjY2Vzc2Z1bEV0aGVyc2NhbkRhdGEpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdFVEhXIGZ1bGwgbm9kZSBlcnJvcjogLTMyNjAyIC0gaW52YWxpZCBhcmd1bWVudCAwOiBqc29uOiBjYW5ub3QgdW5tYXJzaGFsIGhleCBzdHJpbmcgb2Ygb2RkIGxlbmd0aCBpbnRvIEdvIHZhbHVlIG9mIHR5cGUgY29tbW9uLkFkZHJlc3MnXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGlmIGJhY2t1cCBrZXkgYWRkcmVzcyBoYXMgaW5zdWZmaWNpZW50IGJhbGFuY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnN1ZmZpY2llbnRGZWVEYXRhOiBOb2NrRGF0YUVudHJ5W10gPSBbXG4gICAgICAgIGlzU2lnbmVyUHJvYmUoJzB4NWRmNWE5NmI0NzhiYjE4MDgxNDBkODcwNzIxNDNlNjAyNjJlODY3MCcsICcweGQ3NDc1MzgzMWY0NDVjYWI0MDVhMzE1NjkxYmFmM2ExODM4N2ViM2QnKSxcbiAgICAgICAgaXNTaWduZXJQcm9iZSgnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJywgJzB4NzRjMjEzN2Q1NGIwZmM5ZjkwN2UxM2YxNGUwZGQxODQ4NWZlZTkyNCcpLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtZXRob2Q6ICdldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCcsXG4gICAgICAgICAgICBwYXJhbXM6IFsnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JywgJ2xhdGVzdCddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAganNvbnJwYzogJzIuMCcsXG4gICAgICAgICAgICByZXN1bHQ6ICcweDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ2V0aF9nZXRCYWxhbmNlJyxcbiAgICAgICAgICAgIHBhcmFtczogWycweDc0YzIxMzdkNTRiMGZjOWY5MDdlMTNmMTRlMGRkMTg0ODVmZWU5MjQnLCAnbGF0ZXN0J10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgICAgIHJlc3VsdDogJzB4NGQyJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28sIGluc3VmZmljaWVudEZlZURhdGEpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIoe1xuICAgICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICAgIGdhc0xpbWl0OiAzMDAwMDAsXG4gICAgICAgICAgZ2FzUHJpY2U6IDEwMDAwMDAwMDAsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdCYWNrdXAga2V5IGFkZHJlc3MgMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0IGhhcyBiYWxhbmNlIDAuMDAwMDAxMjM0IEd3ZWkuJyArXG4gICAgICAgICAgICAnVGhpcyBhZGRyZXNzIG11c3QgaGF2ZSBhIGJhbGFuY2Ugb2YgYXQgbGVhc3QgMzAwMDAwIEd3ZWkgdG8gcGVyZm9ybSByZWNvdmVyaWVzLiBUcnkgc2VuZGluZyBzb21lIEVUSCB0byB0aGlzIGFkZHJlc3MgdGhlbiByZXRyeS4nXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGludmFsaWQgZ2FzUHJpY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrRXRod1JlY292ZXJ5KGJpdGdvKTtcbiAgICAgIGF3YWl0IGJhc2Vjb2luXG4gICAgICAgIC5yZWNvdmVyKHtcbiAgICAgICAgICAuLi5yZWNvdmVyeVBhcmFtcyxcbiAgICAgICAgICBnYXNMaW1pdDogNDAwMDAwLFxuICAgICAgICAgIGdhc1ByaWNlOiAyNTAwMDAwLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnR2FzIHByaWNlIG11c3QgYmUgYmV0d2VlbiAxMDAwMDAwMDAwIGFuZCAyNTAwMDAwMDAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSBjb25zdHJ1Y3QgYSB0eCB3aXRoIGN1c3RvbSBnYXMgcHJpY2UgYW5kIGxpbWl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbyk7XG4gICAgICBjb25zdCByZWNvdmVyeSA9IGF3YWl0IGJhc2Vjb2luLnJlY292ZXIoe1xuICAgICAgICAuLi5yZWNvdmVyeVBhcmFtcyxcbiAgICAgICAgZ2FzTGltaXQ6IDQwMDAwMCxcbiAgICAgICAgZ2FzUHJpY2U6IDEwMDAwMDAwMDAsXG4gICAgICB9KTtcbiAgICAgIC8vIGlkIGFuZCB0eCB3aWxsIGFsd2F5cyBiZSBkaWZmZXJlbnQgYmVjYXVzZSBvZiBleHBpcmVUaW1lXG4gICAgICBzaG91bGQuZXhpc3QocmVjb3ZlcnkpO1xuICAgICAgcmVjb3Zlcnkuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJyk7XG4gICAgICByZWNvdmVyeS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHgnKTtcbiAgICAgIGF3YWl0IGNoZWNrUmVjb3ZlcnlUeEV4cGxhbmF0aW9uKHJlY292ZXJ5LnR4LCAyMjAwMDAwMDAwMDAwMDAwMDAwLCByZWNvdmVyeVBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29uc3RydWN0IGEgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHbycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tFdGh3UmVjb3ZlcnkoYml0Z28pO1xuICAgICAgY29uc3QgcmVjb3ZlcnkgPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcbiAgICAgIC8vIGlkIGFuZCB0eCB3aWxsIGFsd2F5cyBiZSBkaWZmZXJlbnQgYmVjYXVzZSBvZiBleHBpcmVUaW1lXG4gICAgICBzaG91bGQuZXhpc3QocmVjb3ZlcnkpO1xuICAgICAgcmVjb3Zlcnkuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJyk7XG4gICAgICByZWNvdmVyeS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHgnKTtcbiAgICAgIGF3YWl0IGNoZWNrUmVjb3ZlcnlUeEV4cGxhbmF0aW9uKHJlY292ZXJ5LnR4LCAyMjAwMDAwMDAwMDAwMDAwMDAwLCByZWNvdmVyeVBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29uc3RydWN0IGEgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHbyBhbmQgd2l0aCBLUlMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrRXRod1JlY292ZXJ5KGJpdGdvKTtcbiAgICAgIGNvbnN0IHJlY292ZXJ5ID0gYXdhaXQgYmFzZWNvaW4ucmVjb3Zlcih7XG4gICAgICAgIC4uLnJlY292ZXJ5UGFyYW1zLFxuICAgICAgICBiYWNrdXBLZXk6XG4gICAgICAgICAgJ3hwdWI2NjFNeU13QXFSYmNHc0NOaUc0QnpieExtWG5KRm80SzVnVlNFMmI5QXh1ZkF0cHVUdW4xU1l3ZzlVeWtxcWY0RHJLckRaNktxUG05ZWh0aFdiQ21hN3BuYU1ydFhZMTFuWTdNZUZiRURQbScsXG4gICAgICAgIGtyc1Byb3ZpZGVyOiAna2V5dGVybmFsJyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpZCBhbmQgdHggd2lsbCBhbHdheXMgYmUgZGlmZmVyZW50IGJlY2F1c2Ugb2YgZXhwaXJlVGltZVxuICAgICAgc2hvdWxkLmV4aXN0KHJlY292ZXJ5KTtcbiAgICAgIHJlY292ZXJ5LnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZCcpO1xuICAgICAgcmVjb3Zlcnkuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICBhd2FpdCBjaGVja1JlY292ZXJ5VHhFeHBsYW5hdGlvbihyZWNvdmVyeS50eCwgMjIwMDAwMDAwMDAwMDAwMDAwMCwgcmVjb3ZlcnlQYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IFJlY292ZXJ5S2V5TWlzbWF0Y2hFcnJvciB3aGVuIHRoZSB1c2VyIGtleSBpcyBub3QgYSB3YWxsZXQgc2lnbmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdXNlck5vdFNpZ25lckRhdGE6IE5vY2tEYXRhRW50cnlbXSA9IFtcbiAgICAgICAgaXNTaWduZXJQcm9iZShcbiAgICAgICAgICAnMHg1ZGY1YTk2YjQ3OGJiMTgwODE0MGQ4NzA3MjE0M2U2MDI2MmU4NjcwJyxcbiAgICAgICAgICAnMHhkNzQ3NTM4MzFmNDQ1Y2FiNDA1YTMxNTY5MWJhZjNhMTgzODdlYjNkJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApLFxuICAgICAgICBpc1NpZ25lclByb2JlKCcweDVkZjVhOTZiNDc4YmIxODA4MTQwZDg3MDcyMTQzZTYwMjYyZTg2NzAnLCAnMHg3NGMyMTM3ZDU0YjBmYzlmOTA3ZTEzZjE0ZTBkZDE4NDg1ZmVlOTI0JyksXG4gICAgICBdO1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbywgdXNlck5vdFNpZ25lckRhdGEpO1xuICAgICAgYXdhaXQgYmFzZWNvaW5cbiAgICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFJlY292ZXJ5S2V5TWlzbWF0Y2hFcnJvciwgeyBjb2RlOiAncmVjb3Zlcnlfa2V5X21pc21hdGNoJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXJyb3Igd2hlbiB0aGUgYmFja3VwIGtleSBpcyB1bmZ1bmRlZCAoY2Fubm90IHBheSBnYXMpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja0V0aHdSZWNvdmVyeShiaXRnbyk7XG4gICAgICBhd2FpdCBiYXNlY29pblxuICAgICAgICAucmVjb3Zlcih7XG4gICAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAgICd7XCJpdlwiOlwiVk52RzZ0M2ZIZnhNY2Z2TnVhZllZQT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIm1jOXBDazNINDN3PVwiLFwiY3RcIjpcIlFlNFoxZXZhWGNyT01DXFxuJyArXG4gICAgICAgICAgICAnY1EvWE1WVkJPOU0vOTlEMVFRNkx4a0c4ejNmUXR3d09WWE0zLzZkb05ycmlwclVxcythZHBGQzkzS1JjQWFEcm9MMUU2bzE3SjJrXFxuJyArXG4gICAgICAgICAgICAnbWNwWFJkMkN1WFJGT1JabVovNlFCZmpLZkNKM2FxMGtFa0RWdjM3Z1pOVlQzYU50R2tOU1FkQ0VXS1FMd2QxKytyNUFrQT1cIn1cXG4nLFxuICAgICAgICAgIGJhY2t1cEtleTpcbiAgICAgICAgICAgICd7XCJpdlwiOlwiRWpEN3gwT0pYOWtOTS9DM3lFRHZ5UT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIlxcbicgK1xuICAgICAgICAgICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIk5hOU52UlJlM244PVwiLFwiY3RcIjpcIkIvQXRTTEhvbHNkTkxyXFxuJyArXG4gICAgICAgICAgICAnNERsaWo0a1EwRTZOeVVVczZ3bzZUMkh0UERBUE8waHloUFBiaDFPQVlxSVM3VmxMOXhtSlJGQzJ6UHh3Ukp2emY2T1dDL200OEhYXFxuJyArXG4gICAgICAgICAgICAndmdMb1hZZ2FoQXJoYWx6SlZsUnhjWFV6NEhPaG96Uldmdi9lSzN0NUhKZm0rMjUrV0JPaVc4WWdTRTdoVkVZVGJlQlJEND1cIn0nLFxuICAgICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJzB4MjJmZjc0MzIxNmI1OGFlYjNlZmM0Njk4NTQwNmI1MDExMmU5ZTE3NicsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogVGVzdEJpdEdvLlYyLlRFU1RfUkVDT1ZFUllfUEFTU0NPREUsXG4gICAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJzB4YWMwNWRhNzg0NjQ1MjBhYTdjOWQ0YzE5YmQ3YTQ0MGIxMTFiMzA1NCcsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdCYWNrdXAga2V5IGFkZHJlc3MgMHhiYTZkOWQ4MmNmMjkyMGM1NDRiODM0YjcyZjRjNmQxMWEzZWYzZGU2IGhhcyBiYWxhbmNlIDAgR3dlaS5UaGlzIGFkZHJlc3MgbXVzdCBoYXZlIGEgYmFsYW5jZSBvZiBhdCBsZWFzdCAxMDAwMDAwMCBHd2VpIHRvIHBlcmZvcm0gcmVjb3Zlcmllcy4gVHJ5IHNlbmRpbmcgc29tZSBFVEggdG8gdGhpcyBhZGRyZXNzIHRoZW4gcmV0cnkuJ1xuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhbiBFVEggdW5zaWduZWQgc3dlZXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBub2NrRXRod1JlY292ZXJ5KGJpdGdvKTtcblxuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCBiYXNlY29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleTpcbiAgICAgICAgICAneHB1YjY2MU15TXdBcVJiY0ZYRGNXRDJ2eHVlYmNUMVpwVEY0VmtlNnFtTVc4eXpkZHdOWXBBUGp2WUVFTDVqTGZ5WVhXMmZ1eHRBeFk4VGdqUFVKTGNmMUM4cXo5TjZWZ1p4QXJLWDRFd0I4ckg1JyxcbiAgICAgICAgYmFja3VwS2V5OlxuICAgICAgICAgICd4cHViNjYxTXlNd0FxUmJjR2hTYVhpa3B1VEM5S1U4OFh4OUxyaktTdzFKS3N2WE5nYWJwVGRnank3TFNvdmg5WkhoY3FoQUhRdTd1dGh1N0ZndU5HZGNDNGFYVEtLNWdxVGNQZTRXdkxZUmJDU0cnLFxuICAgICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IFRlc3RCaXRHby5WMi5URVNUX0VUSF9XQUxMRVRfRklSU1RfQUREUkVTUyxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogVGVzdEJpdEdvLlYyLlRFU1RfRVJDMjBfVE9LRU5fUkVDSVBJRU5ULFxuICAgICAgICBnYXNQcmljZTogJzIwMDAwMDAwMDAwJyxcbiAgICAgICAgZ2FzTGltaXQ6ICc1MDAwMDAnLFxuICAgICAgfSk7XG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY29udHJhY3RTZXF1ZW5jZUlkJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZXhwaXJlVGltZScpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2dhc0xpbWl0Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5nYXNMaW1pdC5zaG91bGQuZXF1YWwoJzUwMDAwMCcpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2dhc1ByaWNlJyk7XG4gICAgICB0cmFuc2FjdGlvbi5nYXNQcmljZS5zaG91bGQuZXF1YWwoJzIwMDAwMDAwMDAwJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnd2FsbGV0Q29udHJhY3RBZGRyZXNzJyk7XG4gICAgICB0cmFuc2FjdGlvbi53YWxsZXRDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKFRlc3RCaXRHby5WMi5URVNUX0VUSF9XQUxMRVRfRklSU1RfQUREUkVTUyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncmVjaXBpZW50Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5yZWNpcGllbnQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FkZHJlc3MnKTtcbiAgICAgIHRyYW5zYWN0aW9uLnJlY2lwaWVudC5hZGRyZXNzLnNob3VsZC5lcXVhbChUZXN0Qml0R28uVjIuVEVTVF9FUkMyMF9UT0tFTl9SRUNJUElFTlQpO1xuICAgICAgdHJhbnNhY3Rpb24ucmVjaXBpZW50LnNob3VsZC5oYXZlLnByb3BlcnR5KCdhbW91bnQnKTtcbiAgICAgIHRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQuc2hvdWxkLmVxdWFsKCc5OTk5OTk5OTk5OTk5OTk5OTI4Jyk7XG4gICAgICBjaGVja1JlY292ZXJ5VHhFeHBsYW5hdGlvbih0cmFuc2FjdGlvbi50eCwgOTk5OTk5OTk5OTk5OTk5OTkyOCwgVGVzdEJpdEdvLlYyLlRFU1RfRVJDMjBfVE9LRU5fUkVDSVBJRU5UKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrUmVjb3ZlcnlUeEV4cGxhbmF0aW9uKHR4LCByZWNvdmVyeUFtb3VudCwgcmVjb3ZlcnlEZXN0aW5hdGlvbikge1xuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSBhd2FpdCBiYXNlY29pbi5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogJzB4JyArIHR4LCBmZWVJbmZvOiB7IGZlZTogMSB9IH0pO1xuICAgICAgZXhwbGFuYXRpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ291dHB1dHMnKTtcbiAgICAgIGV4cGxhbmF0aW9uLm91dHB1dHMuc2hvdWxkLmNvbnRhaW5FcWwoe1xuICAgICAgICBhbW91bnQ6IHJlY292ZXJ5QW1vdW50LnRvRml4ZWQoKSxcbiAgICAgICAgYWRkcmVzczogcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pO1xuICAgICAgZXhwbGFuYXRpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NoYW5nZU91dHB1dHMnLCBbXSk7XG4gICAgICBleHBsYW5hdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY2hhbmdlQW1vdW50JywgJzAnKTtcbiAgICAgIGV4cGxhbmF0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnLCB7IGZlZTogMSB9KTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=