@bitgo-beta/sdk-api 1.10.1-beta.15 → 1.10.1-beta.1500

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 (65) hide show
  1. package/dist/package.json +24 -27
  2. package/dist/src/api.d.ts +3 -3
  3. package/dist/src/api.d.ts.map +1 -1
  4. package/dist/src/api.js +39 -33
  5. package/dist/src/bitgoAPI.d.ts +73 -13
  6. package/dist/src/bitgoAPI.d.ts.map +1 -1
  7. package/dist/src/bitgoAPI.js +416 -140
  8. package/dist/src/encrypt.d.ts +4 -4
  9. package/dist/src/encrypt.d.ts.map +1 -1
  10. package/dist/src/encrypt.js +44 -7
  11. package/dist/src/index.js +6 -2
  12. package/dist/src/types.d.ts +77 -42
  13. package/dist/src/types.d.ts.map +1 -1
  14. package/dist/src/types.js +4 -2
  15. package/dist/src/util.d.ts +12 -0
  16. package/dist/src/util.d.ts.map +1 -1
  17. package/dist/src/util.js +57 -4
  18. package/dist/src/v1/blockchain.js +25 -12
  19. package/dist/src/v1/keychains.js +27 -22
  20. package/dist/src/v1/markets.js +10 -5
  21. package/dist/src/v1/pendingapproval.d.ts.map +1 -1
  22. package/dist/src/v1/pendingapproval.js +57 -18
  23. package/dist/src/v1/pendingapprovals.d.ts.map +1 -1
  24. package/dist/src/v1/pendingapprovals.js +41 -7
  25. package/dist/src/v1/signPsbt.d.ts +14 -0
  26. package/dist/src/v1/signPsbt.d.ts.map +1 -0
  27. package/dist/src/v1/signPsbt.js +69 -0
  28. package/dist/src/v1/transactionBuilder.js +144 -92
  29. package/dist/src/v1/travelRule.js +60 -23
  30. package/dist/src/v1/verifyAddress.d.ts +6 -0
  31. package/dist/src/v1/verifyAddress.d.ts.map +1 -0
  32. package/dist/src/v1/verifyAddress.js +50 -0
  33. package/dist/src/v1/wallet.d.ts.map +1 -1
  34. package/dist/src/v1/wallet.js +428 -224
  35. package/dist/src/v1/wallets.js +93 -37
  36. package/dist/test/unit/api.d.ts +2 -0
  37. package/dist/test/unit/api.d.ts.map +1 -0
  38. package/dist/test/unit/api.js +158 -0
  39. package/dist/test/unit/bitgoAPI.d.ts +2 -0
  40. package/dist/test/unit/bitgoAPI.d.ts.map +1 -0
  41. package/dist/test/unit/bitgoAPI.js +477 -0
  42. package/dist/test/unit/encrypt.d.ts +2 -0
  43. package/dist/test/unit/encrypt.d.ts.map +1 -0
  44. package/dist/test/unit/encrypt.js +62 -0
  45. package/dist/test/unit/utils.d.ts +2 -0
  46. package/dist/test/unit/utils.d.ts.map +1 -0
  47. package/dist/test/unit/utils.js +65 -0
  48. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts +4 -0
  49. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts.map +1 -0
  50. package/dist/test/unit/v1/fixtures/accelerate-tx.js +53 -0
  51. package/dist/test/unit/v1/fixtures/index.d.ts +3 -0
  52. package/dist/test/unit/v1/fixtures/index.d.ts.map +1 -0
  53. package/dist/test/unit/v1/fixtures/index.js +24 -0
  54. package/dist/test/unit/v1/signPsbt.d.ts +2 -0
  55. package/dist/test/unit/v1/signPsbt.d.ts.map +1 -0
  56. package/dist/test/unit/v1/signPsbt.js +53 -0
  57. package/dist/test/unit/v1/wallet.d.ts +2 -0
  58. package/dist/test/unit/v1/wallet.d.ts.map +1 -0
  59. package/dist/test/unit/v1/wallet.js +1371 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -0
  61. package/package.json +24 -27
  62. package/.eslintignore +0 -5
  63. package/CHANGELOG.md +0 -262
  64. package/dist/web/main.js +0 -2
  65. package/dist/web/main.js.LICENSE.txt +0 -103
package/dist/package.json CHANGED
@@ -1,32 +1,22 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-api",
3
- "version": "1.10.1-beta.15",
3
+ "version": "1.10.1-beta.1500",
4
4
  "description": "REST wrapper for BitGoJS",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
- "exports": {
8
- "./package.json": "./package.json",
9
- ".": {
10
- "node": "./dist/src/index.js",
11
- "default": "./dist/web/main.js"
12
- }
13
- },
14
7
  "browser": {
15
- "superagent-proxy": false
8
+ "proxy-agent": false
16
9
  },
17
10
  "scripts": {
18
11
  "build": "yarn tsc --build --incremental --verbose .",
19
12
  "fmt": "prettier --write .",
20
- "check-fmt": "prettier --check .",
13
+ "check-fmt": "prettier --check '**/*.{ts,js,json}'",
21
14
  "clean": "rm -r ./dist",
22
15
  "lint": "eslint --quiet .",
23
16
  "prepare": "npm run build",
24
- "webpack-dev": "yarn webpack",
25
- "webpack-prod": "yarn webpack --mode=production --node-env=production",
26
- "prepublishOnly": "yarn webpack-prod",
27
17
  "test": "npm run coverage",
28
18
  "coverage": "nyc -- npm run unit-test",
29
- "unit-test": "mocha"
19
+ "unit-test": "mocha 'test/unit/**/*.ts'"
30
20
  },
31
21
  "author": "BitGo SDK Team <sdkteam@bitgo.com>",
32
22
  "license": "MIT",
@@ -50,23 +40,30 @@
50
40
  ]
51
41
  },
52
42
  "dependencies": {
53
- "@bitgo-beta/sdk-core": "8.2.1-beta.15",
54
- "@bitgo-beta/sjcl": "1.0.2-beta.251",
55
- "@bitgo-beta/unspents": "0.13.2-beta.15",
56
- "@bitgo-beta/utxo-lib": "8.0.3-beta.15",
43
+ "@bitgo-beta/sdk-core": "8.2.1-beta.1501",
44
+ "@bitgo-beta/sdk-hmac": "1.0.1-beta.868",
45
+ "@bitgo-beta/sjcl": "1.0.2-beta.1740",
46
+ "@bitgo-beta/unspents": "0.13.2-beta.1501",
47
+ "@bitgo-beta/utxo-lib": "8.0.3-beta.1502",
57
48
  "@types/superagent": "4.1.15",
58
- "bitcoinjs-message": "^2.0.0",
59
- "bluebird": "^3.5.3",
60
- "browser-or-node": "2.0.0",
61
- "bs58": "^2.0.1",
49
+ "bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
62
50
  "debug": "3.1.0",
63
51
  "eol": "^0.5.0",
64
52
  "lodash": "^4.17.15",
65
- "sanitize-html": "^1.27.5",
66
- "secp256k1": "^4.0.2",
53
+ "proxy-agent": "6.4.0",
54
+ "sanitize-html": "^2.11",
55
+ "secp256k1": "5.0.1",
67
56
  "secrets.js-grempe": "^1.1.0",
68
- "superagent": "3.8.3",
69
- "superagent-proxy": "3.0.0"
57
+ "superagent": "^9.0.1"
58
+ },
59
+ "overrides": {
60
+ "degenerator": "5.0.0"
61
+ },
62
+ "resolutions": {
63
+ "degenerator": "5.0.0"
70
64
  },
71
- "gitHead": "9efca289a9914048f59c9feb7c65c84534b884ba"
65
+ "gitHead": "36c25556412294bc2e9d3fa06a4b9e17e597dbdf",
66
+ "files": [
67
+ "dist"
68
+ ]
72
69
  }
package/dist/src/api.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import * as superagent from 'superagent';
1
+ import superagent from 'superagent';
2
2
  import { BitGoRequest } from '@bitgo-beta/sdk-core';
3
- import { VerifyResponseOptions } from './types';
3
+ import { AuthVersion, VerifyResponseOptions } from './types';
4
4
  import { BitGoAPI } from './bitgoAPI';
5
5
  /**
6
6
  * Add the bitgo-specific result() function on a superagent request.
@@ -43,5 +43,5 @@ export declare function setRequestQueryString(req: superagent.SuperAgentRequest)
43
43
  * Verify that the response received from the server is signed correctly.
44
44
  * Right now, it is very permissive with the timestamp variance.
45
45
  */
46
- export declare function verifyResponse(bitgo: BitGoAPI, token: string | undefined, method: VerifyResponseOptions['method'], req: superagent.SuperAgentRequest, response: superagent.Response): superagent.Response;
46
+ export declare function verifyResponse(bitgo: BitGoAPI, token: string | undefined, method: VerifyResponseOptions['method'], req: superagent.SuperAgentRequest, response: superagent.Response, authVersion: AuthVersion): superagent.Response;
47
47
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAoB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,kBAAkB,GAAG,GAAG,EACrD,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAChC,YAAY,CAAC,kBAAkB,CAAC,CASlC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,kBAAkB,EACrD,aAAa,CAAC,EAAE,MAAM,GACrB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAOlD;AAkBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAA;CAAE,GAAG,KAAK,CAKxF;AAgCD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAwB7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,UAAU,CAAC,iBAAiB,EACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,GAC5B,UAAU,CAAC,QAAQ,CA+CrB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,OAAO,EAAoB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,kBAAkB,GAAG,GAAG,EACrD,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAChC,YAAY,CAAC,kBAAkB,CAAC,CASlC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,kBAAkB,EACrD,aAAa,CAAC,EAAE,MAAM,GACrB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAalD;AAkBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAA;CAAE,GAAG,KAAK,CAKxF;AAgCD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAwB7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,UAAU,CAAC,iBAAiB,EACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,WAAW,EAAE,WAAW,GACvB,UAAU,CAAC,QAAQ,CAgDrB"}
package/dist/src/api.js CHANGED
@@ -1,18 +1,26 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyResponse = exports.setRequestQueryString = exports.serializeRequestData = exports.handleResponseError = exports.handleResponseResult = exports.toBitgoRequest = void 0;
6
+ exports.toBitgoRequest = toBitgoRequest;
7
+ exports.handleResponseResult = handleResponseResult;
8
+ exports.handleResponseError = handleResponseError;
9
+ exports.serializeRequestData = serializeRequestData;
10
+ exports.setRequestQueryString = setRequestQueryString;
11
+ exports.verifyResponse = verifyResponse;
4
12
  /**
5
13
  * @prettier
6
14
  */
7
- const debug_1 = require("debug");
8
- const eol = require("eol");
9
- const _ = require("lodash");
10
- const sanitizeHtml = require("sanitize-html");
11
- const superagent = require("superagent");
12
- const urlLib = require("url");
13
- const querystring = require("querystring");
15
+ const debug_1 = __importDefault(require("debug"));
16
+ const eol_1 = __importDefault(require("eol"));
17
+ const lodash_1 = __importDefault(require("lodash"));
18
+ const sanitize_html_1 = __importDefault(require("sanitize-html"));
19
+ const superagent_1 = __importDefault(require("superagent"));
20
+ const url_1 = __importDefault(require("url"));
21
+ const querystring_1 = __importDefault(require("querystring"));
14
22
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
15
- const debug = debug_1.default('bitgo:api');
23
+ const debug = (0, debug_1.default)('bitgo:api');
16
24
  /**
17
25
  * Add the bitgo-specific result() function on a superagent request.
18
26
  *
@@ -31,7 +39,6 @@ function toBitgoRequest(req) {
31
39
  },
32
40
  });
33
41
  }
34
- exports.toBitgoRequest = toBitgoRequest;
35
42
  /**
36
43
  * Return a function which extracts the specified response body property from the response if successful,
37
44
  * otherwise throw an `ApiErrorResponse` parsed from the response body.
@@ -39,13 +46,17 @@ exports.toBitgoRequest = toBitgoRequest;
39
46
  */
40
47
  function handleResponseResult(optionalField) {
41
48
  return function (res) {
42
- if (_.isNumber(res.status) && res.status >= 200 && res.status < 300) {
43
- return optionalField ? res.body[optionalField] : res.body;
49
+ if (lodash_1.default.isNumber(res.status) && res.status >= 200 && res.status < 300) {
50
+ return (
51
+ // If there's an optional field and the body is non-nullish with that property, return it;
52
+ // otherwise return the body if available; if not, return the text; and finally fallback to the entire response.
53
+ (optionalField && res.body && res.body[optionalField] !== undefined ? res.body[optionalField] : res.body) ??
54
+ res.text ??
55
+ res);
44
56
  }
45
57
  throw errFromResponse(res);
46
58
  };
47
59
  }
48
- exports.handleResponseResult = handleResponseResult;
49
60
  /**
50
61
  * Extract relevant information from a successful response (that is, a response with an HTTP status code
51
62
  * between 200 and 299), but which resulted in an application specific error and use it to construct and
@@ -54,12 +65,11 @@ exports.handleResponseResult = handleResponseResult;
54
65
  * @param res
55
66
  */
56
67
  function errFromResponse(res) {
57
- var _a;
58
68
  const message = createResponseErrorString(res);
59
69
  const status = res.status;
60
70
  const result = res.body;
61
- const invalidToken = _.has(res.header, 'x-auth-required') && res.header['x-auth-required'] === 'true';
62
- const needsOtp = ((_a = res.body) === null || _a === void 0 ? void 0 : _a.needsOTP) !== undefined;
71
+ const invalidToken = lodash_1.default.has(res.header, 'x-auth-required') && res.header['x-auth-required'] === 'true';
72
+ const needsOtp = res.body?.needsOTP !== undefined;
63
73
  return new sdk_core_1.ApiResponseError(message, status, result, invalidToken, needsOtp);
64
74
  }
65
75
  /**
@@ -73,16 +83,14 @@ function handleResponseError(e) {
73
83
  }
74
84
  throw e;
75
85
  }
76
- exports.handleResponseError = handleResponseError;
77
86
  /**
78
87
  * There are many ways a request can fail, and may ways information on that failure can be
79
88
  * communicated to the client. This function tries to handle those cases and create a sane error string
80
89
  * @param res Response from an HTTP request
81
90
  */
82
91
  function createResponseErrorString(res) {
83
- var _a;
84
92
  let errString = res.status.toString(); // at the very least we'll have the status code
85
- if ((_a = res.body) === null || _a === void 0 ? void 0 : _a.error) {
93
+ if (res.body?.error) {
86
94
  // this is the case we hope for, where the server gives us a nice error from the JSON body
87
95
  errString = res.body.error;
88
96
  }
@@ -90,11 +98,11 @@ function createResponseErrorString(res) {
90
98
  // if the response came back as text, we try to parse it as HTML and remove all tags, leaving us
91
99
  // just the bare text, which we then trim of excessive newlines and limit to a certain length
92
100
  try {
93
- let sanitizedText = sanitizeHtml(res.text, { allowedTags: [] });
101
+ let sanitizedText = (0, sanitize_html_1.default)(res.text, { allowedTags: [] });
94
102
  sanitizedText = sanitizedText.trim();
95
- sanitizedText = eol.lf(sanitizedText); // use '\n' for all newlines
96
- sanitizedText = _.replace(sanitizedText, /\n[ |\t]{1,}\n/g, '\n\n'); // remove the spaces/tabs between newlines
97
- sanitizedText = _.replace(sanitizedText, /[\n]{3,}/g, '\n\n'); // have at most 2 consecutive newlines
103
+ sanitizedText = eol_1.default.lf(sanitizedText); // use '\n' for all newlines
104
+ sanitizedText = lodash_1.default.replace(sanitizedText, /\n[ |\t]{1,}\n/g, '\n\n'); // remove the spaces/tabs between newlines
105
+ sanitizedText = lodash_1.default.replace(sanitizedText, /[\n]{3,}/g, '\n\n'); // have at most 2 consecutive newlines
98
106
  sanitizedText = sanitizedText.substring(0, 5000); // prevent message from getting too large
99
107
  errString = errString + '\n' + sanitizedText; // add it to our existing errString (at this point the more info the better!)
100
108
  }
@@ -118,9 +126,9 @@ function serializeRequestData(req) {
118
126
  if (contentType) {
119
127
  contentType = contentType.split(';')[0];
120
128
  }
121
- let serialize = superagent.serialize[contentType];
129
+ let serialize = superagent_1.default.serialize[contentType];
122
130
  if (!serialize && /[\/+]json\b/.test(contentType)) {
123
- serialize = superagent.serialize['application/json'];
131
+ serialize = superagent_1.default.serialize['application/json'];
124
132
  }
125
133
  if (serialize) {
126
134
  data = serialize(data);
@@ -129,13 +137,12 @@ function serializeRequestData(req) {
129
137
  }
130
138
  }
131
139
  }
132
- exports.serializeRequestData = serializeRequestData;
133
140
  /**
134
141
  * Set the superagent query string correctly for browsers or node.
135
142
  * @param req
136
143
  */
137
144
  function setRequestQueryString(req) {
138
- const urlDetails = urlLib.parse(req.url);
145
+ const urlDetails = url_1.default.parse(req.url);
139
146
  let queryString;
140
147
  const query = req._query;
141
148
  const qs = req.qs;
@@ -146,7 +153,7 @@ function setRequestQueryString(req) {
146
153
  }
147
154
  else if (qs) {
148
155
  // node version
149
- queryString = querystring.stringify(qs);
156
+ queryString = querystring_1.default.stringify(qs);
150
157
  req.qs = null;
151
158
  }
152
159
  if (queryString) {
@@ -156,15 +163,14 @@ function setRequestQueryString(req) {
156
163
  else {
157
164
  urlDetails.search = '?' + queryString;
158
165
  }
159
- req.url = urlLib.format(urlDetails);
166
+ req.url = url_1.default.format(urlDetails);
160
167
  }
161
168
  }
162
- exports.setRequestQueryString = setRequestQueryString;
163
169
  /**
164
170
  * Verify that the response received from the server is signed correctly.
165
171
  * Right now, it is very permissive with the timestamp variance.
166
172
  */
167
- function verifyResponse(bitgo, token, method, req, response) {
173
+ function verifyResponse(bitgo, token, method, req, response, authVersion) {
168
174
  // we can't verify the response if we're not authenticated
169
175
  if (!req.isV2Authenticated || !req.authenticationToken) {
170
176
  return response;
@@ -177,6 +183,7 @@ function verifyResponse(bitgo, token, method, req, response) {
177
183
  timestamp: response.header.timestamp,
178
184
  token: req.authenticationToken,
179
185
  method,
186
+ authVersion,
180
187
  });
181
188
  if (!verificationResponse.isValid) {
182
189
  // calculate the HMAC
@@ -205,5 +212,4 @@ function verifyResponse(bitgo, token, method, req, response) {
205
212
  }
206
213
  return response;
207
214
  }
208
- exports.verifyResponse = verifyResponse;
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGlDQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0IsNEJBQTRCO0FBQzVCLDhDQUE4QztBQUM5Qyx5Q0FBeUM7QUFDekMsOEJBQThCO0FBQzlCLDJDQUEyQztBQUUzQyxtREFBc0U7QUFLdEUsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLEdBQWlDO0lBRWpDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsTUFBTSxDQUFDLGFBQXNCO1lBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQXFCLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUMvRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQ3RDLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVhELHdDQVdDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxhQUFzQjtJQUV0QixPQUFPLFVBQVUsR0FBd0I7UUFDdkMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuRSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztTQUMzRDtRQUNELE1BQU0sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdC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RkFBdUY7UUFDdkYsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUc7WUFDbkIsWUFBWTtZQUNaLFlBQVk7WUFDWixTQUFTLEVBQUUsZ0JBQWdCO1lBQzNCLFlBQVksRUFBRSxHQUFHLENBQUMsbUJBQW1CO1lBQ3JDLFVBQVUsRUFBRSxpQkFBaUI7U0FDOUIsQ0FBQztRQUNGLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksMkJBQWdCLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0tBQzNHO0lBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEVBQUU7UUFDcEYsTUFBTSxZQUFZLEdBQUc7WUFDbkIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNwQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxnQkFBZ0I7U0FDeEQsQ0FBQztRQUNGLEtBQUssQ0FBQywyREFBMkQsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRixNQUFNLElBQUksMkJBQWdCLENBQ3hCLDBGQUEwRixFQUMxRixHQUFHLEVBQ0gsWUFBWSxDQUNiLENBQUM7S0FDSDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFyREQsd0NBcURDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCAqIGFzIGVvbCBmcm9tICdlb2wnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgc2FuaXRpemVIdG1sIGZyb20gJ3Nhbml0aXplLWh0bWwnO1xuaW1wb3J0ICogYXMgc3VwZXJhZ2VudCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCAqIGFzIHVybExpYiBmcm9tICd1cmwnO1xuaW1wb3J0ICogYXMgcXVlcnlzdHJpbmcgZnJvbSAncXVlcnlzdHJpbmcnO1xuXG5pbXBvcnQgeyBBcGlSZXNwb25zZUVycm9yLCBCaXRHb1JlcXVlc3QgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IFZlcmlmeVJlc3BvbnNlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICcuL2JpdGdvQVBJJztcblxuY29uc3QgZGVidWcgPSBEZWJ1ZygnYml0Z286YXBpJyk7XG5cbi8qKlxuICogQWRkIHRoZSBiaXRnby1zcGVjaWZpYyByZXN1bHQoKSBmdW5jdGlvbiBvbiBhIHN1cGVyYWdlbnQgcmVxdWVzdC5cbiAqXG4gKiBJZiB0aGUgc2VydmVyIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsIHRoZSBgcmVzdWx0KClgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGVpdGhlciB0aGUgZW50aXJlIHJlc3BvbnNlIGJvZHksXG4gKiBvciB0aGUgZmllbGQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keSBzcGVjaWZpZWQgYnkgdGhlIGBvcHRpb25hbEZpZWxkYCBwYXJhbWV0ZXIgaWYgaXQgaXMgcHJvdmlkZWQuXG4gKlxuICogSWYgdGhlIHNlcnZlciByZXNwb25zZSB3aXRoIGFuIGVycm9yLCBgcmVzdWx0KClgIHdpbGwgaGFuZGxlIEhUVFAgZXJyb3JzIGFwcHJvcHJpYXRlbHkgYnlcbiAqIHJldGhyb3dpbmcgdGhlbSBhcyBhbiBgQXBpUmVzcG9uc2VFcnJvcmAgaWYgcG9zc2libGUsIGFuZCBvdGhlcndpc2UgcmV0aHJvd2luZyB0aGUgdW5kZXJseWluZyByZXNwb25zZSBlcnJvci5cbiAqXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0JpdGdvUmVxdWVzdDxSZXNwb25zZVJlc3VsdFR5cGUgPSBhbnk+KFxuICByZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3Rcbik6IEJpdEdvUmVxdWVzdDxSZXNwb25zZVJlc3VsdFR5cGU+IHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVxLCB7XG4gICAgcmVzdWx0KG9wdGlvbmFsRmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXEudGhlbihcbiAgICAgICAgKHJlc3BvbnNlKSA9PiBoYW5kbGVSZXNwb25zZVJlc3VsdDxSZXNwb25zZVJlc3VsdFR5cGU+KG9wdGlvbmFsRmllbGQpKHJlc3BvbnNlKSxcbiAgICAgICAgKGVycm9yKSA9PiBoYW5kbGVSZXNwb25zZUVycm9yKGVycm9yKVxuICAgICAgKTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB3aGljaCBleHRyYWN0cyB0aGUgc3BlY2lmaWVkIHJlc3BvbnNlIGJvZHkgcHJvcGVydHkgZnJvbSB0aGUgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bCxcbiAqIG90aGVyd2lzZSB0aHJvdyBhbiBgQXBpRXJyb3JSZXNwb25zZWAgcGFyc2VkIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkuXG4gKiBAcGFyYW0gb3B0aW9uYWxGaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VSZXN1bHQ8UmVzcG9uc2VSZXN1bHRUeXBlPihcbiAgb3B0aW9uYWxGaWVsZD86IHN0cmluZ1xuKTogKHJlczogc3VwZXJhZ2VudC5SZXNwb25zZSkgPT4gUmVzcG9uc2VSZXN1bHRUeXBlIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UpOiBSZXNwb25zZVJlc3VsdFR5cGUge1xuICAgIGlmIChfLmlzTnVtYmVyKHJlcy5zdGF0dXMpICYmIHJlcy5zdGF0dXMgPj0gMjAwICYmIHJlcy5zdGF0dXMgPCAzMDApIHtcbiAgICAgIHJldHVybiBvcHRpb25hbEZpZWxkID8gcmVzLmJvZHlbb3B0aW9uYWxGaWVsZF0gOiByZXMuYm9keTtcbiAgICB9XG4gICAgdGhyb3cgZXJyRnJvbVJlc3BvbnNlKHJlcyk7XG4gIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIGEgc3VjY2Vzc2Z1bCByZXNwb25zZSAodGhhdCBpcywgYSByZXNwb25zZSB3aXRoIGFuIEhUVFAgc3RhdHVzIGNvZGVcbiAqIGJldHdlZW4gMjAwIGFuZCAyOTkpLCBidXQgd2hpY2ggcmVzdWx0ZWQgaW4gYW4gYXBwbGljYXRpb24gc3BlY2lmaWMgZXJyb3IgYW5kIHVzZSBpdCB0byBjb25zdHJ1Y3QgYW5kXG4gKiB0aHJvdyBhbiBgQXBpRXJyb3JSZXNwb25zZWAuXG4gKlxuICogQHBhcmFtIHJlc1xuICovXG5mdW5jdGlvbiBlcnJGcm9tUmVzcG9uc2U8UmVzcG9uc2VCb2R5VHlwZT4ocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKTogQXBpUmVzcG9uc2VFcnJvciB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVSZXNwb25zZUVycm9yU3RyaW5nKHJlcyk7XG4gIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXM7XG4gIGNvbnN0IHJlc3VsdCA9IHJlcy5ib2R5IGFzIFJlc3BvbnNlQm9keVR5cGU7XG4gIGNvbnN0IGludmFsaWRUb2tlbiA9IF8uaGFzKHJlcy5oZWFkZXIsICd4LWF1dGgtcmVxdWlyZWQnKSAmJiByZXMuaGVhZGVyWyd4LWF1dGgtcmVxdWlyZWQnXSA9PT0gJ3RydWUnO1xuICBjb25zdCBuZWVkc090cCA9IHJlcy5ib2R5Py5uZWVkc09UUCAhPT0gdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IEFwaVJlc3BvbnNlRXJyb3IobWVzc2FnZSwgc3RhdHVzLCByZXN1bHQsIGludmFsaWRUb2tlbiwgbmVlZHNPdHApO1xufVxuXG4vKipcbiAqIEhhbmRsZSBhbiBlcnJvciBvciBhbiBlcnJvciBjb250YWluaW5nIGFuIEhUVFAgcmVzcG9uc2UgYW5kIHVzZSBpdCB0byB0aHJvdyBhIHdlbGwtZm9ybWVkIGVycm9yIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VFcnJvcihlOiBFcnJvciAmIHsgcmVzcG9uc2U/OiBzdXBlcmFnZW50LlJlc3BvbnNlIH0pOiBuZXZlciB7XG4gIGlmIChlLnJlc3BvbnNlKSB7XG4gICAgdGhyb3cgZXJyRnJvbVJlc3BvbnNlKGUucmVzcG9uc2UpO1xuICB9XG4gIHRocm93IGU7XG59XG5cbi8qKlxuICogVGhlcmUgYXJlIG1hbnkgd2F5cyBhIHJlcXVlc3QgY2FuIGZhaWwsIGFuZCBtYXkgd2F5cyBpbmZvcm1hdGlvbiBvbiB0aGF0IGZhaWx1cmUgY2FuIGJlXG4gKiBjb21tdW5pY2F0ZWQgdG8gdGhlIGNsaWVudC4gVGhpcyBmdW5jdGlvbiB0cmllcyB0byBoYW5kbGUgdGhvc2UgY2FzZXMgYW5kIGNyZWF0ZSBhIHNhbmUgZXJyb3Igc3RyaW5nXG4gKiBAcGFyYW0gcmVzIFJlc3BvbnNlIGZyb20gYW4gSFRUUCByZXF1ZXN0XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlRXJyb3JTdHJpbmcocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKTogc3RyaW5nIHtcbiAgbGV0IGVyclN0cmluZyA9IHJlcy5zdGF0dXMudG9TdHJpbmcoKTsgLy8gYXQgdGhlIHZlcnkgbGVhc3Qgd2UnbGwgaGF2ZSB0aGUgc3RhdHVzIGNvZGVcbiAgaWYgKHJlcy5ib2R5Py5lcnJvcikge1xuICAgIC8vIHRoaXMgaXMgdGhlIGNhc2Ugd2UgaG9wZSBmb3IsIHdoZXJlIHRoZSBzZXJ2ZXIgZ2l2ZXMgdXMgYSBuaWNlIGVycm9yIGZyb20gdGhlIEpTT04gYm9keVxuICAgIGVyclN0cmluZyA9IHJlcy5ib2R5LmVycm9yO1xuICB9IGVsc2UgaWYgKHJlcy50ZXh0KSB7XG4gICAgLy8gaWYgdGhlIHJlc3BvbnNlIGNhbWUgYmFjayBhcyB0ZXh0LCB3ZSB0cnkgdG8gcGFyc2UgaXQgYXMgSFRNTCBhbmQgcmVtb3ZlIGFsbCB0YWdzLCBsZWF2aW5nIHVzXG4gICAgLy8ganVzdCB0aGUgYmFyZSB0ZXh0LCB3aGljaCB3ZSB0aGVuIHRyaW0gb2YgZXhjZXNzaXZlIG5ld2xpbmVzIGFuZCBsaW1pdCB0byBhIGNlcnRhaW4gbGVuZ3RoXG4gICAgdHJ5IHtcbiAgICAgIGxldCBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVIdG1sKHJlcy50ZXh0LCB7IGFsbG93ZWRUYWdzOiBbXSB9KTtcbiAgICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnRyaW0oKTtcbiAgICAgIHNhbml0aXplZFRleHQgPSBlb2wubGYoc2FuaXRpemVkVGV4dCk7IC8vIHVzZSAnXFxuJyBmb3IgYWxsIG5ld2xpbmVzXG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gXy5yZXBsYWNlKHNhbml0aXplZFRleHQsIC9cXG5bIHxcXHRdezEsfVxcbi9nLCAnXFxuXFxuJyk7IC8vIHJlbW92ZSB0aGUgc3BhY2VzL3RhYnMgYmV0d2VlbiBuZXdsaW5lc1xuICAgICAgc2FuaXRpemVkVGV4dCA9IF8ucmVwbGFjZShzYW5pdGl6ZWRUZXh0LCAvW1xcbl17Myx9L2csICdcXG5cXG4nKTsgLy8gaGF2ZSBhdCBtb3N0IDIgY29uc2VjdXRpdmUgbmV3bGluZXNcbiAgICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnN1YnN0cmluZygwLCA1MDAwKTsgLy8gcHJldmVudCBtZXNzYWdlIGZyb20gZ2V0dGluZyB0b28gbGFyZ2VcbiAgICAgIGVyclN0cmluZyA9IGVyclN0cmluZyArICdcXG4nICsgc2FuaXRpemVkVGV4dDsgLy8gYWRkIGl0IHRvIG91ciBleGlzdGluZyBlcnJTdHJpbmcgKGF0IHRoaXMgcG9pbnQgdGhlIG1vcmUgaW5mbyB0aGUgYmV0dGVyISlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBkbyBub3RoaW5nLCB0aGUgcmVzcG9uc2UncyBIVE1MIHdhcyB0b28gd2Fja3kgdG8gYmUgcGFyc2VkIGNsZWFubHlcbiAgICAgIGRlYnVnKCdnb3QgZXJyb3Igd2l0aCBtZXNzYWdlIFwiJXNcIiB3aGlsZSBjcmVhdGluZyByZXNwb25zZSBlcnJvciBzdHJpbmcgZnJvbSByZXNwb25zZTogJXMnLCBlLm1lc3NhZ2UsIHJlcy50ZXh0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyU3RyaW5nO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSByZXF1ZXN0IGRhdGEgYmFzZWQgb24gdGhlIHJlcXVlc3QgY29udGVudCB0eXBlXG4gKiBOb3RlOiBOb3Qgc3VyZSB0aGlzIGlzIHN0aWxsIG5lZWRlZCBvciBldmVuIHVzZWZ1bC4gQ29uc2lkZXIgcmVtb3ZpbmcuXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZXF1ZXN0RGF0YShyZXE6IHN1cGVyYWdlbnQuUmVxdWVzdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBkYXRhOiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IChyZXEgYXMgYW55KS5fZGF0YTtcbiAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgIGxldCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuICAgIC8vIFBhcnNlIG91dCBqdXN0IHRoZSBjb250ZW50IHR5cGUgZnJvbSB0aGUgaGVhZGVyIChpZ25vcmUgdGhlIGNoYXJzZXQpXG4gICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7JylbMF07XG4gICAgfVxuICAgIGxldCBzZXJpYWxpemUgPSBzdXBlcmFnZW50LnNlcmlhbGl6ZVtjb250ZW50VHlwZV07XG4gICAgaWYgKCFzZXJpYWxpemUgJiYgL1tcXC8rXWpzb25cXGIvLnRlc3QoY29udGVudFR5cGUpKSB7XG4gICAgICBzZXJpYWxpemUgPSBzdXBlcmFnZW50LnNlcmlhbGl6ZVsnYXBwbGljYXRpb24vanNvbiddO1xuICAgIH1cbiAgICBpZiAoc2VyaWFsaXplKSB7XG4gICAgICBkYXRhID0gc2VyaWFsaXplKGRhdGEpO1xuICAgICAgKHJlcSBhcyBhbnkpLl9kYXRhID0gZGF0YTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNldCB0aGUgc3VwZXJhZ2VudCBxdWVyeSBzdHJpbmcgY29ycmVjdGx5IGZvciBicm93c2VycyBvciBub2RlLlxuICogQHBhcmFtIHJlcVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVxdWVzdFF1ZXJ5U3RyaW5nKHJlcTogc3VwZXJhZ2VudC5TdXBlckFnZW50UmVxdWVzdCk6IHZvaWQge1xuICBjb25zdCB1cmxEZXRhaWxzID0gdXJsTGliLnBhcnNlKHJlcS51cmwpO1xuXG4gIGxldCBxdWVyeVN0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb25zdCBxdWVyeTogc3RyaW5nW10gPSAocmVxIGFzIGFueSkuX3F1ZXJ5O1xuICBjb25zdCBxczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IChyZXEgYXMgYW55KS5xcztcbiAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAvLyBicm93c2VyIHZlcnNpb25cbiAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5LmpvaW4oJyYnKTtcbiAgICAocmVxIGFzIGFueSkuX3F1ZXJ5ID0gW107XG4gIH0gZWxzZSBpZiAocXMpIHtcbiAgICAvLyBub2RlIHZlcnNpb25cbiAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxcyk7XG4gICAgKHJlcSBhcyBhbnkpLnFzID0gbnVsbDtcbiAgfVxuXG4gIGlmIChxdWVyeVN0cmluZykge1xuICAgIGlmICh1cmxEZXRhaWxzLnNlYXJjaCkge1xuICAgICAgdXJsRGV0YWlscy5zZWFyY2ggKz0gJyYnICsgcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybERldGFpbHMuc2VhcmNoID0gJz8nICsgcXVlcnlTdHJpbmc7XG4gICAgfVxuICAgIHJlcS51cmwgPSB1cmxMaWIuZm9ybWF0KHVybERldGFpbHMpO1xuICB9XG59XG5cbi8qKlxuICogVmVyaWZ5IHRoYXQgdGhlIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciBpcyBzaWduZWQgY29ycmVjdGx5LlxuICogUmlnaHQgbm93LCBpdCBpcyB2ZXJ5IHBlcm1pc3NpdmUgd2l0aCB0aGUgdGltZXN0YW1wIHZhcmlhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UmVzcG9uc2UoXG4gIGJpdGdvOiBCaXRHb0FQSSxcbiAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgbWV0aG9kOiBWZXJpZnlSZXNwb25zZU9wdGlvbnNbJ21ldGhvZCddLFxuICByZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3QsXG4gIHJlc3BvbnNlOiBzdXBlcmFnZW50LlJlc3BvbnNlXG4pOiBzdXBlcmFnZW50LlJlc3BvbnNlIHtcbiAgLy8gd2UgY2FuJ3QgdmVyaWZ5IHRoZSByZXNwb25zZSBpZiB3ZSdyZSBub3QgYXV0aGVudGljYXRlZFxuICBpZiAoIXJlcS5pc1YyQXV0aGVudGljYXRlZCB8fCAhcmVxLmF1dGhlbnRpY2F0aW9uVG9rZW4pIHtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBjb25zdCB2ZXJpZmljYXRpb25SZXNwb25zZSA9IGJpdGdvLnZlcmlmeVJlc3BvbnNlKHtcbiAgICB1cmw6IHJlcS51cmwsXG4gICAgaG1hYzogcmVzcG9uc2UuaGVhZGVyLmhtYWMsXG4gICAgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzLFxuICAgIHRleHQ6IHJlc3BvbnNlLnRleHQsXG4gICAgdGltZXN0YW1wOiByZXNwb25zZS5oZWFkZXIudGltZXN0YW1wLFxuICAgIHRva2VuOiByZXEuYXV0aGVudGljYXRpb25Ub2tlbixcbiAgICBtZXRob2QsXG4gIH0pO1xuXG4gIGlmICghdmVyaWZpY2F0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgIC8vIGNhbGN1bGF0ZSB0aGUgSE1BQ1xuICAgIGNvbnN0IHJlY2VpdmVkSG1hYyA9IHJlc3BvbnNlLmhlYWRlci5obWFjO1xuICAgIGNvbnN0IGV4cGVjdGVkSG1hYyA9IHZlcmlmaWNhdGlvblJlc3BvbnNlLmV4cGVjdGVkSG1hYztcbiAgICBjb25zdCBzaWduYXR1cmVTdWJqZWN0ID0gdmVyaWZpY2F0aW9uUmVzcG9uc2Uuc2lnbmF0dXJlU3ViamVjdDtcbiAgICAvLyBMb2cgb25seSB0aGUgZmlyc3QgMTAgY2hhcmFjdGVycyBvZiB0aGUgdG9rZW4gdG8gZW5zdXJlIHRoZSBmdWxsIHRva2VuIGlzbid0IGxvZ2dlZC5cbiAgICBjb25zdCBwYXJ0aWFsQml0Z29Ub2tlbiA9IHRva2VuID8gdG9rZW4uc3Vic3RyaW5nKDAsIDEwKSA6ICcnO1xuICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IHtcbiAgICAgIGV4cGVjdGVkSG1hYyxcbiAgICAgIHJlY2VpdmVkSG1hYyxcbiAgICAgIGhtYWNJbnB1dDogc2lnbmF0dXJlU3ViamVjdCxcbiAgICAgIHJlcXVlc3RUb2tlbjogcmVxLmF1dGhlbnRpY2F0aW9uVG9rZW4sXG4gICAgICBiaXRnb1Rva2VuOiBwYXJ0aWFsQml0Z29Ub2tlbixcbiAgICB9O1xuICAgIGRlYnVnKCdJbnZhbGlkIHJlc3BvbnNlIEhNQUM6ICVPJywgZXJyb3JEZXRhaWxzKTtcbiAgICB0aHJvdyBuZXcgQXBpUmVzcG9uc2VFcnJvcignaW52YWxpZCByZXNwb25zZSBITUFDLCBwb3NzaWJsZSBtYW4taW4tdGhlLW1pZGRsZS1hdHRhY2snLCA1MTEsIGVycm9yRGV0YWlscyk7XG4gIH1cblxuICBpZiAoYml0Z28uZ2V0QXV0aFZlcnNpb24oKSA9PT0gMyAmJiAhdmVyaWZpY2F0aW9uUmVzcG9uc2UuaXNJblJlc3BvbnNlVmFsaWRpdHlXaW5kb3cpIHtcbiAgICBjb25zdCBlcnJvckRldGFpbHMgPSB7XG4gICAgICB0aW1lc3RhbXA6IHJlc3BvbnNlLmhlYWRlci50aW1lc3RhbXAsXG4gICAgICB2ZXJpZmljYXRpb25UaW1lOiB2ZXJpZmljYXRpb25SZXNwb25zZS52ZXJpZmljYXRpb25UaW1lLFxuICAgIH07XG4gICAgZGVidWcoJ1NlcnZlciByZXNwb25zZSBvdXRzaWRlIHJlc3BvbnNlIHZhbGlkaXR5IHRpbWUgd2luZG93OiAlTycsIGVycm9yRGV0YWlscyk7XG4gICAgdGhyb3cgbmV3IEFwaVJlc3BvbnNlRXJyb3IoXG4gICAgICAnc2VydmVyIHJlc3BvbnNlIG91dHNpZGUgcmVzcG9uc2UgdmFsaWRpdHkgdGltZSB3aW5kb3csIHBvc3NpYmxlIG1hbi1pbi10aGUtbWlkZGxlLWF0dGFjaycsXG4gICAgICA1MTEsXG4gICAgICBlcnJvckRldGFpbHNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZCQSx3Q0FXQztBQU9ELG9EQWVDO0FBdUJELGtEQUtDO0FBcUNELG9EQWtCQztBQU1ELHNEQXdCQztBQU1ELHdDQXVEQztBQTVPRDs7R0FFRztBQUNILGtEQUEwQjtBQUMxQiw4Q0FBc0I7QUFDdEIsb0RBQXVCO0FBQ3ZCLGtFQUF5QztBQUN6Qyw0REFBb0M7QUFDcEMsOENBQXlCO0FBQ3pCLDhEQUFzQztBQUV0QyxtREFBc0U7QUFLdEUsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFLLEVBQUMsV0FBVyxDQUFDLENBQUM7QUFFakM7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsR0FBaUM7SUFFakMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLENBQUMsYUFBc0I7WUFDM0IsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUNiLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBcUIsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQy9FLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FDdEMsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxhQUFzQjtJQUV0QixPQUFPLFVBQVUsR0FBd0I7UUFDdkMsSUFBSSxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNwRSxPQUFPO1lBQ0wsMEZBQTBGO1lBQzFGLGdIQUFnSDtZQUNoSCxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMs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QUNGLEtBQUssQ0FBQywyREFBMkQsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRixNQUFNLElBQUksMkJBQWdCLENBQ3hCLDBGQUEwRixFQUMxRixHQUFHLEVBQ0gsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBEZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgZW9sIGZyb20gJ2VvbCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNhbml0aXplSHRtbCBmcm9tICdzYW5pdGl6ZS1odG1sJztcbmltcG9ydCBzdXBlcmFnZW50IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0IHVybExpYiBmcm9tICd1cmwnO1xuaW1wb3J0IHF1ZXJ5c3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJztcblxuaW1wb3J0IHsgQXBpUmVzcG9uc2VFcnJvciwgQml0R29SZXF1ZXN0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBBdXRoVmVyc2lvbiwgVmVyaWZ5UmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJy4vYml0Z29BUEknO1xuXG5jb25zdCBkZWJ1ZyA9IERlYnVnKCdiaXRnbzphcGknKTtcblxuLyoqXG4gKiBBZGQgdGhlIGJpdGdvLXNwZWNpZmljIHJlc3VsdCgpIGZ1bmN0aW9uIG9uIGEgc3VwZXJhZ2VudCByZXF1ZXN0LlxuICpcbiAqIElmIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bCwgdGhlIGByZXN1bHQoKWAgZnVuY3Rpb24gd2lsbCByZXR1cm4gZWl0aGVyIHRoZSBlbnRpcmUgcmVzcG9uc2UgYm9keSxcbiAqIG9yIHRoZSBmaWVsZCBmcm9tIHRoZSByZXNwb25zZSBib2R5IHNwZWNpZmllZCBieSB0aGUgYG9wdGlvbmFsRmllbGRgIHBhcmFtZXRlciBpZiBpdCBpcyBwcm92aWRlZC5cbiAqXG4gKiBJZiB0aGUgc2VydmVyIHJlc3BvbnNlIHdpdGggYW4gZXJyb3IsIGByZXN1bHQoKWAgd2lsbCBoYW5kbGUgSFRUUCBlcnJvcnMgYXBwcm9wcmlhdGVseSBieVxuICogcmV0aHJvd2luZyB0aGVtIGFzIGFuIGBBcGlSZXNwb25zZUVycm9yYCBpZiBwb3NzaWJsZSwgYW5kIG90aGVyd2lzZSByZXRocm93aW5nIHRoZSB1bmRlcmx5aW5nIHJlc3BvbnNlIGVycm9yLlxuICpcbiAqIEBwYXJhbSByZXFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQml0Z29SZXF1ZXN0PFJlc3BvbnNlUmVzdWx0VHlwZSA9IGFueT4oXG4gIHJlcTogc3VwZXJhZ2VudC5TdXBlckFnZW50UmVxdWVzdFxuKTogQml0R29SZXF1ZXN0PFJlc3BvbnNlUmVzdWx0VHlwZT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZXEsIHtcbiAgICByZXN1bHQob3B0aW9uYWxGaWVsZD86IHN0cmluZykge1xuICAgICAgcmV0dXJuIHJlcS50aGVuKFxuICAgICAgICAocmVzcG9uc2UpID0+IGhhbmRsZVJlc3BvbnNlUmVzdWx0PFJlc3BvbnNlUmVzdWx0VHlwZT4ob3B0aW9uYWxGaWVsZCkocmVzcG9uc2UpLFxuICAgICAgICAoZXJyb3IpID0+IGhhbmRsZVJlc3BvbnNlRXJyb3IoZXJyb3IpXG4gICAgICApO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIGV4dHJhY3RzIHRoZSBzcGVjaWZpZWQgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eSBmcm9tIHRoZSByZXNwb25zZSBpZiBzdWNjZXNzZnVsLFxuICogb3RoZXJ3aXNlIHRocm93IGFuIGBBcGlFcnJvclJlc3BvbnNlYCBwYXJzZWQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keS5cbiAqIEBwYXJhbSBvcHRpb25hbEZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVSZXNwb25zZVJlc3VsdDxSZXNwb25zZVJlc3VsdFR5cGU+KFxuICBvcHRpb25hbEZpZWxkPzogc3RyaW5nXG4pOiAocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKSA9PiBSZXNwb25zZVJlc3VsdFR5cGUge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlczogc3VwZXJhZ2VudC5SZXNwb25zZSk6IFJlc3BvbnNlUmVzdWx0VHlwZSB7XG4gICAgaWYgKF8uaXNOdW1iZXIocmVzLnN0YXR1cykgJiYgcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBvcHRpb25hbCBmaWVsZCBhbmQgdGhlIGJvZHkgaXMgbm9uLW51bGxpc2ggd2l0aCB0aGF0IHByb3BlcnR5LCByZXR1cm4gaXQ7XG4gICAgICAgIC8vIG90aGVyd2lzZSByZXR1cm4gdGhlIGJvZHkgaWYgYXZhaWxhYmxlOyBpZiBub3QsIHJldHVybiB0aGUgdGV4dDsgYW5kIGZpbmFsbHkgZmFsbGJhY2sgdG8gdGhlIGVudGlyZSByZXNwb25zZS5cbiAgICAgICAgKG9wdGlvbmFsRmllbGQgJiYgcmVzLmJvZHkgJiYgcmVzLmJvZHlbb3B0aW9uYWxGaWVsZF0gIT09IHVuZGVmaW5lZCA/IHJlcy5ib2R5W29wdGlvbmFsRmllbGRdIDogcmVzLmJvZHkpID8/XG4gICAgICAgIHJlcy50ZXh0ID8/XG4gICAgICAgIHJlc1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyRnJvbVJlc3BvbnNlKHJlcyk7XG4gIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIGEgc3VjY2Vzc2Z1bCByZXNwb25zZSAodGhhdCBpcywgYSByZXNwb25zZSB3aXRoIGFuIEhUVFAgc3RhdHVzIGNvZGVcbiAqIGJldHdlZW4gMjAwIGFuZCAyOTkpLCBidXQgd2hpY2ggcmVzdWx0ZWQgaW4gYW4gYXBwbGljYXRpb24gc3BlY2lmaWMgZXJyb3IgYW5kIHVzZSBpdCB0byBjb25zdHJ1Y3QgYW5kXG4gKiB0aHJvdyBhbiBgQXBpRXJyb3JSZXNwb25zZWAuXG4gKlxuICogQHBhcmFtIHJlc1xuICovXG5mdW5jdGlvbiBlcnJGcm9tUmVzcG9uc2U8UmVzcG9uc2VCb2R5VHlwZT4ocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKTogQXBpUmVzcG9uc2VFcnJvciB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVSZXNwb25zZUVycm9yU3RyaW5nKHJlcyk7XG4gIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXM7XG4gIGNvbnN0IHJlc3VsdCA9IHJlcy5ib2R5IGFzIFJlc3BvbnNlQm9keVR5cGU7XG4gIGNvbnN0IGludmFsaWRUb2tlbiA9IF8uaGFzKHJlcy5oZWFkZXIsICd4LWF1dGgtcmVxdWlyZWQnKSAmJiByZXMuaGVhZGVyWyd4LWF1dGgtcmVxdWlyZWQnXSA9PT0gJ3RydWUnO1xuICBjb25zdCBuZWVkc090cCA9IHJlcy5ib2R5Py5uZWVkc09UUCAhPT0gdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IEFwaVJlc3BvbnNlRXJyb3IobWVzc2FnZSwgc3RhdHVzLCByZXN1bHQsIGludmFsaWRUb2tlbiwgbmVlZHNPdHApO1xufVxuXG4vKipcbiAqIEhhbmRsZSBhbiBlcnJvciBvciBhbiBlcnJvciBjb250YWluaW5nIGFuIEhUVFAgcmVzcG9uc2UgYW5kIHVzZSBpdCB0byB0aHJvdyBhIHdlbGwtZm9ybWVkIGVycm9yIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VFcnJvcihlOiBFcnJvciAmIHsgcmVzcG9uc2U/OiBzdXBlcmFnZW50LlJlc3BvbnNlIH0pOiBuZXZlciB7XG4gIGlmIChlLnJlc3BvbnNlKSB7XG4gICAgdGhyb3cgZXJyRnJvbVJlc3BvbnNlKGUucmVzcG9uc2UpO1xuICB9XG4gIHRocm93IGU7XG59XG5cbi8qKlxuICogVGhlcmUgYXJlIG1hbnkgd2F5cyBhIHJlcXVlc3QgY2FuIGZhaWwsIGFuZCBtYXkgd2F5cyBpbmZvcm1hdGlvbiBvbiB0aGF0IGZhaWx1cmUgY2FuIGJlXG4gKiBjb21tdW5pY2F0ZWQgdG8gdGhlIGNsaWVudC4gVGhpcyBmdW5jdGlvbiB0cmllcyB0byBoYW5kbGUgdGhvc2UgY2FzZXMgYW5kIGNyZWF0ZSBhIHNhbmUgZXJyb3Igc3RyaW5nXG4gKiBAcGFyYW0gcmVzIFJlc3BvbnNlIGZyb20gYW4gSFRUUCByZXF1ZXN0XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlRXJyb3JTdHJpbmcocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKTogc3RyaW5nIHtcbiAgbGV0IGVyclN0cmluZyA9IHJlcy5zdGF0dXMudG9TdHJpbmcoKTsgLy8gYXQgdGhlIHZlcnkgbGVhc3Qgd2UnbGwgaGF2ZSB0aGUgc3RhdHVzIGNvZGVcbiAgaWYgKHJlcy5ib2R5Py5lcnJvcikge1xuICAgIC8vIHRoaXMgaXMgdGhlIGNhc2Ugd2UgaG9wZSBmb3IsIHdoZXJlIHRoZSBzZXJ2ZXIgZ2l2ZXMgdXMgYSBuaWNlIGVycm9yIGZyb20gdGhlIEpTT04gYm9keVxuICAgIGVyclN0cmluZyA9IHJlcy5ib2R5LmVycm9yO1xuICB9IGVsc2UgaWYgKHJlcy50ZXh0KSB7XG4gICAgLy8gaWYgdGhlIHJlc3BvbnNlIGNhbWUgYmFjayBhcyB0ZXh0LCB3ZSB0cnkgdG8gcGFyc2UgaXQgYXMgSFRNTCBhbmQgcmVtb3ZlIGFsbCB0YWdzLCBsZWF2aW5nIHVzXG4gICAgLy8ganVzdCB0aGUgYmFyZSB0ZXh0LCB3aGljaCB3ZSB0aGVuIHRyaW0gb2YgZXhjZXNzaXZlIG5ld2xpbmVzIGFuZCBsaW1pdCB0byBhIGNlcnRhaW4gbGVuZ3RoXG4gICAgdHJ5IHtcbiAgICAgIGxldCBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVIdG1sKHJlcy50ZXh0LCB7IGFsbG93ZWRUYWdzOiBbXSB9KTtcbiAgICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnRyaW0oKTtcbiAgICAgIHNhbml0aXplZFRleHQgPSBlb2wubGYoc2FuaXRpemVkVGV4dCk7IC8vIHVzZSAnXFxuJyBmb3IgYWxsIG5ld2xpbmVzXG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gXy5yZXBsYWNlKHNhbml0aXplZFRleHQsIC9cXG5bIHxcXHRdezEsfVxcbi9nLCAnXFxuXFxuJyk7IC8vIHJlbW92ZSB0aGUgc3BhY2VzL3RhYnMgYmV0d2VlbiBuZXdsaW5lc1xuICAgICAgc2FuaXRpemVkVGV4dCA9IF8ucmVwbGFjZShzYW5pdGl6ZWRUZXh0LCAvW1xcbl17Myx9L2csICdcXG5cXG4nKTsgLy8gaGF2ZSBhdCBtb3N0IDIgY29uc2VjdXRpdmUgbmV3bGluZXNcbiAgICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnN1YnN0cmluZygwLCA1MDAwKTsgLy8gcHJldmVudCBtZXNzYWdlIGZyb20gZ2V0dGluZyB0b28gbGFyZ2VcbiAgICAgIGVyclN0cmluZyA9IGVyclN0cmluZyArICdcXG4nICsgc2FuaXRpemVkVGV4dDsgLy8gYWRkIGl0IHRvIG91ciBleGlzdGluZyBlcnJTdHJpbmcgKGF0IHRoaXMgcG9pbnQgdGhlIG1vcmUgaW5mbyB0aGUgYmV0dGVyISlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBkbyBub3RoaW5nLCB0aGUgcmVzcG9uc2UncyBIVE1MIHdhcyB0b28gd2Fja3kgdG8gYmUgcGFyc2VkIGNsZWFubHlcbiAgICAgIGRlYnVnKCdnb3QgZXJyb3Igd2l0aCBtZXNzYWdlIFwiJXNcIiB3aGlsZSBjcmVhdGluZyByZXNwb25zZSBlcnJvciBzdHJpbmcgZnJvbSByZXNwb25zZTogJXMnLCBlLm1lc3NhZ2UsIHJlcy50ZXh0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyU3RyaW5nO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSByZXF1ZXN0IGRhdGEgYmFzZWQgb24gdGhlIHJlcXVlc3QgY29udGVudCB0eXBlXG4gKiBOb3RlOiBOb3Qgc3VyZSB0aGlzIGlzIHN0aWxsIG5lZWRlZCBvciBldmVuIHVzZWZ1bC4gQ29uc2lkZXIgcmVtb3ZpbmcuXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZXF1ZXN0RGF0YShyZXE6IHN1cGVyYWdlbnQuUmVxdWVzdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBkYXRhOiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IChyZXEgYXMgYW55KS5fZGF0YTtcbiAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgIGxldCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuICAgIC8vIFBhcnNlIG91dCBqdXN0IHRoZSBjb250ZW50IHR5cGUgZnJvbSB0aGUgaGVhZGVyIChpZ25vcmUgdGhlIGNoYXJzZXQpXG4gICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7JylbMF07XG4gICAgfVxuICAgIGxldCBzZXJpYWxpemUgPSBzdXBlcmFnZW50LnNlcmlhbGl6ZVtjb250ZW50VHlwZV07XG4gICAgaWYgKCFzZXJpYWxpemUgJiYgL1tcXC8rXWpzb25cXGIvLnRlc3QoY29udGVudFR5cGUpKSB7XG4gICAgICBzZXJpYWxpemUgPSBzdXBlcmFnZW50LnNlcmlhbGl6ZVsnYXBwbGljYXRpb24vanNvbiddO1xuICAgIH1cbiAgICBpZiAoc2VyaWFsaXplKSB7XG4gICAgICBkYXRhID0gc2VyaWFsaXplKGRhdGEpO1xuICAgICAgKHJlcSBhcyBhbnkpLl9kYXRhID0gZGF0YTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNldCB0aGUgc3VwZXJhZ2VudCBxdWVyeSBzdHJpbmcgY29ycmVjdGx5IGZvciBicm93c2VycyBvciBub2RlLlxuICogQHBhcmFtIHJlcVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVxdWVzdFF1ZXJ5U3RyaW5nKHJlcTogc3VwZXJhZ2VudC5TdXBlckFnZW50UmVxdWVzdCk6IHZvaWQge1xuICBjb25zdCB1cmxEZXRhaWxzID0gdXJsTGliLnBhcnNlKHJlcS51cmwpO1xuXG4gIGxldCBxdWVyeVN0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb25zdCBxdWVyeTogc3RyaW5nW10gPSAocmVxIGFzIGFueSkuX3F1ZXJ5O1xuICBjb25zdCBxczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IChyZXEgYXMgYW55KS5xcztcbiAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAvLyBicm93c2VyIHZlcnNpb25cbiAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5LmpvaW4oJyYnKTtcbiAgICAocmVxIGFzIGFueSkuX3F1ZXJ5ID0gW107XG4gIH0gZWxzZSBpZiAocXMpIHtcbiAgICAvLyBub2RlIHZlcnNpb25cbiAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxcyk7XG4gICAgKHJlcSBhcyBhbnkpLnFzID0gbnVsbDtcbiAgfVxuXG4gIGlmIChxdWVyeVN0cmluZykge1xuICAgIGlmICh1cmxEZXRhaWxzLnNlYXJjaCkge1xuICAgICAgdXJsRGV0YWlscy5zZWFyY2ggKz0gJyYnICsgcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybERldGFpbHMuc2VhcmNoID0gJz8nICsgcXVlcnlTdHJpbmc7XG4gICAgfVxuICAgIHJlcS51cmwgPSB1cmxMaWIuZm9ybWF0KHVybERldGFpbHMpO1xuICB9XG59XG5cbi8qKlxuICogVmVyaWZ5IHRoYXQgdGhlIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciBpcyBzaWduZWQgY29ycmVjdGx5LlxuICogUmlnaHQgbm93LCBpdCBpcyB2ZXJ5IHBlcm1pc3NpdmUgd2l0aCB0aGUgdGltZXN0YW1wIHZhcmlhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UmVzcG9uc2UoXG4gIGJpdGdvOiBCaXRHb0FQSSxcbiAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgbWV0aG9kOiBWZXJpZnlSZXNwb25zZU9wdGlvbnNbJ21ldGhvZCddLFxuICByZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3QsXG4gIHJlc3BvbnNlOiBzdXBlcmFnZW50LlJlc3BvbnNlLFxuICBhdXRoVmVyc2lvbjogQXV0aFZlcnNpb25cbik6IHN1cGVyYWdlbnQuUmVzcG9uc2Uge1xuICAvLyB3ZSBjYW4ndCB2ZXJpZnkgdGhlIHJlc3BvbnNlIGlmIHdlJ3JlIG5vdCBhdXRoZW50aWNhdGVkXG4gIGlmICghcmVxLmlzVjJBdXRoZW50aWNhdGVkIHx8ICFyZXEuYXV0aGVudGljYXRpb25Ub2tlbikge1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGNvbnN0IHZlcmlmaWNhdGlvblJlc3BvbnNlID0gYml0Z28udmVyaWZ5UmVzcG9uc2Uoe1xuICAgIHVybDogcmVxLnVybCxcbiAgICBobWFjOiByZXNwb25zZS5oZWFkZXIuaG1hYyxcbiAgICBzdGF0dXNDb2RlOiByZXNwb25zZS5zdGF0dXMsXG4gICAgdGV4dDogcmVzcG9uc2UudGV4dCxcbiAgICB0aW1lc3RhbXA6IHJlc3BvbnNlLmhlYWRlci50aW1lc3RhbXAsXG4gICAgdG9rZW46IHJlcS5hdXRoZW50aWNhdGlvblRva2VuLFxuICAgIG1ldGhvZCxcbiAgICBhdXRoVmVyc2lvbixcbiAgfSk7XG5cbiAgaWYgKCF2ZXJpZmljYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgLy8gY2FsY3VsYXRlIHRoZSBITUFDXG4gICAgY29uc3QgcmVjZWl2ZWRIbWFjID0gcmVzcG9uc2UuaGVhZGVyLmhtYWM7XG4gICAgY29uc3QgZXhwZWN0ZWRIbWFjID0gdmVyaWZpY2F0aW9uUmVzcG9uc2UuZXhwZWN0ZWRIbWFjO1xuICAgIGNvbnN0IHNpZ25hdHVyZVN1YmplY3QgPSB2ZXJpZmljYXRpb25SZXNwb25zZS5zaWduYXR1cmVTdWJqZWN0O1xuICAgIC8vIExvZyBvbmx5IHRoZSBmaXJzdCAxMCBjaGFyYWN0ZXJzIG9mIHRoZSB0b2tlbiB0byBlbnN1cmUgdGhlIGZ1bGwgdG9rZW4gaXNuJ3QgbG9nZ2VkLlxuICAgIGNvbnN0IHBhcnRpYWxCaXRnb1Rva2VuID0gdG9rZW4gPyB0b2tlbi5zdWJzdHJpbmcoMCwgMTApIDogJyc7XG4gICAgY29uc3QgZXJyb3JEZXRhaWxzID0ge1xuICAgICAgZXhwZWN0ZWRIbWFjLFxuICAgICAgcmVjZWl2ZWRIbWFjLFxuICAgICAgaG1hY0lucHV0OiBzaWduYXR1cmVTdWJqZWN0LFxuICAgICAgcmVxdWVzdFRva2VuOiByZXEuYXV0aGVudGljYXRpb25Ub2tlbixcbiAgICAgIGJpdGdvVG9rZW46IHBhcnRpYWxCaXRnb1Rva2VuLFxuICAgIH07XG4gICAgZGVidWcoJ0ludmFsaWQgcmVzcG9uc2UgSE1BQzogJU8nLCBlcnJvckRldGFpbHMpO1xuICAgIHRocm93IG5ldyBBcGlSZXNwb25zZUVycm9yKCdpbnZhbGlkIHJlc3BvbnNlIEhNQUMsIHBvc3NpYmxlIG1hbi1pbi10aGUtbWlkZGxlLWF0dGFjaycsIDUxMSwgZXJyb3JEZXRhaWxzKTtcbiAgfVxuXG4gIGlmIChiaXRnby5nZXRBdXRoVmVyc2lvbigpID09PSAzICYmICF2ZXJpZmljYXRpb25SZXNwb25zZS5pc0luUmVzcG9uc2VWYWxpZGl0eVdpbmRvdykge1xuICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IHtcbiAgICAgIHRpbWVzdGFtcDogcmVzcG9uc2UuaGVhZGVyLnRpbWVzdGFtcCxcbiAgICAgIHZlcmlmaWNhdGlvblRpbWU6IHZlcmlmaWNhdGlvblJlc3BvbnNlLnZlcmlmaWNhdGlvblRpbWUsXG4gICAgfTtcbiAgICBkZWJ1ZygnU2VydmVyIHJlc3BvbnNlIG91dHNpZGUgcmVzcG9uc2UgdmFsaWRpdHkgdGltZSB3aW5kb3c6ICVPJywgZXJyb3JEZXRhaWxzKTtcbiAgICB0aHJvdyBuZXcgQXBpUmVzcG9uc2VFcnJvcihcbiAgICAgICdzZXJ2ZXIgcmVzcG9uc2Ugb3V0c2lkZSByZXNwb25zZSB2YWxpZGl0eSB0aW1lIHdpbmRvdywgcG9zc2libGUgbWFuLWluLXRoZS1taWRkbGUtYXR0YWNrJyxcbiAgICAgIDUxMSxcbiAgICAgIGVycm9yRGV0YWlsc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuIl19
@@ -1,8 +1,7 @@
1
+ import { BaseCoin, BitGoBase, BitGoRequest, CoinConstructor, DecryptKeysOptions, DecryptOptions, EcdhDerivedKeypair, EncryptOptions, EnvironmentName, GetSharingKeyOptions, GetSigningKeyApi, IRequestTracer } from '@bitgo-beta/sdk-core';
1
2
  import { ECPairInterface } from '@bitgo-beta/utxo-lib';
2
3
  import * as superagent from 'superagent';
3
- import { BaseCoin, BitGoBase, BitGoRequest, CoinConstructor, DecryptOptions, EncryptOptions, EnvironmentName, GetSharingKeyOptions, GetSigningKeyApi, IRequestTracer } from '@bitgo-beta/sdk-core';
4
- import { AccessTokenOptions, AddAccessTokenResponse, AddAccessTokenOptions, AuthenticateOptions, AuthenticateWithAuthCodeOptions, BitGoAPIOptions, BitGoJson, BitGoSimulateWebhookOptions, CalculateHmacSubjectOptions, CalculateRequestHeadersOptions, CalculateRequestHmacOptions, ChangePasswordOptions, DeprecatedVerifyAddressOptions, EstimateFeeOptions, ExtendTokenOptions, GetEcdhSecretOptions, GetUserOptions, ListWebhookNotificationsOptions, PingOptions, ProcessedAuthenticationOptions, ReconstitutedSecret, ReconstituteSecretOptions, RegisterPushTokenOptions, RemoveAccessTokenOptions, RequestHeaders, SplitSecret, SplitSecretOptions, TokenIssuance, TokenIssuanceResponse, UnlockOptions, User, VerifyPasswordOptions, VerifyPushTokenOptions, VerifyResponseInfo, VerifyResponseOptions, VerifyShardsOptions, WebhookOptions } from './types';
5
- declare const patchedRequestMethods: readonly ["get", "post", "put", "del", "patch"];
4
+ import { AccessTokenOptions, AddAccessTokenOptions, AddAccessTokenResponse, AuthenticateOptions, AuthenticateWithAuthCodeOptions, BitGoAPIOptions, BitGoJson, BitGoSimulateWebhookOptions, CalculateHmacSubjectOptions, CalculateRequestHeadersOptions, CalculateRequestHmacOptions, ChangePasswordOptions, Constants, DeprecatedVerifyAddressOptions, EstimateFeeOptions, ExtendTokenOptions, GetEcdhSecretOptions, GetUserOptions, ListWebhookNotificationsOptions, LoginResponse, PingOptions, ProcessedAuthenticationOptions, ReconstitutedSecret, ReconstituteSecretOptions, RegisterPushTokenOptions, RemoveAccessTokenOptions, RequestHeaders, RequestMethods, SplitSecret, SplitSecretOptions, TokenIssuance, TokenIssuanceResponse, UnlockOptions, User, VerifyPasswordOptions, VerifyPushTokenOptions, VerifyResponseInfo, VerifyResponseOptions, VerifyShardsOptions, WebhookOptions } from './types';
6
5
  export declare class BitGoAPI implements BitGoBase {
7
6
  protected _keychains: any;
8
7
  protected _wallets: any;
@@ -17,6 +16,7 @@ export declare class BitGoAPI implements BitGoBase {
17
16
  protected readonly _baseUrl: string;
18
17
  protected readonly _baseApiUrl: string;
19
18
  protected readonly _baseApiUrlV2: string;
19
+ protected readonly _baseApiUrlV3: string;
20
20
  protected readonly _env: EnvironmentName;
21
21
  protected readonly _authVersion: Exclude<BitGoAPIOptions['authVersion'], undefined>;
22
22
  protected _hmacVerification: boolean;
@@ -33,13 +33,22 @@ export declare class BitGoAPI implements BitGoBase {
33
33
  protected readonly _clientSecret?: string;
34
34
  protected _validate: boolean;
35
35
  readonly cookiesPropagationEnabled: boolean;
36
+ private _customProxyAgent?;
37
+ private _requestIdPrefix?;
38
+ private getAdditionalHeadersCb?;
36
39
  constructor(params?: BitGoAPIOptions);
40
+ /**
41
+ * Initialize client constants if provided.
42
+ * @param clientConstants - The client constants from params
43
+ * @private
44
+ */
45
+ private _initializeClientConstants;
37
46
  /**
38
47
  * Get a superagent request for specified http method and URL configured to the SDK configuration
39
48
  * @param method - http method for the new request
40
49
  * @param url - URL for the new request
41
50
  */
42
- protected getAgentRequest(method: (typeof patchedRequestMethods)[number], url: string): superagent.SuperAgentRequest;
51
+ protected getAgentRequest(method: RequestMethods, url: string): superagent.SuperAgentRequest;
43
52
  /**
44
53
  * Create a basecoin object
45
54
  * @param name
@@ -64,6 +73,7 @@ export declare class BitGoAPI implements BitGoBase {
64
73
  put(url: string): BitGoRequest;
65
74
  del(url: string): BitGoRequest;
66
75
  patch(url: string): BitGoRequest;
76
+ options(url: string): BitGoRequest;
67
77
  /**
68
78
  * Calculate the HMAC for the given key and message
69
79
  * @param key {String} - the key to use for the HMAC
@@ -78,28 +88,28 @@ export declare class BitGoAPI implements BitGoBase {
78
88
  * @param timestamp request timestamp from `Date.now()`
79
89
  * @param statusCode Only set for HTTP responses, leave blank for requests
80
90
  * @param method request method
81
- * @returns {string}
91
+ * @returns {string | Buffer}
82
92
  */
83
- calculateHMACSubject({ urlPath, text, timestamp, statusCode, method }: CalculateHmacSubjectOptions): string;
93
+ calculateHMACSubject<T extends string | Buffer = string>(params: CalculateHmacSubjectOptions<T>): T;
84
94
  /**
85
95
  * Calculate the HMAC for an HTTP request
86
96
  */
87
- calculateRequestHMAC({ url: urlPath, text, timestamp, token, method }: CalculateRequestHmacOptions): string;
97
+ calculateRequestHMAC(params: CalculateRequestHmacOptions): string;
88
98
  /**
89
99
  * Calculate request headers with HMAC
90
100
  */
91
- calculateRequestHeaders({ url, text, token, method }: CalculateRequestHeadersOptions): RequestHeaders;
101
+ calculateRequestHeaders(params: CalculateRequestHeadersOptions): RequestHeaders;
92
102
  /**
93
103
  * Verify the HMAC for an HTTP response
94
104
  */
95
- verifyResponse({ url: urlPath, statusCode, text, timestamp, token, hmac, method, }: VerifyResponseOptions): VerifyResponseInfo;
105
+ verifyResponse(params: VerifyResponseOptions): VerifyResponseInfo;
96
106
  /**
97
107
  * Fetch useful constant values from the BitGo server.
98
108
  * These values do change infrequently, so they need to be fetched,
99
109
  * but are unlikely to change during the lifetime of a BitGo object,
100
110
  * so they can safely cached.
101
111
  */
102
- fetchConstants(): Promise<any>;
112
+ fetchConstants(): Promise<Constants>;
103
113
  /**
104
114
  * Create a url for calling BitGo platform APIs
105
115
  * @param path
@@ -131,6 +141,14 @@ export declare class BitGoAPI implements BitGoBase {
131
141
  * Decrypt an encrypted string locally.
132
142
  */
133
143
  decrypt(params: DecryptOptions): string;
144
+ /**
145
+ * Attempt to decrypt multiple wallet keys with the provided passphrase
146
+ * @param {DecryptKeysOptions} params - Parameters object containing wallet key pairs and password
147
+ * @param {Array<{walletId: string, encryptedPrv: string}>} params.walletIdEncryptedKeyPairs - Array of wallet ID and encrypted private key pairs
148
+ * @param {string} params.password - The passphrase to attempt decryption with
149
+ * @returns {string[]} - Array of wallet IDs for which decryption failed
150
+ */
151
+ decryptKeys(params: DecryptKeysOptions): string[];
134
152
  /**
135
153
  * Serialize this BitGo object to a JSON object.
136
154
  *
@@ -154,15 +172,46 @@ export declare class BitGoAPI implements BitGoBase {
154
172
  * Process the username, password and otp into an object containing the username and hashed password, ready to
155
173
  * send to bitgo for authentication.
156
174
  */
157
- preprocessAuthenticationParams({ username, password, otp, forceSMS, extensible, trust, }: AuthenticateOptions): ProcessedAuthenticationOptions;
175
+ preprocessAuthenticationParams({ username, password, otp, forceSMS, extensible, trust, forReset2FA, initialHash, fingerprintHash, }: AuthenticateOptions): ProcessedAuthenticationOptions;
176
+ /**
177
+ * Validate the passkey response is in the expected format
178
+ * Should be as is returned from navigator.credentials.get()
179
+ */
180
+ validatePasskeyResponse(passkeyResponse: string): void;
158
181
  /**
159
182
  * Synchronous method for activating an access token.
160
183
  */
161
184
  authenticateWithAccessToken({ accessToken }: AccessTokenOptions): void;
185
+ /**
186
+ * Creates a new ECDH keychain for the user.
187
+ * @param {string} loginPassword - The user's login password.
188
+ * @returns {Promise<any>} - A promise that resolves with the new ECDH keychain data.
189
+ * @throws {Error} - Throws an error if there is an issue creating the keychain.
190
+ */
191
+ createUserEcdhKeychain(loginPassword: string): Promise<any>;
192
+ /**
193
+ * Updates the user's settings with the provided parameters.
194
+ * @param {Object} params - The parameters to update the user's settings with.
195
+ * @returns {Promise<any>}
196
+ * @throws {Error} - Throws an error if there is an issue updating the user's settings.
197
+ */
198
+ private updateUserSettings;
199
+ /**
200
+ * Ensures that the user's ECDH keychain is created for wallet sharing and TSS wallets.
201
+ * If the keychain does not exist, it will be created and the user's settings will be updated.
202
+ * @param {string} loginPassword - The user's login password.
203
+ * @returns {Promise<any>} - A promise that resolves with the user's settings ensuring we have the ecdhKeychain in there.
204
+ * @throws {Error} - Throws an error if there is an issue creating the keychain or updating the user's settings.
205
+ */
206
+ private ensureUserEcdhKeychainIsCreated;
162
207
  /**
163
208
  * Login to the bitgo platform.
164
209
  */
165
- authenticate(params: AuthenticateOptions): Promise<any>;
210
+ authenticate(params: AuthenticateOptions): Promise<LoginResponse | any>;
211
+ /**
212
+ * Login to the bitgo platform with passkey.
213
+ */
214
+ authenticateWithPasskey(passkey: string, initialHash?: string, fingerprintHash?: string): Promise<LoginResponse | any>;
166
215
  /**
167
216
  *
168
217
  * @param responseBody Response body object
@@ -427,6 +476,12 @@ export declare class BitGoAPI implements BitGoBase {
427
476
  * Gets the user's private ECDH keychain
428
477
  */
429
478
  getECDHKeychain(ecdhKeychainPub?: string): Promise<any>;
479
+ /**
480
+ * Returns the user derived public and private ECDH keypair
481
+ * @param password password to decrypt the user's ECDH encrypted private key
482
+ * @param entId? optional enterprise id to check for permissions
483
+ */
484
+ getEcdhKeypairPrivate(password: string, entId: string): Promise<EcdhDerivedKeypair>;
430
485
  /**
431
486
  * @param params
432
487
  * - operatingSystem: one of ios, android
@@ -539,6 +594,11 @@ export declare class BitGoAPI implements BitGoBase {
539
594
  * @return {Object} The client constants object
540
595
  */
541
596
  getConstants(): any;
597
+ /**
598
+ * Execute an asset request which does not need HMAC validation
599
+ * @param url The URL for the asset request
600
+ * @returns {Promise<any>} The response body
601
+ */
602
+ protected executeAssetRequest(url: string): Promise<any>;
542
603
  }
543
- export {};
544
604
  //# sourceMappingURL=bitgoAPI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitgoAPI.d.ts","sourceRoot":"","sources":["../../src/bitgoAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitgoAPI.d.ts","sourceRoot":"","sources":["../../src/bitgoAPI.ts"],"names":[],"mappings":"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"}