@bitgo-beta/unspents 0.13.2-beta.97 → 0.13.2-beta.971
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.
- package/.mocharc.js +1 -1
- package/CHANGELOG.md +499 -0
- package/dist/bin/generate_tables.js +25 -12
- package/dist/src/codes.d.ts +10 -10
- package/dist/src/codes.d.ts.map +1 -1
- package/dist/src/codes.js +27 -13
- package/dist/src/dimensions.d.ts +4 -4
- package/dist/src/dimensions.d.ts.map +1 -1
- package/dist/src/dimensions.js +34 -19
- package/dist/src/index.js +23 -9
- package/dist/src/inputWeights.d.ts +3 -3
- package/dist/src/inputWeights.d.ts.map +1 -1
- package/dist/src/inputWeights.js +7 -7
- package/dist/src/scriptSizes.js +3 -4
- package/dist/src/types.js +23 -9
- package/dist/src/virtualSizes.d.ts +12 -12
- package/dist/src/virtualSizes.js +2 -2
- package/dist/src/zcash.d.ts +9 -0
- package/dist/src/zcash.d.ts.map +1 -0
- package/dist/src/zcash.js +22 -0
- package/dist/test/dimensions.js +39 -15
- package/dist/test/signedTx/inputWeights.js +27 -13
- package/dist/test/signedTx/txCombinations.d.ts +1 -1
- package/dist/test/signedTx/txCombinations.d.ts.map +1 -1
- package/dist/test/signedTx/txCombinations.js +29 -15
- package/dist/test/signedTx/txGen.d.ts +2 -3
- package/dist/test/signedTx/txGen.d.ts.map +1 -1
- package/dist/test/signedTx/txGen.js +25 -11
- package/dist/test/testutils.d.ts +2 -2
- package/dist/test/testutils.d.ts.map +1 -1
- package/dist/test/testutils.js +28 -14
- package/dist/test/zcash.d.ts +2 -0
- package/dist/test/zcash.d.ts.map +1 -0
- package/dist/test/zcash.js +60 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/input-costs.md +10 -9
- package/package.json +5 -5
package/dist/src/codes.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as tcomb from 'tcomb';
|
|
2
|
-
export
|
|
2
|
+
export type ChainCode = number;
|
|
3
3
|
export declare class ErrorInvalidCode extends Error {
|
|
4
4
|
constructor(code: ChainCode);
|
|
5
5
|
}
|
|
@@ -34,6 +34,7 @@ export declare class CodesByType extends CodeGroup {
|
|
|
34
34
|
p2tr: ChainCode;
|
|
35
35
|
constructor(p: Purpose);
|
|
36
36
|
}
|
|
37
|
+
/** @deprecated - use utxolib.bitgo */
|
|
37
38
|
declare const _default: Readonly<{
|
|
38
39
|
ChainType: tcomb.Irreducible<unknown>;
|
|
39
40
|
/** @deprecated - use utxolib.bitgo */
|
|
@@ -57,24 +58,23 @@ declare const _default: Readonly<{
|
|
|
57
58
|
/** @deprecated - use utxolib.bitgo */
|
|
58
59
|
all: readonly number[];
|
|
59
60
|
/** @deprecated - use utxolib.bitgo */
|
|
60
|
-
isP2sh: (code:
|
|
61
|
+
isP2sh: (code: ChainCode) => boolean;
|
|
61
62
|
/** @deprecated - use utxolib.bitgo */
|
|
62
|
-
isP2shP2wsh: (code:
|
|
63
|
+
isP2shP2wsh: (code: ChainCode) => boolean;
|
|
63
64
|
/** @deprecated - use utxolib.bitgo */
|
|
64
|
-
isP2wsh: (code:
|
|
65
|
+
isP2wsh: (code: ChainCode) => boolean;
|
|
65
66
|
/** @deprecated - use utxolib.bitgo */
|
|
66
|
-
isP2tr: (code:
|
|
67
|
+
isP2tr: (code: ChainCode) => boolean;
|
|
67
68
|
/** @deprecated - use utxolib.bitgo */
|
|
68
|
-
isExternal: (code:
|
|
69
|
+
isExternal: (code: ChainCode) => boolean;
|
|
69
70
|
/** @deprecated - use utxolib.bitgo */
|
|
70
|
-
isInternal: (code:
|
|
71
|
+
isInternal: (code: ChainCode) => boolean;
|
|
71
72
|
/** @deprecated - use utxolib.bitgo */
|
|
72
|
-
isValid: (c:
|
|
73
|
+
isValid: (c: ChainCode) => boolean;
|
|
73
74
|
/** @deprecated - use utxolib.bitgo */
|
|
74
75
|
forType: (u: UnspentType) => CodesByPurpose;
|
|
75
76
|
/** @deprecated - use utxolib.bitgo */
|
|
76
|
-
typeForCode: (c:
|
|
77
|
+
typeForCode: (c: ChainCode) => UnspentType;
|
|
77
78
|
}>;
|
|
78
|
-
/** @deprecated - use utxolib.bitgo */
|
|
79
79
|
export default _default;
|
|
80
80
|
//# sourceMappingURL=codes.d.ts.map
|
package/dist/src/codes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,
|
|
1
|
+
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,SAAS;CAG5B;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AA0BD,eAAO,MAAM,SAAS,4BAAoD,CAAC;AAmB3E,eAAO,MAAM,OAAO,MAAO,SAAS,KAAG,OAA8C,CAAC;AAStF,qBAAa,SAAS;IACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;IAIhC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAMrC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;gBAEf,CAAC,EAAE,WAAW;CAa3B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAEX,CAAC,EAAE,OAAO;CAevB;AAYD,sCAAsC;;;IAIpC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;mBApFrB,SAAS,KAAG,OAAO;IAsFpC,sCAAsC;wBAtFrB,SAAS,KAAG,OAAO;IAwFpC,sCAAsC;oBAxFrB,SAAS,KAAG,OAAO;IA0FpC,sCAAsC;mBA1FrB,SAAS,KAAG,OAAO;IA4FpC,sCAAsC;uBA5FrB,SAAS,KAAG,OAAO;IA8FpC,sCAAsC;uBA9FrB,SAAS,KAAG,OAAO;IAgGpC,sCAAsC;iBA/Gb,SAAS,KAAG,OAAO;IAiH5C,sCAAsC;iBAlIpB,WAAW,KAAG,cAAc;IAoI9C,sCAAsC;qBA3HhB,SAAS,KAAG,WAAW;;AAoF/C,wBAyCG"}
|
package/dist/src/codes.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
11
15
|
}) : function(o, v) {
|
|
12
16
|
o["default"] = v;
|
|
13
17
|
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
21
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
36
|
exports.CodesByType = exports.CodesByPurpose = exports.CodeGroup = exports.isValid = exports.ChainType = exports.Purpose = exports.UnspentType = exports.ErrorInvalidCode = void 0;
|
|
23
37
|
const tcomb = __importStar(require("tcomb"));
|
|
@@ -35,13 +49,13 @@ var UnspentType;
|
|
|
35
49
|
UnspentType["p2wpkh"] = "p2wpkh";
|
|
36
50
|
UnspentType["p2wsh"] = "p2wsh";
|
|
37
51
|
UnspentType["p2tr"] = "p2tr";
|
|
38
|
-
})(UnspentType
|
|
52
|
+
})(UnspentType || (exports.UnspentType = UnspentType = {}));
|
|
39
53
|
const UnspentTypeTcomb = tcomb.enums.of(Object.keys(UnspentType));
|
|
40
54
|
var Purpose;
|
|
41
55
|
(function (Purpose) {
|
|
42
56
|
Purpose["internal"] = "internal";
|
|
43
57
|
Purpose["external"] = "external";
|
|
44
|
-
})(Purpose
|
|
58
|
+
})(Purpose || (exports.Purpose = Purpose = {}));
|
|
45
59
|
const PurposeTcomb = tcomb.enums.of(Object.keys(Purpose));
|
|
46
60
|
const codeList = Object.freeze([
|
|
47
61
|
[0, UnspentType.p2sh, Purpose.external],
|
|
@@ -53,7 +67,7 @@ const codeList = Object.freeze([
|
|
|
53
67
|
[21, UnspentType.p2wsh, Purpose.internal],
|
|
54
68
|
[31, UnspentType.p2tr, Purpose.internal],
|
|
55
69
|
].map(([id, type, purpose]) => Object.freeze({ id, type, purpose })));
|
|
56
|
-
exports.ChainType = tcomb.irreducible('ChainType', (n) => exports.isValid(n));
|
|
70
|
+
exports.ChainType = tcomb.irreducible('ChainType', (n) => (0, exports.isValid)(n));
|
|
57
71
|
const forType = (u) => {
|
|
58
72
|
// Do tcomb type checking in js projects that use this lib
|
|
59
73
|
if (!UnspentTypeTcomb.is(u)) {
|
|
@@ -81,7 +95,7 @@ class CodeGroup {
|
|
|
81
95
|
this.values = Object.freeze([...values]);
|
|
82
96
|
}
|
|
83
97
|
has(code) {
|
|
84
|
-
if (!exports.isValid(code)) {
|
|
98
|
+
if (!(0, exports.isValid)(code)) {
|
|
85
99
|
throw new ErrorInvalidCode(code);
|
|
86
100
|
}
|
|
87
101
|
return this.values.includes(code);
|
|
@@ -165,4 +179,4 @@ exports.default = Object.freeze({
|
|
|
165
179
|
/** @deprecated - use utxolib.bitgo */
|
|
166
180
|
typeForCode,
|
|
167
181
|
});
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUkvQixNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFDekMsWUFBWSxJQUFlO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFKRCw0Q0FJQztBQUVELElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtJQUNiLHNDQUF1QixDQUFBO0lBQ3ZCLGdDQUFpQixDQUFBO0lBQ2pCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFbEUsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLGdDQUFxQixDQUFBO0lBQ3JCLGdDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFHbEI7QUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFRMUQsTUFBTSxRQUFRLEdBQW1DLE1BQU0sQ0FBQyxNQUFNLENBRTFEO0lBQ0UsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFD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SUFDdEMsV0FBVztDQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRjb21iIGZyb20gJ3Rjb21iJztcblxuZXhwb3J0IHR5cGUgQ2hhaW5Db2RlID0gbnVtYmVyO1xuXG5leHBvcnQgY2xhc3MgRXJyb3JJbnZhbGlkQ29kZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoY29kZTogQ2hhaW5Db2RlKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29kZSAke2NvZGV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gVW5zcGVudFR5cGUge1xuICBwMnBraCA9ICdwMnBraCcsXG4gIHAyc2ggPSAncDJzaCcsXG4gIHAyc2hQMndzaCA9ICdwMnNoUDJ3c2gnLFxuICBwMndwa2ggPSAncDJ3cGtoJyxcbiAgcDJ3c2ggPSAncDJ3c2gnLFxuICBwMnRyID0gJ3AydHInLFxufVxuXG5jb25zdCBVbnNwZW50VHlwZVRjb21iID0gdGNvbWIuZW51bXMub2YoT2JqZWN0LmtleXMoVW5zcGVudFR5cGUpKTtcblxuZXhwb3J0IGVudW0gUHVycG9zZSB7XG4gIGludGVybmFsID0gJ2ludGVybmFsJyxcbiAgZXh0ZXJuYWwgPSAnZXh0ZXJuYWwnLFxufVxuXG5jb25zdCBQdXJwb3NlVGNvbWIgPSB0Y29tYi5lbnVtcy5vZihPYmplY3Qua2V5cyhQdXJwb3NlKSk7XG5cbmludGVyZmFjZSBJQ29kZSB7XG4gIGlkOiBDaGFpbkNvZGU7XG4gIHR5cGU6IFVuc3BlbnRUeXBlO1xuICBwdXJwb3NlOiBQdXJwb3NlO1xufVxuXG5jb25zdCBjb2RlTGlzdDogUmVhZG9ubHlBcnJheTxSZWFkb25seTxJQ29kZT4+ID0gT2JqZWN0LmZyZWV6ZShcbiAgKFxuICAgIFtcbiAgICAgIFswLCBVbnNwZW50VHlwZS5wMnNoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsxMCwgVW5zcGVudFR5cGUucDJzaFAyd3NoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsyMCwgVW5zcGVudFR5cGUucDJ3c2gsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuICAgICAgWzMwLCBVbnNwZW50VHlwZS5wMnRyLCBQdXJwb3NlLmV4dGVybmFsXSxcblxuICAgICAgWzEsIFVuc3BlbnRUeXBlLnAyc2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzExLCBVbnNwZW50VHlwZS5wMnNoUDJ3c2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzIxLCBVbnNwZW50VHlwZS5wMndzaCwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgICBbMzEsIFVuc3BlbnRUeXBlLnAydHIsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgIF0gYXMgQXJyYXk8W0NoYWluQ29kZSwgVW5zcGVudFR5cGUsIFB1cnBvc2VdPlxuICApLm1hcCgoW2lkLCB0eXBlLCBwdXJwb3NlXSkgPT4gT2JqZWN0LmZyZWV6ZSh7IGlkLCB0eXBlLCBwdXJwb3NlIH0pKVxuKTtcblxuZXhwb3J0IGNvbnN0IENoYWluVHlwZSA9IHRjb21iLmlycmVkdWNpYmxlKCdDaGFpblR5cGUnLCAobikgPT4gaXNWYWxpZChuKSk7XG5cbmNvbnN0IGZvclR5cGUgPSAodTogVW5zcGVudFR5cGUpOiBDb2Rlc0J5UHVycG9zZSA9PiB7XG4gIC8vIERvIHRjb21iIHR5cGUgY2hlY2tpbmcgaW4ganMgcHJvamVjdHMgdGhhdCB1c2UgdGhpcyBsaWJcbiAgaWYgKCFVbnNwZW50VHlwZVRjb21iLmlzKHUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHVuc3BlbnQgdHlwZTogJHt1fWApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBDb2Rlc0J5UHVycG9zZSh1KTtcbn07XG5cbmNvbnN0IHR5cGVGb3JDb2RlID0gKGM6IENoYWluQ29kZSk6IFVuc3BlbnRUeXBlID0+IHtcbiAgY29uc3QgY29kZSA9IGNvZGVMaXN0LmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGMpO1xuICBpZiAoIWNvZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JJbnZhbGlkQ29kZShjKTtcbiAgfVxuICByZXR1cm4gY29kZS50eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoYzogQ2hhaW5Db2RlKTogYm9vbGVhbiA9PiBjb2RlTGlzdC5zb21lKCh7IGlkIH0pID0+IGlkID09PSBjKTtcblxuY29uc3QgdGhyb3dJZlVuZGVmaW5lZCA9IDxUPih2OiBUIHwgdW5kZWZpbmVkKTogVCA9PiB7XG4gIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHZhbHVlIHRvIGJlIGRlZmluZWRgKTtcbiAgfVxuICByZXR1cm4gdjtcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgdmFsdWVzOiBSZWFkb25seUFycmF5PENoYWluQ29kZT47XG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSXRlcmFibGU8Q2hhaW5Db2RlPikge1xuICAgIHRoaXMudmFsdWVzID0gT2JqZWN0LmZyZWV6ZShbLi4udmFsdWVzXSk7XG4gIH1cblxuICBwdWJsaWMgaGFzKGNvZGU6IENoYWluQ29kZSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNWYWxpZChjb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9ySW52YWxpZENvZGUoY29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlcy5pbmNsdWRlcyhjb2RlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29kZXNCeVB1cnBvc2UgZXh0ZW5kcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgaW50ZXJuYWw6IENoYWluQ29kZTtcbiAgcHVibGljIGV4dGVybmFsOiBDaGFpbkNvZGU7XG5cbiAgY29uc3RydWN0b3IodDogVW5zcGVudFR5cGUpIHtcbiAgICBjb25zdCBjb2RlTWFwOiBNYXA8UHVycG9zZSwgQ2hhaW5Db2RlPiA9IG5ldyBNYXAoXG4gICAgICBjb2RlTGlzdC5maWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSB0KS5tYXAoKHsgcHVycG9zZSwgaWQgfSk6IFtQdXJwb3NlLCBDaGFpbkNvZGVdID0+IFtwdXJwb3NlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzIGZvciB0eXBlICR7dH1gKTtcbiAgICB9XG5cbiAgICBzdXBlcihjb2RlTWFwLnZhbHVlcygpKTtcblxuICAgIHRoaXMuaW50ZXJuYWwgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFB1cnBvc2UuaW50ZXJuYWwpKTtcbiAgICB0aGlzLmV4dGVybmFsID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChQdXJwb3NlLmV4dGVybmFsKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvZGVzQnlUeXBlIGV4dGVuZHMgQ29kZUdyb3VwIHtcbiAgcHVibGljIHAyc2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAyc2hQMndzaDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgcDJ3c2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAydHI6IENoYWluQ29kZTtcblxuICBjb25zdHJ1Y3RvcihwOiBQdXJwb3NlKSB7XG4gICAgY29uc3QgY29kZU1hcDogTWFwPFVuc3BlbnRUeXBlLCBDaGFpbkNvZGU+ID0gbmV3IE1hcChcbiAgICAgIGNvZGVMaXN0LmZpbHRlcigoeyBwdXJwb3NlIH0pID0+IHB1cnBvc2UgPT09IHApLm1hcCgoeyB0eXBlLCBpZCB9KTogW1Vuc3BlbnRUeXBlLCBDaGFpbkNvZGVdID0+IFt0eXBlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzYCk7XG4gICAgfVxuXG4gICAgc3VwZXIoY29kZU1hcC52YWx1ZXMoKSk7XG5cbiAgICB0aGlzLnAyc2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyc2gpKTtcbiAgICB0aGlzLnAyc2hQMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJzaFAyd3NoKSk7XG4gICAgdGhpcy5wMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJ3c2gpKTtcbiAgICB0aGlzLnAydHIgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAydHIpKTtcbiAgfVxufVxuXG5jb25zdCBib3VuZEhhcyA9IChpbnN0YW5jZTogQ29kZUdyb3VwKSA9PiBpbnN0YW5jZS5oYXMuYmluZChpbnN0YW5jZSk7XG5cbmNvbnN0IHAyc2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoKSk7XG5jb25zdCBwMnNoUDJ3c2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoUDJ3c2gpKTtcbmNvbnN0IHAyd3NoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJ3c2gpKTtcbmNvbnN0IHAydHIgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnRyKSk7XG5jb25zdCBleHRlcm5hbCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlUeXBlKFB1cnBvc2UuZXh0ZXJuYWwpKTtcbmNvbnN0IGludGVybmFsID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVR5cGUoUHVycG9zZS5pbnRlcm5hbCkpO1xuY29uc3QgYWxsID0gT2JqZWN0LmZyZWV6ZShjb2RlTGlzdC5tYXAoKHsgaWQgfSkgPT4gaWQpKTtcblxuLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5mcmVlemUoe1xuICAvKiBAZGVwcmVjYXRlZDogdXNlIENoYWluQ29kZVRjb21iICovXG4gIENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ2hhaW5Db2RlVGNvbWI6IENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgUHVycG9zZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBVbnNwZW50VHlwZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoUDJ3c2gsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAyd3NoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnRyLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBleHRlcm5hbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaW50ZXJuYWwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGFsbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoOiBib3VuZEhhcyhwMnNoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoUDJ3c2g6IGJvdW5kSGFzKHAyc2hQMndzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJ3c2g6IGJvdW5kSGFzKHAyd3NoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnRyOiBib3VuZEhhcyhwMnRyKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNFeHRlcm5hbDogYm91bmRIYXMoZXh0ZXJuYWwpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc0ludGVybmFsOiBib3VuZEhhcyhpbnRlcm5hbCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzVmFsaWQsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGZvclR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHR5cGVGb3JDb2RlLFxufSk7XG4iXX0=
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBSS9CLE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztJQUN6QyxZQUFZLElBQWU7UUFDekIsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUpELDRDQUlDO0FBRUQsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7SUFDdkIsZ0NBQWlCLENBQUE7SUFDakIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBUFcsV0FBVywyQkFBWCxXQUFXLFFBT3RCO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFbEUsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLGdDQUFxQixDQUFBO0lBQ3JCLGdDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxPQUFPLHVCQUFQLE9BQU8sUUFHbEI7QUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFRMUQsTUFBTSxRQUFRLEdBQW1DLE1BQU0sQ0FBQyxNQUFNLENBRTFEO0lBQ0UsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDLEVBQUUs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LHNDQUFzQztJQUN0QyxPQUFPLEVBQVAsZUFBTztJQUNQLHNDQUFzQztJQUN0QyxPQUFPO0lBQ1Asc0NBQXNDO0lBQ3RDLFdBQVc7Q0FDWixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0Y29tYiBmcm9tICd0Y29tYic7XG5cbmV4cG9ydCB0eXBlIENoYWluQ29kZSA9IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIEVycm9ySW52YWxpZENvZGUgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNvZGU6IENoYWluQ29kZSkge1xuICAgIHN1cGVyKGBpbnZhbGlkIGNvZGUgJHtjb2RlfWApO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIFVuc3BlbnRUeXBlIHtcbiAgcDJwa2ggPSAncDJwa2gnLFxuICBwMnNoID0gJ3Ayc2gnLFxuICBwMnNoUDJ3c2ggPSAncDJzaFAyd3NoJyxcbiAgcDJ3cGtoID0gJ3Ayd3BraCcsXG4gIHAyd3NoID0gJ3Ayd3NoJyxcbiAgcDJ0ciA9ICdwMnRyJyxcbn1cblxuY29uc3QgVW5zcGVudFR5cGVUY29tYiA9IHRjb21iLmVudW1zLm9mKE9iamVjdC5rZXlzKFVuc3BlbnRUeXBlKSk7XG5cbmV4cG9ydCBlbnVtIFB1cnBvc2Uge1xuICBpbnRlcm5hbCA9ICdpbnRlcm5hbCcsXG4gIGV4dGVybmFsID0gJ2V4dGVybmFsJyxcbn1cblxuY29uc3QgUHVycG9zZVRjb21iID0gdGNvbWIuZW51bXMub2YoT2JqZWN0LmtleXMoUHVycG9zZSkpO1xuXG5pbnRlcmZhY2UgSUNvZGUge1xuICBpZDogQ2hhaW5Db2RlO1xuICB0eXBlOiBVbnNwZW50VHlwZTtcbiAgcHVycG9zZTogUHVycG9zZTtcbn1cblxuY29uc3QgY29kZUxpc3Q6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8SUNvZGU+PiA9IE9iamVjdC5mcmVlemUoXG4gIChcbiAgICBbXG4gICAgICBbMCwgVW5zcGVudFR5cGUucDJzaCwgUHVycG9zZS5leHRlcm5hbF0sXG4gICAgICBbMTAsIFVuc3BlbnRUeXBlLnAyc2hQMndzaCwgUHVycG9zZS5leHRlcm5hbF0sXG4gICAgICBbMjAsIFVuc3BlbnRUeXBlLnAyd3NoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFszMCwgVW5zcGVudFR5cGUucDJ0ciwgUHVycG9zZS5leHRlcm5hbF0sXG5cbiAgICAgIFsxLCBVbnNwZW50VHlwZS5wMnNoLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICAgIFsxMSwgVW5zcGVudFR5cGUucDJzaFAyd3NoLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICAgIFsyMSwgVW5zcGVudFR5cGUucDJ3c2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzMxLCBVbnNwZW50VHlwZS5wMnRyLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICBdIGFzIEFycmF5PFtDaGFpbkNvZGUsIFVuc3BlbnRUeXBlLCBQdXJwb3NlXT5cbiAgKS5tYXAoKFtpZCwgdHlwZSwgcHVycG9zZV0pID0+IE9iamVjdC5mcmVlemUoeyBpZCwgdHlwZSwgcHVycG9zZSB9KSlcbik7XG5cbmV4cG9ydCBjb25zdCBDaGFpblR5cGUgPSB0Y29tYi5pcnJlZHVjaWJsZSgnQ2hhaW5UeXBlJywgKG4pID0+IGlzVmFsaWQobikpO1xuXG5jb25zdCBmb3JUeXBlID0gKHU6IFVuc3BlbnRUeXBlKTogQ29kZXNCeVB1cnBvc2UgPT4ge1xuICAvLyBEbyB0Y29tYiB0eXBlIGNoZWNraW5nIGluIGpzIHByb2plY3RzIHRoYXQgdXNlIHRoaXMgbGliXG4gIGlmICghVW5zcGVudFR5cGVUY29tYi5pcyh1KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB1bnNwZW50IHR5cGU6ICR7dX1gKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQ29kZXNCeVB1cnBvc2UodSk7XG59O1xuXG5jb25zdCB0eXBlRm9yQ29kZSA9IChjOiBDaGFpbkNvZGUpOiBVbnNwZW50VHlwZSA9PiB7XG4gIGNvbnN0IGNvZGUgPSBjb2RlTGlzdC5maW5kKCh7IGlkIH0pID0+IGlkID09PSBjKTtcbiAgaWYgKCFjb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9ySW52YWxpZENvZGUoYyk7XG4gIH1cbiAgcmV0dXJuIGNvZGUudHlwZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGM6IENoYWluQ29kZSk6IGJvb2xlYW4gPT4gY29kZUxpc3Quc29tZSgoeyBpZCB9KSA9PiBpZCA9PT0gYyk7XG5cbmNvbnN0IHRocm93SWZVbmRlZmluZWQgPSA8VD4odjogVCB8IHVuZGVmaW5lZCk6IFQgPT4ge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCB2YWx1ZSB0byBiZSBkZWZpbmVkYCk7XG4gIH1cbiAgcmV0dXJuIHY7XG59O1xuXG5leHBvcnQgY2xhc3MgQ29kZUdyb3VwIHtcbiAgcHVibGljIHZhbHVlczogUmVhZG9ubHlBcnJheTxDaGFpbkNvZGU+O1xuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IEl0ZXJhYmxlPENoYWluQ29kZT4pIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5mcmVlemUoWy4uLnZhbHVlc10pO1xuICB9XG5cbiAgcHVibGljIGhhcyhjb2RlOiBDaGFpbkNvZGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzVmFsaWQoY29kZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvckludmFsaWRDb2RlKGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaW5jbHVkZXMoY29kZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvZGVzQnlQdXJwb3NlIGV4dGVuZHMgQ29kZUdyb3VwIHtcbiAgcHVibGljIGludGVybmFsOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBleHRlcm5hbDogQ2hhaW5Db2RlO1xuXG4gIGNvbnN0cnVjdG9yKHQ6IFVuc3BlbnRUeXBlKSB7XG4gICAgY29uc3QgY29kZU1hcDogTWFwPFB1cnBvc2UsIENoYWluQ29kZT4gPSBuZXcgTWFwKFxuICAgICAgY29kZUxpc3QuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gdCkubWFwKCh7IHB1cnBvc2UsIGlkIH0pOiBbUHVycG9zZSwgQ2hhaW5Db2RlXSA9PiBbcHVycG9zZSwgaWRdKVxuICAgICk7XG4gICAgaWYgKGNvZGVNYXAuc2l6ZSAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIG51bWJlciBvZiBjb2RlcyBmb3IgdHlwZSAke3R9YCk7XG4gICAgfVxuXG4gICAgc3VwZXIoY29kZU1hcC52YWx1ZXMoKSk7XG5cbiAgICB0aGlzLmludGVybmFsID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChQdXJwb3NlLmludGVybmFsKSk7XG4gICAgdGhpcy5leHRlcm5hbCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoUHVycG9zZS5leHRlcm5hbCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2Rlc0J5VHlwZSBleHRlbmRzIENvZGVHcm91cCB7XG4gIHB1YmxpYyBwMnNoOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBwMnNoUDJ3c2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAyd3NoOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBwMnRyOiBDaGFpbkNvZGU7XG5cbiAgY29uc3RydWN0b3IocDogUHVycG9zZSkge1xuICAgIGNvbnN0IGNvZGVNYXA6IE1hcDxVbnNwZW50VHlwZSwgQ2hhaW5Db2RlPiA9IG5ldyBNYXAoXG4gICAgICBjb2RlTGlzdC5maWx0ZXIoKHsgcHVycG9zZSB9KSA9PiBwdXJwb3NlID09PSBwKS5tYXAoKHsgdHlwZSwgaWQgfSk6IFtVbnNwZW50VHlwZSwgQ2hhaW5Db2RlXSA9PiBbdHlwZSwgaWRdKVxuICAgICk7XG4gICAgaWYgKGNvZGVNYXAuc2l6ZSAhPT0gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIG51bWJlciBvZiBjb2Rlc2ApO1xuICAgIH1cblxuICAgIHN1cGVyKGNvZGVNYXAudmFsdWVzKCkpO1xuXG4gICAgdGhpcy5wMnNoID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMnNoKSk7XG4gICAgdGhpcy5wMnNoUDJ3c2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyc2hQMndzaCkpO1xuICAgIHRoaXMucDJ3c2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyd3NoKSk7XG4gICAgdGhpcy5wMnRyID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMnRyKSk7XG4gIH1cbn1cblxuY29uc3QgYm91bmRIYXMgPSAoaW5zdGFuY2U6IENvZGVHcm91cCkgPT4gaW5zdGFuY2UuaGFzLmJpbmQoaW5zdGFuY2UpO1xuXG5jb25zdCBwMnNoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJzaCkpO1xuY29uc3QgcDJzaFAyd3NoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJzaFAyd3NoKSk7XG5jb25zdCBwMndzaCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlQdXJwb3NlKFVuc3BlbnRUeXBlLnAyd3NoKSk7XG5jb25zdCBwMnRyID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJ0cikpO1xuY29uc3QgZXh0ZXJuYWwgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5VHlwZShQdXJwb3NlLmV4dGVybmFsKSk7XG5jb25zdCBpbnRlcm5hbCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlUeXBlKFB1cnBvc2UuaW50ZXJuYWwpKTtcbmNvbnN0IGFsbCA9IE9iamVjdC5mcmVlemUoY29kZUxpc3QubWFwKCh7IGlkIH0pID0+IGlkKSk7XG5cbi8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG5leHBvcnQgZGVmYXVsdCBPYmplY3QuZnJlZXplKHtcbiAgLyogQGRlcHJlY2F0ZWQ6IHVzZSBDaGFpbkNvZGVUY29tYiAqL1xuICBDaGFpblR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIENoYWluQ29kZVRjb21iOiBDaGFpblR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIFB1cnBvc2VUY29tYixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgVW5zcGVudFR5cGVUY29tYixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJzaCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJzaFAyd3NoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMndzaCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJ0cixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgZXh0ZXJuYWwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGludGVybmFsLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBhbGwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJzaDogYm91bmRIYXMocDJzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJzaFAyd3NoOiBib3VuZEhhcyhwMnNoUDJ3c2gpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1Ayd3NoOiBib3VuZEhhcyhwMndzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJ0cjogYm91bmRIYXMocDJ0ciksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzRXh0ZXJuYWw6IGJvdW5kSGFzKGV4dGVybmFsKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNJbnRlcm5hbDogYm91bmRIYXMoaW50ZXJuYWwpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1ZhbGlkLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBmb3JUeXBlLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICB0eXBlRm9yQ29kZSxcbn0pO1xuIl19
|
package/dist/src/dimensions.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
2
|
import { bitgo } from '@bitgo-beta/utxo-lib';
|
|
4
|
-
|
|
3
|
+
type ChainCode = bitgo.ChainCode;
|
|
5
4
|
import { VirtualSizes } from './virtualSizes';
|
|
6
5
|
export { VirtualSizes };
|
|
7
6
|
/**
|
|
@@ -164,7 +163,7 @@ export declare class Dimensions {
|
|
|
164
163
|
/**
|
|
165
164
|
* Return dimensions of an unspent according to `chain` parameter
|
|
166
165
|
* @param chain - Chain code as defined by utxo.chain
|
|
167
|
-
* @param params - Hint for unspents with variable input sizes (p2tr)
|
|
166
|
+
* @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
|
|
168
167
|
* @return {Dimensions} of the unspent
|
|
169
168
|
* @throws if the chain code is invalid or unsupported
|
|
170
169
|
*/
|
|
@@ -173,11 +172,12 @@ export declare class Dimensions {
|
|
|
173
172
|
}, params?: FromUnspentParams): Dimensions;
|
|
174
173
|
/**
|
|
175
174
|
* @param unspents
|
|
175
|
+
* @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
|
|
176
176
|
* @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
|
|
177
177
|
*/
|
|
178
178
|
static fromUnspents(unspents: {
|
|
179
179
|
chain: ChainCode;
|
|
180
|
-
}[]): Dimensions;
|
|
180
|
+
}[], params?: FromUnspentParams): Dimensions;
|
|
181
181
|
/**
|
|
182
182
|
* @param transaction - bitcoin-like transaction
|
|
183
183
|
* @param [param.assumeUnsigned] - default type for unsigned inputs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/dimensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/dimensions.ts"],"names":[],"mappings":"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"}
|
package/dist/src/dimensions.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
11
15
|
}) : function(o, v) {
|
|
12
16
|
o["default"] = v;
|
|
13
17
|
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
21
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
36
|
exports.Dimensions = exports.OutputDimensions = exports.VirtualSizes = void 0;
|
|
23
37
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
@@ -51,11 +65,13 @@ class OutputDimensions {
|
|
|
51
65
|
exports.OutputDimensions = OutputDimensions;
|
|
52
66
|
const defaultUnspentParams = {
|
|
53
67
|
p2tr: {
|
|
54
|
-
|
|
68
|
+
// Default to recovery script paths, to make it easier for recovery case callers (WRW etc).
|
|
69
|
+
// WP can explicitly pass scriptPathLevel: 1 to use happy path.
|
|
70
|
+
scriptPathLevel: 2,
|
|
55
71
|
},
|
|
56
72
|
p2trMusig2: {
|
|
57
73
|
// Default to script path spend, to make it easier for recovery case callers (WRW etc).
|
|
58
|
-
// WP can explicitly pass undefined to use key path.
|
|
74
|
+
// WP can explicitly pass scriptPathLevel: undefined to use key path.
|
|
59
75
|
scriptPathLevel: 1,
|
|
60
76
|
},
|
|
61
77
|
};
|
|
@@ -170,7 +186,7 @@ class Dimensions {
|
|
|
170
186
|
if (!types_1.PositiveInteger.is(scriptLength)) {
|
|
171
187
|
throw new TypeError(`expected positive integer for scriptLength, got ${scriptLength}`);
|
|
172
188
|
}
|
|
173
|
-
return scriptLength + scriptSizes_1.compactSize(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
|
|
189
|
+
return scriptLength + (0, scriptSizes_1.compactSize)(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
|
|
174
190
|
}
|
|
175
191
|
/**
|
|
176
192
|
* @return
|
|
@@ -220,8 +236,7 @@ class Dimensions {
|
|
|
220
236
|
* [param.assumeUnsigned] - default type for unsigned input
|
|
221
237
|
*/
|
|
222
238
|
static fromInput(input, params = {}) {
|
|
223
|
-
|
|
224
|
-
if (((_a = input.script) === null || _a === void 0 ? void 0 : _a.length) || ((_b = input.witness) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
239
|
+
if (input.script?.length || input.witness?.length) {
|
|
225
240
|
const parsed = utxolib.bitgo.parseSignatureScript(input);
|
|
226
241
|
return Dimensions.fromScriptType(parsed.scriptType, parsed);
|
|
227
242
|
}
|
|
@@ -305,7 +320,7 @@ class Dimensions {
|
|
|
305
320
|
/**
|
|
306
321
|
* Return dimensions of an unspent according to `chain` parameter
|
|
307
322
|
* @param chain - Chain code as defined by utxo.chain
|
|
308
|
-
* @param params - Hint for unspents with variable input sizes (p2tr)
|
|
323
|
+
* @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
|
|
309
324
|
* @return {Dimensions} of the unspent
|
|
310
325
|
* @throws if the chain code is invalid or unsupported
|
|
311
326
|
*/
|
|
@@ -318,14 +333,15 @@ class Dimensions {
|
|
|
318
333
|
}
|
|
319
334
|
/**
|
|
320
335
|
* @param unspents
|
|
336
|
+
* @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
|
|
321
337
|
* @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
|
|
322
338
|
*/
|
|
323
|
-
static fromUnspents(unspents) {
|
|
339
|
+
static fromUnspents(unspents, params = defaultUnspentParams) {
|
|
324
340
|
if (!Array.isArray(unspents)) {
|
|
325
341
|
throw new TypeError(`unspents must be array`);
|
|
326
342
|
}
|
|
327
343
|
// Convert the individual unspents into dimensions and sum them up
|
|
328
|
-
return Dimensions.sum(...unspents.map((u) => Dimensions.fromUnspent(u)));
|
|
344
|
+
return Dimensions.sum(...unspents.map((u) => Dimensions.fromUnspent(u, params)));
|
|
329
345
|
}
|
|
330
346
|
/**
|
|
331
347
|
* @param transaction - bitcoin-like transaction
|
|
@@ -366,8 +382,7 @@ class Dimensions {
|
|
|
366
382
|
}
|
|
367
383
|
}
|
|
368
384
|
return mapDimensions(this, (key, v) => {
|
|
369
|
-
|
|
370
|
-
const w = (_a = dimensions[key]) !== null && _a !== void 0 ? _a : Dimensions.ZERO[key];
|
|
385
|
+
const w = dimensions[key] ?? Dimensions.ZERO[key];
|
|
371
386
|
if (key === 'outputs') {
|
|
372
387
|
const vOutputs = v;
|
|
373
388
|
const wOutputs = w;
|
|
@@ -482,4 +497,4 @@ Dimensions.ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath;
|
|
|
482
497
|
Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1;
|
|
483
498
|
Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2;
|
|
484
499
|
Dimensions.ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk;
|
|
485
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBZ0Q7QUFDaEQsbURBQTZDO0FBQzdDLE1BQU0sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxnQkFBSyxDQUFDO0FBR2xELCtDQUE0QztBQUM1QyxtQ0FBMEM7QUFFMUMsaURBQThDO0FBQ3JDLDZGQURBLDJCQUFZLE9BQ0E7QUFFckI7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FDcEIsQ0FBc0IsRUFDdEIsQ0FBZ0Y7SUFFaEYsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEcsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBVTNCLFlBQVksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEtBQXVCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQzNFLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQzdCLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7YUFDcEU7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxD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LFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xELEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEQsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4RSxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUNqRCxDQUFDLENBQUM7QUEyQ2Esc0JBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUMxQyw0QkFBaUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUNyRCx1QkFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQzVDLDhCQUFtQixHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3pELHdDQUE2QixHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7QUFDNUUsd0NBQTZCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztBQUM1RSxpQ0FBc0IsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgYml0Z28gfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5jb25zdCB7IGlzQ2hhaW5Db2RlLCBzY3JpcHRUeXBlRm9yQ2hhaW4gfSA9IGJpdGdvO1xudHlwZSBDaGFpbkNvZGUgPSBiaXRnby5DaGFpbkNvZGU7XG5cbmltcG9ydCB7IGNvbXBhY3RTaXplIH0gZnJvbSAnLi9zY3JpcHRTaXplcyc7XG5pbXBvcnQgeyBQb3NpdGl2ZUludGVnZXIgfSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IHsgVmlydHVhbFNpemVzIH0gZnJvbSAnLi92aXJ0dWFsU2l6ZXMnO1xuZXhwb3J0IHsgVmlydHVhbFNpemVzIH07XG5cbi8qKlxuICogQXBwbHkgYGZgIHRvIGFsbCBwcm9wZXJ0aWVzIG9mIGBkYFxuICovXG5mdW5jdGlvbiBtYXBEaW1lbnNpb25zKFxuICBkOiBQYXJ0aWFsPERpbWVuc2lvbnM+LFxuICBmOiA8VCBleHRlbmRzIGtleW9mIERpbWVuc2lvbnM+KGtleTogVCwgdjogRGltZW5zaW9uc1tUXSB8IHVuZGVmaW5lZCkgPT4gdW5rbm93blxuKTogRGltZW5zaW9ucyB7XG4gIHJldHVybiBuZXcgRGltZW5zaW9ucyhcbiAgICBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIGYoa2V5IGFzIGtleW9mIERpbWVuc2lvbnMsIHZhbHVlKV0pKVxuICApO1xufVxuXG4vKipcbiAqIEFnZ3JlZ2F0ZSBjb3VudCBhbmQgc2l6ZSBvZiB0cmFuc2FjdGlvbiBvdXRwdXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBPdXRwdXREaW1lbnNpb25zIHtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBvdXRwdXRzXG4gICAqL1xuICBjb3VudDogbnVtYmVyO1xuICAvKipcbiAgICogQWdncmVnYXRlIHZTaXplXG4gICAqL1xuICBzaXplOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoeyBjb3VudCA9IDAsIHNpemUgPSAwIH06IE91dHB1dERpbWVuc2lvbnMgPSB7IGNvdW50OiAwLCBzaXplOiAwIH0pIHtcbiAgICBpZiAoY291bnQgPT09IDAgfHwgc2l6ZSA9PT0gMCkge1xuICAgICAgaWYgKGNvdW50ICE9PSAwIHx8IHNpemUgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb3VudCBhbmQgc2l6ZSBtdXN0IGJvdGggYmUgemVybyBpZiBvbmUgaXMgemVyb2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY291bnQgPSBjb3VudDtcbiAgICB0aGlzLnNpemUgPSBzaXplO1xuXG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgRnJvbUlucHV0UGFyYW1zIHtcbiAgLy8gSW4gY2FzZXMgd2hlcmUgdGhlIGlucHV0IHR5cGUgaXMgYW1iaWd1b3VzLCB3ZSBtdXN0IHByb3ZpZGUgYSBoaW50IGFib3V0IHNwZW5kIHNjcmlwdCB0eXBlLlxuICBhc3N1bWVVbnNpZ25lZD86IERpbWVuc2lvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbVVuc3BlbnRQYXJhbXMge1xuICBwMnRyOiB7XG4gICAgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyO1xuICB9O1xuICBwMnRyTXVzaWcyOiB7XG4gICAgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyO1xuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0VW5zcGVudFBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSB7XG4gIHAydHI6IHtcbiAgICBzY3JpcHRQYXRoTGV2ZWw6IDEsXG4gIH0sXG4gIHAydHJNdXNpZzI6IHtcbiAgICAvLyBEZWZhdWx0IHRvIHNjcmlwdCBwYXRoIHNwZW5kLCB0byBtYWtlIGl0IGVhc2llciBmb3IgcmVjb3ZlcnkgY2FzZSBjYWxsZXJzIChXUlcgZXRjKS5cbiAgICAvLyBXUCBjYW4gZXhwbGljaXRseSBwYXNzIHVuZGVmaW5lZCB0byB1c2Uga2V5IHBhdGguXG4gICAgc2NyaXB0UGF0aExldmVsOiAxLFxuICB9LFxufTtcblxuLyoqXG4gKiBEaW1lbnNpb25zIG9mIGEgQml0R28gd2FsbGV0IHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpbWVuc2lvbnMge1xuICAvKiogSW5wdXQgY291bnRzIGZvciBCaXRHbyB3YWxsZXQgbXVsdGktc2lnbmF0dXJlIGlucHV0cyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgblAyc2hJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJzaFAyd3NoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAyd3NoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAydHJLZXlwYXRoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiBudW1iZXIgPSAwO1xuXG4gIC8qIElucHV0IGNvdW50IGZvciBzaW5nbGUtc2lnbmF0dXJlIGlucHV0cyAoUmVwbGF5IFByb3RlY3Rpb24gaW5wdXRzKSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgblAyc2hQMnBrSW5wdXRzOiBudW1iZXIgPSAwO1xuXG4gIHB1YmxpYyByZWFkb25seSBvdXRwdXRzOiBPdXRwdXREaW1lbnNpb25zID0gbmV3IE91dHB1dERpbWVuc2lvbnMoKTtcblxuICBjb25zdHJ1Y3RvcihkOiBQYXJ0aWFsPERpbWVuc2lvbnM+ID0ge30pIHtcbiAgICBPYmplY3QuZW50cmllcyhkKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHRoaXMuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSkpO1xuXG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJvcGVydHkoazogc3RyaW5nLCB2OiB1bmtub3duKTogdm9pZCB7XG4gICAgc3dpdGNoIChrKSB7XG4gICAgICBjYXNlICduUDJzaElucHV0cyc6XG4gICAgICBjYXNlICduUDJzaFAyd3NoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMndzaElucHV0cyc6XG4gICAgICBjYXNlICduUDJ0cktleXBhdGhJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyc6XG4gICAgICBjYXNlICduUDJzaFAycGtJbnB1dHMnOlxuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9wZXJ0eSAke2t9IG11c3QgYmUgbnVtYmVyYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih2KSB8fCB2IDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvcGVydHkgJHtrfSBtdXN0IGJlIHplcm8gb3IgcG9zaXRpdmUgaW50ZWdlcmApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3V0cHV0cyc6XG4gICAgICAgIGlmICghKHYgaW5zdGFuY2VvZiBPdXRwdXREaW1lbnNpb25zKSkge1xuICAgICAgICAgIHYgPSBuZXcgT3V0cHV0RGltZW5zaW9ucyh2IGFzIE91dHB1dERpbWVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHByb3BlcnR5ICR7a31gKTtcbiAgICB9XG5cbiAgICAodGhpcyBhcyBhbnkpW2tdID0gdjtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBaRVJPID0gT2JqZWN0LmZyZWV6ZShuZXcgRGltZW5zaW9ucygpKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFpFUk9cbiAgICogQHJldHVybiBEaW1lbnNpb25zIGZvciBhbiBlbXB0eSB0cmFuc2FjdGlvblxuICAgKi9cbiAgc3RhdGljIHplcm8oKTogUmVhZG9ubHk8RGltZW5zaW9ucz4ge1xuICAgIHJldHVybiB0aGlzLlpFUk87XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNpemVcbiAgICogQHJldHVybiBEaW1lbnNpb25zIGZvciBhIHNpbmdsZSBvdXRwdXQgd2l0aCBnaXZlbiBzaXplXG4gICAqL1xuICBzdGF0aWMgc2luZ2xlT3V0cHV0KHNpemU6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemUgfSB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBTaW5nbGVPdXRwdXQgPSBPYmplY3QuZnJlZXplKHtcbiAgICBwMnNoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMnNoT3V0cHV0U2l6ZSksXG4gICAgcDJzaFAyd3NoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMnNoUDJ3c2hPdXRwdXRTaXplKSxcbiAgICBwMndzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ3c2hPdXRwdXRTaXplKSxcbiAgICBwMnRyOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMnRyT3V0cHV0U2l6ZSksXG5cbiAgICBwMnBraDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJwa2hPdXRwdXRTaXplKSxcbiAgICBwMndwa2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyd3BraE91dHB1dFNpemUpLFxuICB9KTtcblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgaW5wdXRzIChwMnNoICsgcDJzaFAyd3NoICsgcDJ3c2ggKyBwMnRyKVxuICAgKi9cbiAgZ2V0IG5JbnB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5uUDJzaElucHV0cyArXG4gICAgICB0aGlzLm5QMnNoUDJ3c2hJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJ3c2hJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJ0cktleXBhdGhJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJzaFAycGtJbnB1dHNcbiAgICApO1xuICB9XG5cbiAgc2V0IG5JbnB1dHMoXzogbnVtYmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkLW9ubHkgcHJvcGVydHkgbklucHV0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gTnVtYmVyIG9mIHRvdGFsIG91dHB1dHNcbiAgICovXG4gIGdldCBuT3V0cHV0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm91dHB1dHMuY291bnQ7XG4gIH1cblxuICBzZXQgbk91dHB1dHMoXzogbnVtYmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZWFkLW9ubHkgcHJvcGVydHkgbk91dHB1dHNgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gYXJncyAtIERpbWVuc2lvbnMgKGNhbiBiZSBwYXJ0aWFsbHkgZGVmaW5lZClcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIGFyZ3VtZW50c1xuICAgKi9cbiAgc3RhdGljIHN1bSguLi5hcmdzOiBQYXJ0aWFsPERpbWVuc2lvbnM+W10pOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gYXJncy5yZWR1Y2UoKGE6IERpbWVuc2lvbnMsIGI6IFBhcnRpYWw8RGltZW5zaW9ucz4pID0+IGEucGx1cyhiKSwgbmV3IERpbWVuc2lvbnMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIHN0YXRpYyBnZXRPdXRwdXRTY3JpcHRMZW5ndGhGb3JDaGFpbihjaGFpbjogQ2hhaW5Db2RlKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbikpIHtcbiAgICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIGNhc2UgJ3AydHInOlxuICAgICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICAgIHJldHVybiAzNDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAyMztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNjcmlwdExlbmd0aFxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IHZTaXplIG9mIGFuIG91dHB1dCB3aXRoIHNjcmlwdCBsZW5ndGhcbiAgICovXG4gIHN0YXRpYyBnZXRWU2l6ZUZvck91dHB1dFdpdGhTY3JpcHRMZW5ndGgoc2NyaXB0TGVuZ3RoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKHNjcmlwdExlbmd0aCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIHBvc2l0aXZlIGludGVnZXIgZm9yIHNjcmlwdExlbmd0aCwgZ290ICR7c2NyaXB0TGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4gc2NyaXB0TGVuZ3RoICsgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSArIFZpcnR1YWxTaXplcy50eE91dHB1dEFtb3VudFNpemU7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgU2luZ2xlSW5wdXQgPSBPYmplY3QuZnJlZXplKHtcbiAgICBwMnNoOiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoSW5wdXRzOiAxIH0pLFxuICAgIHAyc2hQMndzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJzaFAyd3NoSW5wdXRzOiAxIH0pLFxuICAgIHAyd3NoOiBEaW1lbnNpb25zLnN1bSh7IG5QMndzaElucHV0czogMSB9KSxcbiAgICBwMnRyS2V5cGF0aDogRGltZW5zaW9ucy5zdW0oeyBuUDJ0cktleXBhdGhJbnB1dHM6IDEgfSksXG4gICAgcDJ0clNjcmlwdFBhdGhMZXZlbDE6IERpbWVuc2lvbnMuc3VtKHsgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiAxIH0pLFxuICAgIHAydHJTY3JpcHRQYXRoTGV2ZWwyOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogMSB9KSxcbiAgICBwMnNoUDJwazogRGltZW5zaW9ucy5zdW0oeyBuUDJzaFAycGtJbnB1dHM6IDEgfSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuXG4gICAqL1xuICBzdGF0aWMgZnJvbVNjcmlwdFR5cGUoXG4gICAgc2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNjcmlwdFR5cGUyT2YzIHwgJ3AycGtoJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgICB9ID0ge31cbiAgKTogRGltZW5zaW9ucyB7XG4gICAgc3dpdGNoIChzY3JpcHRUeXBlKSB7XG4gICAgICBjYXNlICdwMnNoJzpcbiAgICAgIGNhc2UgJ3Ayc2hQMndzaCc6XG4gICAgICBjYXNlICdwMndzaCc6XG4gICAgICBjYXNlICdwMnNoUDJwayc6XG4gICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0W3NjcmlwdFR5cGVdO1xuICAgICAgY2FzZSAncDJ0cic6XG4gICAgICBjYXNlICd0YXByb290U2NyaXB0UGF0aFNwZW5kJzpcbiAgICAgICAgc3dpdGNoIChwYXJhbXMuc2NyaXB0UGF0aExldmVsKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDI7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzY3JpcHQgcGF0aCBsZXZlbGApO1xuICAgICAgICB9XG4gICAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgICAgc3dpdGNoIChwYXJhbXMuc2NyaXB0UGF0aExldmVsKSB7XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyS2V5cGF0aDtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdCBwYXRoIGxldmVsYCk7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3RhcHJvb3RLZXlQYXRoU3BlbmQnOlxuICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyS2V5cGF0aDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzY3JpcHRUeXBlICR7c2NyaXB0VHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJTSF9QMldTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJzaFAyd3NoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyV1NIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMndzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX0tFWVBBVEggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJLZXlwYXRoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyVFJfU0NSSVBUUEFUSF9MRVZFTDEgPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyVFJfU0NSSVBUUEFUSF9MRVZFTDIgPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwyO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyU0hfUDJQS19JTlBVVCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJzaFAycGs7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0QXNzdW1lZERpbWVuc2lvbihwYXJhbXM6IEZyb21JbnB1dFBhcmFtcyA9IHt9LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgeyBhc3N1bWVVbnNpZ25lZCB9ID0gcGFyYW1zO1xuICAgIGlmICghYXNzdW1lVW5zaWduZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaWxsZWdhbCBpbnB1dCAke2luZGV4fTogZW1wdHkgc2NyaXB0IGFuZCBhc3N1bWVVbnNpZ25lZCBub3Qgc2V0YCk7XG4gICAgfVxuICAgIHJldHVybiBhc3N1bWVVbnNpZ25lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW5wdXQgLSB0aGUgdHJhbnNhY3Rpb24gaW5wdXQgdG8gY291bnRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiAgICAgICAgW3BhcmFtLmFzc3VtZVVuc2lnbmVkXSAtIGRlZmF1bHQgdHlwZSBmb3IgdW5zaWduZWQgaW5wdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tSW5wdXQoaW5wdXQ6IHV0eG9saWIuVHhJbnB1dCwgcGFyYW1zOiBGcm9tSW5wdXRQYXJhbXMgPSB7fSk6IERpbWVuc2lvbnMge1xuICAgIGlmIChpbnB1dC5zY3JpcHQ/Lmxlbmd0aCB8fCBpbnB1dC53aXRuZXNzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQoaW5wdXQpO1xuICAgICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUocGFyc2VkLnNjcmlwdFR5cGUsIHBhcnNlZCBhcyB7IHNjcmlwdFBhdGhMZXZlbD86IG51bWJlciB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGltZW5zaW9ucy5nZXRBc3N1bWVkRGltZW5zaW9uKHBhcmFtcywgaW5wdXQuaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEaW1lbnNpb25zIGZyb20gcHNidCBpbnB1dFxuICAgKiBAcGFyYW0gaW5wdXQgLSBwc2J0IGlucHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbVBzYnRJbnB1dChpbnB1dDogYml0Z28uUHNidElucHV0VHlwZSk6IERpbWVuc2lvbnMge1xuICAgIGNvbnN0IHBhcnNlZCA9IGJpdGdvLnBhcnNlUHNidElucHV0KGlucHV0KTtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tU2NyaXB0VHlwZShwYXJzZWQuc2NyaXB0VHlwZSwgcGFyc2VkIGFzIHsgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbnB1dHMgLSBBcnJheSBvZiBpbnB1dHNcbiAgICogQHBhcmFtIHBhcmFtcyAtIEBzZWUgRGltZW5zaW9ucy5mcm9tSW5wdXQoKVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggaW5wdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tSW5wdXQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tSW5wdXRzKGlucHV0czogdXR4b2xpYi5UeElucHV0W10sIHBhcmFtcz86IEZyb21JbnB1dFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dHMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnB1dHMgbXVzdCBiZSBhcnJheWApO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oLi4uaW5wdXRzLm1hcCgoaSkgPT4gRGltZW5zaW9ucy5mcm9tSW5wdXQoaSwgcGFyYW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEaW1lbnNpb25zIGZyb20gbXVsdGlwbGUgcHNidCBpbnB1dHNcbiAgICogQHBhcmFtIGlucHV0cyBwc2J0IGlucHV0IGFycmF5XG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCBpbnB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidElucHV0cyhpbnB1dHM6IGJpdGdvLlBzYnRJbnB1dFR5cGVbXSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dHMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnB1dHMgbXVzdCBiZSBhcnJheWApO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oLi4uaW5wdXRzLm1hcCgoaW5wdXQsIF8pID0+IERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dChpbnB1dCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2NyaXB0TGVuZ3RoIHtudW1iZXJ9IC0gc2l6ZSBvZiB0aGUgb3V0cHV0IHNjcmlwdCBpbiBieXRlc1xuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSAtIERpbWVuc2lvbnMgb2YgdGhlIG91dHB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXRTY3JpcHRMZW5ndGgoc2NyaXB0TGVuZ3RoOiBudW1iZXIpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oe1xuICAgICAgb3V0cHV0czoge1xuICAgICAgICBjb3VudDogMSxcbiAgICAgICAgc2l6ZTogRGltZW5zaW9ucy5nZXRWU2l6ZUZvck91dHB1dFdpdGhTY3JpcHRMZW5ndGgoc2NyaXB0TGVuZ3RoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG91dHB1dCAtIGEgdHggb3V0cHV0XG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyAtIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBnaXZlbiBvdXRwdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0KHsgc2NyaXB0IH06IHsgc2NyaXB0OiBCdWZmZXIgfSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghc2NyaXB0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIG91dHB1dCBzY3JpcHQgdG8gYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzY3JpcHQpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBzY3JpcHQgdG8gYmUgYnVmZmVyLCBnb3QgJyArIHR5cGVvZiBzY3JpcHQpO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKHNjcmlwdC5sZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvdXRwdXRzIC0gQXJyYXkgb2Ygb3V0cHV0c1xuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggb3V0cHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbU91dHB1dCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXRzKG91dHB1dHM6IHsgc2NyaXB0OiBCdWZmZXIgfVtdKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG91dHB1dHMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvdXRwdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLm91dHB1dHMubWFwKERpbWVuc2lvbnMuZnJvbU91dHB1dCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpbWVuc2lvbnMgb2YgYW4gb3V0cHV0IHRoYXQgd2lsbCBiZSBjcmVhdGVkIG9uIGEgc3BlY2lmaWMgY2hhaW4uXG4gICAqIEN1cnJlbnRseSwgdGhpcyBzaW1wbHkgYWRkcyBhIGRlZmF1bHQgb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0gY2hhaW4gLSBDaGFpbiBjb2RlIGFzIGRlZmluZWQgYnkgdXR4b2xpYi5iaXRnb1xuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSAtIERpbWVuc2lvbnMgZm9yIGEgc2luZ2xlIG91dHB1dCBvbiB0aGUgZ2l2ZW4gY2hhaW4uXG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dE9uQ2hhaW4oY2hhaW46IENoYWluQ29kZSk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21PdXRwdXRTY3JpcHRMZW5ndGgoRGltZW5zaW9ucy5nZXRPdXRwdXRTY3JpcHRMZW5ndGhGb3JDaGFpbihjaGFpbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBkaW1lbnNpb25zIG9mIGFuIHVuc3BlbnQgYWNjb3JkaW5nIHRvIGBjaGFpbmAgcGFyYW1ldGVyXG4gICAqIEBwYXJhbSBjaGFpbiAtIENoYWluIGNvZGUgYXMgZGVmaW5lZCBieSB1dHhvLmNoYWluXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBIaW50IGZvciB1bnNwZW50cyB3aXRoIHZhcmlhYmxlIGlucHV0IHNpemVzIChwMnRyKS5cbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gb2YgdGhlIHVuc3BlbnRcbiAgICogQHRocm93cyBpZiB0aGUgY2hhaW4gY29kZSBpcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnQoeyBjaGFpbiB9OiB7IGNoYWluOiBudW1iZXIgfSwgcGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IGRlZmF1bHRVbnNwZW50UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFpc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgY2hhaW4gY29kZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoXG4gICAgICBzY3JpcHRUeXBlLFxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gcGFyYW1zLnAydHIgOiBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicgPyBwYXJhbXMucDJ0ck11c2lnMiA6IHt9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdW5zcGVudHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIHVuc3BlbnQgKEBzZWUgRGltZW5zaW9ucy5mcm9tVW5zcGVudCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21VbnNwZW50cyh1bnNwZW50czogeyBjaGFpbjogQ2hhaW5Db2RlIH1bXSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh1bnNwZW50cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3BlbnRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0aGUgaW5kaXZpZHVhbCB1bnNwZW50cyBpbnRvIGRpbWVuc2lvbnMgYW5kIHN1bSB0aGVtIHVwXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLnVuc3BlbnRzLm1hcCgodSkgPT4gRGltZW5zaW9ucy5mcm9tVW5zcGVudCh1KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIGJpdGNvaW4tbGlrZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gW3BhcmFtLmFzc3VtZVVuc2lnbmVkXSAtIGRlZmF1bHQgdHlwZSBmb3IgdW5zaWduZWQgaW5wdXRzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uKFxuICAgIHtcbiAgICAgIGlucyxcbiAgICAgIG91dHMsXG4gICAgfToge1xuICAgICAgaW5zOiB1dHhvbGliLlR4SW5wdXRbXTtcbiAgICAgIG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXTtcbiAgICB9LFxuICAgIHBhcmFtcz86IEZyb21JbnB1dFBhcmFtc1xuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tSW5wdXRzKGlucywgcGFyYW1zKS5wbHVzKERpbWVuc2lvbnMuZnJvbU91dHB1dHMob3V0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEaW1lbnNpb25zIGZyb20gcHNidCBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICogQHBhcmFtIHBzYnRcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidChwc2J0OiBiaXRnby5VdHhvUHNidCk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXRzKHBzYnQuZGF0YS5pbnB1dHMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhwc2J0LmdldFVuc2lnbmVkVHgoKS5vdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRpbWVuc2lvbnMgKGNhbiBiZSBwYXJ0aWFsbHkgZGVmaW5lZClcbiAgICogQHJldHVybiBuZXcgZGltZW5zaW9ucyB3aXRoIGFyZ3VtZW50IGFkZGVkXG4gICAqL1xuICBwbHVzKGRpbWVuc2lvbnM6IFBhcnRpYWw8RGltZW5zaW9ucz4pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAodHlwZW9mIGRpbWVuc2lvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBhcmd1bWVudCB0byBiZSBvYmplY3RgKTtcbiAgICB9XG5cbiAgICBpZiAoIShkaW1lbnNpb25zIGluc3RhbmNlb2YgRGltZW5zaW9ucykpIHtcbiAgICAgIGRpbWVuc2lvbnMgPSBuZXcgRGltZW5zaW9ucyhkaW1lbnNpb25zKTtcbiAgICB9XG5cbiAgICAvLyBDYXRjaCBpbnN0YW5jZXMgd2hlcmUgd2UgdHJ5IHRvIGluaXRpYWxpemUgRGltZW5zaW9ucyBmcm9tIHBhcnRpYWwgZGF0YSB1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnNcbiAgICAvLyB1c2luZyBvbmx5IFwibk91dHB1dHNcIi5cbiAgICBpZiAoJ25PdXRwdXRzJyBpbiBkaW1lbnNpb25zKSB7XG4gICAgICBpZiAoISgnb3V0cHV0cycgaW4gZGltZW5zaW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIHBhcnRpYWwgYWRkaXRpb246IGFyZ3VtZW50IGhhcyBrZXkgXCJuT3V0cHV0c1wiIGJ1dCBubyBcIm91dHB1dHNcIicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG91dHB1dHMsIG5PdXRwdXRzIH0gPSBkaW1lbnNpb25zIGFzIERpbWVuc2lvbnM7XG5cbiAgICAgIGlmIChvdXRwdXRzLmNvdW50ICE9PSBuT3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgXCJuT3V0cHV0c1wiIGFuZCBcIm91dHB1dHMuY291bnRcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBEaW1lbnNpb25zKHRoaXMsIChrZXksIHYpID0+IHtcbiAgICAgIGNvbnN0IHcgPSBkaW1lbnNpb25zW2tleV0gPz8gRGltZW5zaW9ucy5aRVJPW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnb3V0cHV0cycpIHtcbiAgICAgICAgY29uc3Qgdk91dHB1dHMgPSB2IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IHdPdXRwdXRzID0gdyBhcyBPdXRwdXREaW1lbnNpb25zO1xuICAgICAgICByZXR1cm4gbmV3IE91dHB1dERpbWVuc2lvbnMoe1xuICAgICAgICAgIGNvdW50OiB2T3V0cHV0cy5jb3VudCArIHdPdXRwdXRzLmNvdW50LFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKyB3T3V0cHV0cy5zaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodiBhcyBudW1iZXIpICsgKHcgYXMgbnVtYmVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBseSBkaW1lbnNpb25zIGJ5IGEgZ2l2ZW4gZmFjdG9yXG4gICAqIEBwYXJhbSBmYWN0b3IgLSBQb3NpdGl2ZSBpbnRlZ2VyXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICB0aW1lcyhmYWN0b3I6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGZhY3RvcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGZhY3RvciB0byBiZSBwb3NpdGl2ZSBpbnRlZ2VyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHZhbHVlIGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICogZmFjdG9yLFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKiBmYWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIG51bWJlcikgKiBmYWN0b3I7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgaW5wdXRzIChwMnNoLCBwMnNoUDJ3c2ggYW5kIHAyd3NoKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGRpbWVuc2lvbi5uSW5wdXRzYCBpbnN0ZWFkXG4gICAqL1xuICBnZXROSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubklucHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgZGltZW5zaW9ucyBoYXZlIG9uZSBvciBtb3JlIChwMnNoKXAyd3NoIGlucHV0c1xuICAgKi9cbiAgaXNTZWd3aXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0cktleXBhdGhJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzID5cbiAgICAgIDBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gb3ZlcmhlYWQgdnNpemUsIGJhc2VkIG9uIHJlc3VsdCBpc1NlZ3dpdCgpLlxuICAgKi9cbiAgZ2V0T3ZlcmhlYWRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlzU2Vnd2l0KCkgPyBWaXJ0dWFsU2l6ZXMudHhTZWdPdmVyaGVhZFZTaXplIDogVmlydHVhbFNpemVzLnR4T3ZlcmhlYWRTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHZzaXplIG9mIGlucHV0cywgd2l0aG91dCB0cmFuc2FjdGlvbiBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0SW5wdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICBjb25zdCB7XG4gICAgICB0eFAyc2hJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ3c2hJbnB1dFNpemUsXG4gICAgICB0eFAydHJLZXlwYXRoSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZSxcbiAgICAgIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMnBrSW5wdXRTaXplLFxuICAgIH0gPSBWaXJ0dWFsU2l6ZXM7XG5cbiAgICBjb25zdCB7XG4gICAgICBuUDJzaElucHV0cyxcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ0cktleXBhdGhJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMsXG4gICAgICBuUDJzaFAycGtJbnB1dHMsXG4gICAgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaXplID1cbiAgICAgIG5QMnNoSW5wdXRzICogdHhQMnNoSW5wdXRTaXplICtcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMgKiB0eFAyc2hQMndzaElucHV0U2l6ZSArXG4gICAgICBuUDJ3c2hJbnB1dHMgKiB0eFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyAqIHR4UDJ0cktleXBhdGhJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMnBrSW5wdXRzICogdHhQMnNoUDJwa0lucHV0U2l6ZSArXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMgKiB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU7XG4gICAgaWYgKE51bWJlci5pc05hTihzaXplKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHNpemVgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSByZXR1cm4gdnNpemUgb2Ygb3V0cHV0cywgd2l0aG91dCBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0T3V0cHV0c1ZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0cy5zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGltYXRlcyB0aGUgdmlydHVhbCBzaXplICgxLzQgd2VpZ2h0KSBvZiBhIHNpZ25lZCB0cmFuc2FjdGlvbiBhcyBzdW0gb2ZcbiAgICogb3ZlcmhlYWQgdnNpemUsIGlucHV0IHZzaXplIGFuZCBvdXRwdXQgdnNpemUuXG4gICAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBlc3RpbWF0ZWQgdnNpemUgb2YgdGhlIHRyYW5zYWN0aW9uIGRpbWVuc2lvbnMuXG4gICAqL1xuICBnZXRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldE92ZXJoZWFkVlNpemUoKSArIHRoaXMuZ2V0SW5wdXRzVlNpemUoKSArIHRoaXMuZ2V0T3V0cHV0c1ZTaXplKCk7XG4gIH1cbn1cbiJdfQ==
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhEQUFnRDtBQUNoRCxtREFBNkM7QUFDN0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLGdCQUFLLENBQUM7QUFHbEQsK0NBQTRDO0FBQzVDLG1DQUEwQztBQUUxQyxpREFBOEM7QUFDckMsNkZBREEsMkJBQVksT0FDQTtBQUVyQjs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUNwQixDQUFzQixFQUN0QixDQUFnRjtJQUVoRixPQUFPLElBQUksVUFBVSxDQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFVM0IsWUFBWSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBdUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDM0UsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQXRCRCw0Q0FzQkM7QUFnQkQsTUFBTSxvQkFBb0IsR0FBc0I7SUFDOUMsSUFBSSxFQUFFO1FBQ0osMkZBQTJGO1FBQzNGLCtEQUErRDtRQUMvRCxlQUFlLEVBQUUsQ0FBQztLQUNuQjtJQUNELFVBQVUsRUFBRTtRQUNWLHVGQUF1RjtRQUN2RixxRUFBcUU7UUFDckUsZUFBZSxFQUFFLENBQUM7S0FDbkI7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFjckIsWUFBWSxJQUF5QixFQUFFO1FBYnZDLDJEQUEyRDtRQUMzQyxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0IsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBQy9CLGdDQUEyQixHQUFXLENBQUMsQ0FBQztRQUN4QyxnQ0FBMkIsR0FBVyxDQUFDLENBQUM7UUFFeEQsd0VBQXdFO1FBQ3hELG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLFlBQU8sR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBR2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFMUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8sV0FBVyxDQUFDLENBQVMsRUFBRSxDQUFVO1FBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDVixLQUFLLGFBQWEsQ0FBQztZQUNuQixLQUFLLGtCQUFrQixDQUFDO1lBQ3hCLEtBQUssY0FBYyxDQUFDO1lBQ3BCLEtBQUssb0JBQW9CLENBQUM7WUFDMUIsS0FBSyw2QkFBNkIsQ0FBQztZQUNuQyxLQUFLLDZCQUE2QixDQUFDO1lBQ25DLEtBQUssaUJBQWlCO2dCQUNwQixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLENBQUMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQXFCLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUEsSUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUk7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWTtRQUM5QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBWUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQywyQkFBMkI7WUFDaEMsSUFBSSxDQUFDLDJCQUEyQjtZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLENBQVM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLENBQVM7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBMkI7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBYSxFQUFFLENBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsNkJBQTZCLENBQUMsS0FBZ0I7UUFDbkQsUUFBUSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxFQUFFLENBQUM7WUFDWjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLFlBQW9CO1FBQzNELElBQUksQ0FBQyx1QkFBZSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxTQUFTLENBQUMsbURBQW1ELFlBQVksRUFBRSxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUNELE9BQU8sWUFBWSxHQUFHLElBQUEseUJBQVcsRUFBQyxZQUFZLENBQUMsR0FBRywyQkFBWSxDQUFDLGtCQUFrQixDQUFDO0lBQ3BGLENBQUM7SUFZRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQ25CLFVBQWlHLEVBQ2pHLFNBRUksRUFBRTtRQUVOLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssVUFBVTtnQkFDYixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLHdCQUF3QjtnQkFDM0IsUUFBUSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQy9CLEtBQUssQ0FBQzt3QkFDSixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7b0JBQ3JELEtBQUssQ0FBQzt3QkFDSixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7b0JBQ3JEO3dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILEtBQUssWUFBWTtnQkFDZixRQUFRLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDL0IsS0FBSyxTQUFTO3dCQUNaLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQzVDLEtBQUssQ0FBQzt3QkFDSixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7b0JBQ3JEO3dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILEtBQUsscUJBQXFCO2dCQUN4QixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1lBQzVDO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFVTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBMEIsRUFBRSxFQUFFLEtBQWE7UUFDNUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBc0IsRUFBRSxTQUEwQixFQUFFO1FBQ25FLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQXNDLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUEwQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxnQkFBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFzQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQXlCLEVBQUUsTUFBd0I7UUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBNkI7UUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFlBQW9CO1FBQ2hELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNwQixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxZQUFZLENBQUM7YUFDakU7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBc0I7UUFDOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxTQUFTLENBQUMsb0NBQW9DLEdBQUcsT0FBTyxNQUFNLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQTZCO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBZ0I7UUFDdkMsT0FBTyxVQUFVLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQXFCLEVBQUUsU0FBNEIsb0JBQW9CO1FBQy9GLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FDOUIsVUFBVSxFQUNWLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDM0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFnQyxFQUFFLFNBQTRCLG9CQUFvQjtRQUNwRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0Qsa0VBQWtFO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEVBQ0UsR0FBRyxFQUNILElBQUksR0FJTCxFQUNELE1BQXdCO1FBRXhCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBb0I7UUFDbEMsT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxVQUErQjtRQUNsQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxzR0FBc0c7UUFDdEcseUJBQXlCO1FBQ3pCLElBQUksVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7WUFDL0YsQ0FBQztZQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBd0IsQ0FBQztZQUV2RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMscUZBQXFGLENBQUMsQ0FBQztZQUN6RyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxRQUFRLEdBQUcsQ0FBcUIsQ0FBQztnQkFDdkMsTUFBTSxRQUFRLEdBQUcsQ0FBcUIsQ0FBQztnQkFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO29CQUMxQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSztvQkFDdEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7aUJBQ3BDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFRLENBQVksR0FBSSxDQUFZLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFjO1FBQ2xCLElBQUksQ0FBQyx1QkFBZSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxTQUFTLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLFFBQVEsR0FBRyxLQUF5QixDQUFDO2dCQUMzQyxPQUFPO29CQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU07b0JBQzlCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU07aUJBQzdCLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBUSxLQUFnQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLENBQ0wsSUFBSSxDQUFDLFlBQVk7WUFDZixJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0I7WUFDdkIsSUFBSSxDQUFDLDJCQUEyQjtZQUNoQyxJQUFJLENBQUMsMkJBQTJCO1lBQ2xDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLDJCQUFZLENBQUMsY0FBYyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixNQUFNLEVBQ0osZUFBZSxFQUNmLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsbUJBQW1CLEdBQ3BCLEdBQUcsMkJBQVksQ0FBQztRQUVqQixNQUFNLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsZUFBZSxHQUNoQixHQUFHLElBQUksQ0FBQztRQUVULE1BQU0sSUFBSSxHQUNSLFdBQVcsR0FBRyxlQUFlO1lBQzdCLGdCQUFnQixHQUFHLG9CQUFvQjtZQUN2QyxZQUFZLEdBQUcsZ0JBQWdCO1lBQy9CLGtCQUFrQixHQUFHLHNCQUFzQjtZQUMzQyxlQUFlLEdBQUcsbUJBQW1CO1lBQ3JDLDJCQUEyQixHQUFHLCtCQUErQjtZQUM3RCwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQztRQUNoRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNsRixDQUFDOztBQTVmSCxnQ0E2ZkM7QUE3Y2lCLGVBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQUFBbEMsQ0FBbUM7QUFrQnZDLHVCQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMzQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQywyQkFBWSxDQUFDLGdCQUFnQixDQUFDO0lBQzVELFNBQVMsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLDJCQUFZLENBQUMscUJBQXFCLENBQUM7SUFDdEUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsMkJBQVksQ0FBQyxpQkFBaUIsQ0FBQztJQUM5RCxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQywyQkFBWSxDQUFDLGdCQUFnQixDQUFDO0lBRTVELEtBQUssRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLDJCQUFZLENBQUMsaUJBQWlCLENBQUM7SUFDOUQsTUFBTSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsMkJBQVksQ0FBQyxrQkFBa0IsQ0FBQztDQUNqRSxDQUFDLEFBUjBCLENBUXpCO0FBa0VhLHNCQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMxQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xELEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEQsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4RSxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUNqRCxDQUFDLEFBUnlCLENBUXhCO0FBMkNhLHNCQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEFBQTlCLENBQStCO0FBQzFDLDRCQUFpQixHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxBQUFuQyxDQUFvQztBQUNyRCx1QkFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxBQUEvQixDQUFnQztBQUM1Qyw4QkFBbUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQUFBckMsQ0FBc0M7QUFDekQsd0NBQTZCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQUFBOUMsQ0FBK0M7QUFDNUUsd0NBQTZCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQUFBOUMsQ0FBK0M7QUFDNUUsaUNBQXNCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEFBQWxDLENBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmNvbnN0IHsgaXNDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiB9ID0gYml0Z287XG50eXBlIENoYWluQ29kZSA9IGJpdGdvLkNoYWluQ29kZTtcblxuaW1wb3J0IHsgY29tcGFjdFNpemUgfSBmcm9tICcuL3NjcmlwdFNpemVzJztcbmltcG9ydCB7IFBvc2l0aXZlSW50ZWdlciB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgeyBWaXJ0dWFsU2l6ZXMgfSBmcm9tICcuL3ZpcnR1YWxTaXplcyc7XG5leHBvcnQgeyBWaXJ0dWFsU2l6ZXMgfTtcblxuLyoqXG4gKiBBcHBseSBgZmAgdG8gYWxsIHByb3BlcnRpZXMgb2YgYGRgXG4gKi9cbmZ1bmN0aW9uIG1hcERpbWVuc2lvbnMoXG4gIGQ6IFBhcnRpYWw8RGltZW5zaW9ucz4sXG4gIGY6IDxUIGV4dGVuZHMga2V5b2YgRGltZW5zaW9ucz4oa2V5OiBULCB2OiBEaW1lbnNpb25zW1RdIHwgdW5kZWZpbmVkKSA9PiB1bmtub3duXG4pOiBEaW1lbnNpb25zIHtcbiAgcmV0dXJuIG5ldyBEaW1lbnNpb25zKFxuICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgZihrZXkgYXMga2V5b2YgRGltZW5zaW9ucywgdmFsdWUpXSkpXG4gICk7XG59XG5cbi8qKlxuICogQWdncmVnYXRlIGNvdW50IGFuZCBzaXplIG9mIHRyYW5zYWN0aW9uIG91dHB1dHNcbiAqL1xuZXhwb3J0IGNsYXNzIE91dHB1dERpbWVuc2lvbnMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIG91dHB1dHNcbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBZ2dyZWdhdGUgdlNpemVcbiAgICovXG4gIHNpemU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGNvdW50ID0gMCwgc2l6ZSA9IDAgfTogT3V0cHV0RGltZW5zaW9ucyA9IHsgY291bnQ6IDAsIHNpemU6IDAgfSkge1xuICAgIGlmIChjb3VudCA9PT0gMCB8fCBzaXplID09PSAwKSB7XG4gICAgICBpZiAoY291bnQgIT09IDAgfHwgc2l6ZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvdW50IGFuZCBzaXplIG11c3QgYm90aCBiZSB6ZXJvIGlmIG9uZSBpcyB6ZXJvYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50O1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG5cbiAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xuICB9XG59XG5cbmludGVyZmFjZSBGcm9tSW5wdXRQYXJhbXMge1xuICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgaW5wdXQgdHlwZSBpcyBhbWJpZ3VvdXMsIHdlIG11c3QgcHJvdmlkZSBhIGhpbnQgYWJvdXQgc3BlbmQgc2NyaXB0IHR5cGUuXG4gIGFzc3VtZVVuc2lnbmVkPzogRGltZW5zaW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGcm9tVW5zcGVudFBhcmFtcyB7XG4gIHAydHI6IHtcbiAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gIH07XG4gIHAydHJNdXNpZzI6IHtcbiAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRVbnNwZW50UGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IHtcbiAgcDJ0cjoge1xuICAgIC8vIERlZmF1bHQgdG8gcmVjb3Zlcnkgc2NyaXB0IHBhdGhzLCB0byBtYWtlIGl0IGVhc2llciBmb3IgcmVjb3ZlcnkgY2FzZSBjYWxsZXJzIChXUlcgZXRjKS5cbiAgICAvLyBXUCBjYW4gZXhwbGljaXRseSBwYXNzIHNjcmlwdFBhdGhMZXZlbDogMSB0byB1c2UgaGFwcHkgcGF0aC5cbiAgICBzY3JpcHRQYXRoTGV2ZWw6IDIsXG4gIH0sXG4gIHAydHJNdXNpZzI6IHtcbiAgICAvLyBEZWZhdWx0IHRvIHNjcmlwdCBwYXRoIHNwZW5kLCB0byBtYWtlIGl0IGVhc2llciBmb3IgcmVjb3ZlcnkgY2FzZSBjYWxsZXJzIChXUlcgZXRjKS5cbiAgICAvLyBXUCBjYW4gZXhwbGljaXRseSBwYXNzIHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIHRvIHVzZSBrZXkgcGF0aC5cbiAgICBzY3JpcHRQYXRoTGV2ZWw6IDEsXG4gIH0sXG59O1xuXG4vKipcbiAqIERpbWVuc2lvbnMgb2YgYSBCaXRHbyB3YWxsZXQgdHJhbnNhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgRGltZW5zaW9ucyB7XG4gIC8qKiBJbnB1dCBjb3VudHMgZm9yIEJpdEdvIHdhbGxldCBtdWx0aS1zaWduYXR1cmUgaW5wdXRzICovXG4gIHB1YmxpYyByZWFkb25seSBuUDJzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoUDJ3c2hJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ3c2hJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0cktleXBhdGhJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IG51bWJlciA9IDA7XG5cbiAgLyogSW5wdXQgY291bnQgZm9yIHNpbmdsZS1zaWduYXR1cmUgaW5wdXRzIChSZXBsYXkgUHJvdGVjdGlvbiBpbnB1dHMpICovXG4gIHB1YmxpYyByZWFkb25seSBuUDJzaFAycGtJbnB1dHM6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dHM6IE91dHB1dERpbWVuc2lvbnMgPSBuZXcgT3V0cHV0RGltZW5zaW9ucygpO1xuXG4gIGNvbnN0cnVjdG9yKGQ6IFBhcnRpYWw8RGltZW5zaW9ucz4gPSB7fSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gdGhpcy5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKSk7XG5cbiAgICBPYmplY3QuZnJlZXplKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcm9wZXJ0eShrOiBzdHJpbmcsIHY6IHVua25vd24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGspIHtcbiAgICAgIGNhc2UgJ25QMnNoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnNoUDJ3c2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyd3NoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyS2V5cGF0aElucHV0cyc6XG4gICAgICBjYXNlICduUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnNoUDJwa0lucHV0cyc6XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByb3BlcnR5ICR7a30gbXVzdCBiZSBudW1iZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHYpIHx8IHYgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9wZXJ0eSAke2t9IG11c3QgYmUgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyYCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdXRwdXRzJzpcbiAgICAgICAgaWYgKCEodiBpbnN0YW5jZW9mIE91dHB1dERpbWVuc2lvbnMpKSB7XG4gICAgICAgICAgdiA9IG5ldyBPdXRwdXREaW1lbnNpb25zKHYgYXMgT3V0cHV0RGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gcHJvcGVydHkgJHtrfWApO1xuICAgIH1cblxuICAgICh0aGlzIGFzIGFueSlba10gPSB2O1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFpFUk8gPSBPYmplY3QuZnJlZXplKG5ldyBEaW1lbnNpb25zKCkpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgWkVST1xuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgZm9yIGFuIGVtcHR5IHRyYW5zYWN0aW9uXG4gICAqL1xuICBzdGF0aWMgemVybygpOiBSZWFkb25seTxEaW1lbnNpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2l6ZVxuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgZm9yIGEgc2luZ2xlIG91dHB1dCB3aXRoIGdpdmVuIHNpemVcbiAgICovXG4gIHN0YXRpYyBzaW5nbGVPdXRwdXQoc2l6ZTogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZSB9IH0pO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFNpbmdsZU91dHB1dCA9IE9iamVjdC5mcmVlemUoe1xuICAgIHAyc2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyc2hPdXRwdXRTaXplKSxcbiAgICBwMnNoUDJ3c2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyc2hQMndzaE91dHB1dFNpemUpLFxuICAgIHAyd3NoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMndzaE91dHB1dFNpemUpLFxuICAgIHAydHI6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAydHJPdXRwdXRTaXplKSxcblxuICAgIHAycGtoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMnBraE91dHB1dFNpemUpLFxuICAgIHAyd3BraDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ3cGtoT3V0cHV0U2l6ZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBpbnB1dHMgKHAyc2ggKyBwMnNoUDJ3c2ggKyBwMndzaCArIHAydHIpXG4gICAqL1xuICBnZXQgbklucHV0cygpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5QMnNoSW5wdXRzICtcbiAgICAgIHRoaXMublAyc2hQMndzaElucHV0cyArXG4gICAgICB0aGlzLm5QMndzaElucHV0cyArXG4gICAgICB0aGlzLm5QMnRyS2V5cGF0aElucHV0cyArXG4gICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyArXG4gICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyArXG4gICAgICB0aGlzLm5QMnNoUDJwa0lucHV0c1xuICAgICk7XG4gIH1cblxuICBzZXQgbklucHV0cyhfOiBudW1iZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlYWQtb25seSBwcm9wZXJ0eSBuSW5wdXRzJyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgb3V0cHV0c1xuICAgKi9cbiAgZ2V0IG5PdXRwdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0cy5jb3VudDtcbiAgfVxuXG4gIHNldCBuT3V0cHV0cyhfOiBudW1iZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHJlYWQtb25seSBwcm9wZXJ0eSBuT3V0cHV0c2ApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcmdzIC0gRGltZW5zaW9ucyAoY2FuIGJlIHBhcnRpYWxseSBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgYXJndW1lbnRzXG4gICAqL1xuICBzdGF0aWMgc3VtKC4uLmFyZ3M6IFBhcnRpYWw8RGltZW5zaW9ucz5bXSk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBhcmdzLnJlZHVjZSgoYTogRGltZW5zaW9ucywgYjogUGFydGlhbDxEaW1lbnNpb25zPikgPT4gYS5wbHVzKGIpLCBuZXcgRGltZW5zaW9ucygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgc3RhdGljIGdldE91dHB1dFNjcmlwdExlbmd0aEZvckNoYWluKGNoYWluOiBDaGFpbkNvZGUpOiBudW1iZXIge1xuICAgIHN3aXRjaCAoc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKSkge1xuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgY2FzZSAncDJ0cic6XG4gICAgICBjYXNlICdwMnRyTXVzaWcyJzpcbiAgICAgICAgcmV0dXJuIDM0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDIzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2NyaXB0TGVuZ3RoXG4gICAqIEByZXR1cm4ge051bWJlcn0gdlNpemUgb2YgYW4gb3V0cHV0IHdpdGggc2NyaXB0IGxlbmd0aFxuICAgKi9cbiAgc3RhdGljIGdldFZTaXplRm9yT3V0cHV0V2l0aFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCFQb3NpdGl2ZUludGVnZXIuaXMoc2NyaXB0TGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgcG9zaXRpdmUgaW50ZWdlciBmb3Igc2NyaXB0TGVuZ3RoLCBnb3QgJHtzY3JpcHRMZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiBzY3JpcHRMZW5ndGggKyBjb21wYWN0U2l6ZShzY3JpcHRMZW5ndGgpICsgVmlydHVhbFNpemVzLnR4T3V0cHV0QW1vdW50U2l6ZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBTaW5nbGVJbnB1dCA9IE9iamVjdC5mcmVlemUoe1xuICAgIHAyc2g6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hJbnB1dHM6IDEgfSksXG4gICAgcDJzaFAyd3NoOiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoUDJ3c2hJbnB1dHM6IDEgfSksXG4gICAgcDJ3c2g6IERpbWVuc2lvbnMuc3VtKHsgblAyd3NoSW5wdXRzOiAxIH0pLFxuICAgIHAydHJLZXlwYXRoOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyS2V5cGF0aElucHV0czogMSB9KSxcbiAgICBwMnRyU2NyaXB0UGF0aExldmVsMTogRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDEgfSksXG4gICAgcDJ0clNjcmlwdFBhdGhMZXZlbDI6IERpbWVuc2lvbnMuc3VtKHsgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAxIH0pLFxuICAgIHAyc2hQMnBrOiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoUDJwa0lucHV0czogMSB9KSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHN0YXRpYyBmcm9tU2NyaXB0VHlwZShcbiAgICBzY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZSB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjMgfCAncDJwa2gnLFxuICAgIHBhcmFtczoge1xuICAgICAgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyO1xuICAgIH0gPSB7fVxuICApOiBEaW1lbnNpb25zIHtcbiAgICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIGNhc2UgJ3Ayc2hQMnBrJzpcbiAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXRbc2NyaXB0VHlwZV07XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgIGNhc2UgJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnOlxuICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zY3JpcHRQYXRoTGV2ZWwpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMjtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdCBwYXRoIGxldmVsYCk7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgICBzd2l0Y2ggKHBhcmFtcy5zY3JpcHRQYXRoTGV2ZWwpIHtcbiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJLZXlwYXRoO1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHBhdGggbGV2ZWxgKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAndGFwcm9vdEtleVBhdGhTcGVuZCc6XG4gICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJLZXlwYXRoO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdFR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIX1AyV1NIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoUDJ3c2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJXU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyd3NoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyVFJfS0VZUEFUSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9TQ1JJUFRQQVRIX0xFVkVMMSA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9TQ1JJUFRQQVRIX0xFVkVMMiA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDI7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJTSF9QMlBLX0lOUFVUID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoUDJwaztcblxuICBwcml2YXRlIHN0YXRpYyBnZXRBc3N1bWVkRGltZW5zaW9uKHBhcmFtczogRnJvbUlucHV0UGFyYW1zID0ge30sIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IGFzc3VtZVVuc2lnbmVkIH0gPSBwYXJhbXM7XG4gICAgaWYgKCFhc3N1bWVVbnNpZ25lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIGlucHV0ICR7aW5kZXh9OiBlbXB0eSBzY3JpcHQgYW5kIGFzc3VtZVVuc2lnbmVkIG5vdCBzZXRgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFzc3VtZVVuc2lnbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpbnB1dCAtIHRoZSB0cmFuc2FjdGlvbiBpbnB1dCB0byBjb3VudFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqICAgICAgICBbcGFyYW0uYXNzdW1lVW5zaWduZWRdIC0gZGVmYXVsdCB0eXBlIGZvciB1bnNpZ25lZCBpbnB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21JbnB1dChpbnB1dDogdXR4b2xpYi5UeElucHV0LCBwYXJhbXM6IEZyb21JbnB1dFBhcmFtcyA9IHt9KTogRGltZW5zaW9ucyB7XG4gICAgaWYgKGlucHV0LnNjcmlwdD8ubGVuZ3RoIHx8IGlucHV0LndpdG5lc3M/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCk7XG4gICAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tU2NyaXB0VHlwZShwYXJzZWQuc2NyaXB0VHlwZSwgcGFyc2VkIGFzIHsgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBEaW1lbnNpb25zLmdldEFzc3VtZWREaW1lbnNpb24ocGFyYW1zLCBpbnB1dC5pbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBwc2J0IGlucHV0XG4gICAqIEBwYXJhbSBpbnB1dCAtIHBzYnQgaW5wdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidElucHV0KGlucHV0OiBiaXRnby5Qc2J0SW5wdXRUeXBlKTogRGltZW5zaW9ucyB7XG4gICAgY29uc3QgcGFyc2VkID0gYml0Z28ucGFyc2VQc2J0SW5wdXQoaW5wdXQpO1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHBhcnNlZC5zY3JpcHRUeXBlLCBwYXJzZWQgYXMgeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlucHV0cyAtIEFycmF5IG9mIGlucHV0c1xuICAgKiBAcGFyYW0gcGFyYW1zIC0gQHNlZSBEaW1lbnNpb25zLmZyb21JbnB1dCgpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCBpbnB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21JbnB1dCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21JbnB1dHMoaW5wdXRzOiB1dHhvbGliLlR4SW5wdXRbXSwgcGFyYW1zPzogRnJvbUlucHV0UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5pbnB1dHMubWFwKChpKSA9PiBEaW1lbnNpb25zLmZyb21JbnB1dChpLCBwYXJhbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBtdWx0aXBsZSBwc2J0IGlucHV0c1xuICAgKiBAcGFyYW0gaW5wdXRzIHBzYnQgaW5wdXQgYXJyYXlcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIGlucHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dCgpKVxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0SW5wdXRzKGlucHV0czogYml0Z28uUHNidElucHV0VHlwZVtdKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5pbnB1dHMubWFwKChpbnB1dCwgXykgPT4gRGltZW5zaW9ucy5mcm9tUHNidElucHV0KGlucHV0KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY3JpcHRMZW5ndGgge251bWJlcn0gLSBzaXplIG9mIHRoZSBvdXRwdXQgc2NyaXB0IGluIGJ5dGVzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IC0gRGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGg6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSh7XG4gICAgICBvdXRwdXRzOiB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBzaXplOiBEaW1lbnNpb25zLmdldFZTaXplRm9yT3V0cHV0V2l0aFNjcmlwdExlbmd0aChzY3JpcHRMZW5ndGgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3V0cHV0IC0gYSB0eCBvdXRwdXRcbiAgICogQHJldHVybiBEaW1lbnNpb25zIC0gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGdpdmVuIG91dHB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXQoeyBzY3JpcHQgfTogeyBzY3JpcHQ6IEJ1ZmZlciB9KTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgb3V0cHV0IHNjcmlwdCB0byBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIHNjcmlwdCB0byBiZSBidWZmZXIsIGdvdCAnICsgdHlwZW9mIHNjcmlwdCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21PdXRwdXRTY3JpcHRMZW5ndGgoc2NyaXB0Lmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG91dHB1dHMgLSBBcnJheSBvZiBvdXRwdXRzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCBvdXRwdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tT3V0cHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dHMob3V0cHV0czogeyBzY3JpcHQ6IEJ1ZmZlciB9W10pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3V0cHV0cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG91dHB1dHMgbXVzdCBiZSBhcnJheWApO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oLi4ub3V0cHV0cy5tYXAoRGltZW5zaW9ucy5mcm9tT3V0cHV0KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGltZW5zaW9ucyBvZiBhbiBvdXRwdXQgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgb24gYSBzcGVjaWZpYyBjaGFpbi5cbiAgICogQ3VycmVudGx5LCB0aGlzIHNpbXBseSBhZGRzIGEgZGVmYXVsdCBvdXRwdXQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFpbiAtIENoYWluIGNvZGUgYXMgZGVmaW5lZCBieSB1dHhvbGliLmJpdGdvXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IC0gRGltZW5zaW9ucyBmb3IgYSBzaW5nbGUgb3V0cHV0IG9uIHRoZSBnaXZlbiBjaGFpbi5cbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0T25DaGFpbihjaGFpbjogQ2hhaW5Db2RlKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbU91dHB1dFNjcmlwdExlbmd0aChEaW1lbnNpb25zLmdldE91dHB1dFNjcmlwdExlbmd0aEZvckNoYWluKGNoYWluKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGRpbWVuc2lvbnMgb2YgYW4gdW5zcGVudCBhY2NvcmRpbmcgdG8gYGNoYWluYCBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIGNoYWluIC0gQ2hhaW4gY29kZSBhcyBkZWZpbmVkIGJ5IHV0eG8uY2hhaW5cbiAgICogQHBhcmFtIHBhcmFtcyAtIEhpbnQgZm9yIHVuc3BlbnRzIHdpdGggdmFyaWFibGUgaW5wdXQgc2l6ZXMgKHAydHIsIHAydHJNdXNpZzIpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IG9mIHRoZSB1bnNwZW50XG4gICAqIEB0aHJvd3MgaWYgdGhlIGNoYWluIGNvZGUgaXMgaW52YWxpZCBvciB1bnN1cHBvcnRlZFxuICAgKi9cbiAgc3RhdGljIGZyb21VbnNwZW50KHsgY2hhaW4gfTogeyBjaGFpbjogbnVtYmVyIH0sIHBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSBkZWZhdWx0VW5zcGVudFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghaXNDaGFpbkNvZGUoY2hhaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGNoYWluIGNvZGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcblxuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKFxuICAgICAgc2NyaXB0VHlwZSxcbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IHBhcmFtcy5wMnRyIDogc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInID8gcGFyYW1zLnAydHJNdXNpZzIgOiB7fVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHVuc3BlbnRzXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBIaW50IGZvciB1bnNwZW50cyB3aXRoIHZhcmlhYmxlIGlucHV0IHNpemVzIChwMnRyLCBwMnRyTXVzaWcyKVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggdW5zcGVudCAoQHNlZSBEaW1lbnNpb25zLmZyb21VbnNwZW50KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnRzKHVuc3BlbnRzOiB7IGNoYWluOiBDaGFpbkNvZGUgfVtdLCBwYXJhbXM6IEZyb21VbnNwZW50UGFyYW1zID0gZGVmYXVsdFVuc3BlbnRQYXJhbXMpOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodW5zcGVudHMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGB1bnNwZW50cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgdGhlIGluZGl2aWR1YWwgdW5zcGVudHMgaW50byBkaW1lbnNpb25zIGFuZCBzdW0gdGhlbSB1cFxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi51bnNwZW50cy5tYXAoKHUpID0+IERpbWVuc2lvbnMuZnJvbVVuc3BlbnQodSwgcGFyYW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIGJpdGNvaW4tbGlrZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gW3BhcmFtLmFzc3VtZVVuc2lnbmVkXSAtIGRlZmF1bHQgdHlwZSBmb3IgdW5zaWduZWQgaW5wdXRzXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICBzdGF0aWMgZnJvbVRyYW5zYWN0aW9uKFxuICAgIHtcbiAgICAgIGlucyxcbiAgICAgIG91dHMsXG4gICAgfToge1xuICAgICAgaW5zOiB1dHhvbGliLlR4SW5wdXRbXTtcbiAgICAgIG91dHM6IHV0eG9saWIuVHhPdXRwdXRbXTtcbiAgICB9LFxuICAgIHBhcmFtcz86IEZyb21JbnB1dFBhcmFtc1xuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tSW5wdXRzKGlucywgcGFyYW1zKS5wbHVzKERpbWVuc2lvbnMuZnJvbU91dHB1dHMob3V0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEaW1lbnNpb25zIGZyb20gcHNidCBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICogQHBhcmFtIHBzYnRcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tUHNidChwc2J0OiBiaXRnby5VdHhvUHNidCk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXRzKHBzYnQuZGF0YS5pbnB1dHMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhwc2J0LmdldFVuc2lnbmVkVHgoKS5vdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRpbWVuc2lvbnMgKGNhbiBiZSBwYXJ0aWFsbHkgZGVmaW5lZClcbiAgICogQHJldHVybiBuZXcgZGltZW5zaW9ucyB3aXRoIGFyZ3VtZW50IGFkZGVkXG4gICAqL1xuICBwbHVzKGRpbWVuc2lvbnM6IFBhcnRpYWw8RGltZW5zaW9ucz4pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAodHlwZW9mIGRpbWVuc2lvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBhcmd1bWVudCB0byBiZSBvYmplY3RgKTtcbiAgICB9XG5cbiAgICBpZiAoIShkaW1lbnNpb25zIGluc3RhbmNlb2YgRGltZW5zaW9ucykpIHtcbiAgICAgIGRpbWVuc2lvbnMgPSBuZXcgRGltZW5zaW9ucyhkaW1lbnNpb25zKTtcbiAgICB9XG5cbiAgICAvLyBDYXRjaCBpbnN0YW5jZXMgd2hlcmUgd2UgdHJ5IHRvIGluaXRpYWxpemUgRGltZW5zaW9ucyBmcm9tIHBhcnRpYWwgZGF0YSB1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnNcbiAgICAvLyB1c2luZyBvbmx5IFwibk91dHB1dHNcIi5cbiAgICBpZiAoJ25PdXRwdXRzJyBpbiBkaW1lbnNpb25zKSB7XG4gICAgICBpZiAoISgnb3V0cHV0cycgaW4gZGltZW5zaW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIHBhcnRpYWwgYWRkaXRpb246IGFyZ3VtZW50IGhhcyBrZXkgXCJuT3V0cHV0c1wiIGJ1dCBubyBcIm91dHB1dHNcIicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG91dHB1dHMsIG5PdXRwdXRzIH0gPSBkaW1lbnNpb25zIGFzIERpbWVuc2lvbnM7XG5cbiAgICAgIGlmIChvdXRwdXRzLmNvdW50ICE9PSBuT3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgXCJuT3V0cHV0c1wiIGFuZCBcIm91dHB1dHMuY291bnRcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBEaW1lbnNpb25zKHRoaXMsIChrZXksIHYpID0+IHtcbiAgICAgIGNvbnN0IHcgPSBkaW1lbnNpb25zW2tleV0gPz8gRGltZW5zaW9ucy5aRVJPW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnb3V0cHV0cycpIHtcbiAgICAgICAgY29uc3Qgdk91dHB1dHMgPSB2IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IHdPdXRwdXRzID0gdyBhcyBPdXRwdXREaW1lbnNpb25zO1xuICAgICAgICByZXR1cm4gbmV3IE91dHB1dERpbWVuc2lvbnMoe1xuICAgICAgICAgIGNvdW50OiB2T3V0cHV0cy5jb3VudCArIHdPdXRwdXRzLmNvdW50LFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKyB3T3V0cHV0cy5zaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodiBhcyBudW1iZXIpICsgKHcgYXMgbnVtYmVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBseSBkaW1lbnNpb25zIGJ5IGEgZ2l2ZW4gZmFjdG9yXG4gICAqIEBwYXJhbSBmYWN0b3IgLSBQb3NpdGl2ZSBpbnRlZ2VyXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9XG4gICAqL1xuICB0aW1lcyhmYWN0b3I6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGZhY3RvcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGZhY3RvciB0byBiZSBwb3NpdGl2ZSBpbnRlZ2VyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHZhbHVlIGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICogZmFjdG9yLFxuICAgICAgICAgIHNpemU6IHZPdXRwdXRzLnNpemUgKiBmYWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIG51bWJlcikgKiBmYWN0b3I7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiBOdW1iZXIgb2YgdG90YWwgaW5wdXRzIChwMnNoLCBwMnNoUDJ3c2ggYW5kIHAyd3NoKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGRpbWVuc2lvbi5uSW5wdXRzYCBpbnN0ZWFkXG4gICAqL1xuICBnZXROSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubklucHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgZGltZW5zaW9ucyBoYXZlIG9uZSBvciBtb3JlIChwMnNoKXAyd3NoIGlucHV0c1xuICAgKi9cbiAgaXNTZWd3aXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0cktleXBhdGhJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzID5cbiAgICAgIDBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gb3ZlcmhlYWQgdnNpemUsIGJhc2VkIG9uIHJlc3VsdCBpc1NlZ3dpdCgpLlxuICAgKi9cbiAgZ2V0T3ZlcmhlYWRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlzU2Vnd2l0KCkgPyBWaXJ0dWFsU2l6ZXMudHhTZWdPdmVyaGVhZFZTaXplIDogVmlydHVhbFNpemVzLnR4T3ZlcmhlYWRTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHZzaXplIG9mIGlucHV0cywgd2l0aG91dCB0cmFuc2FjdGlvbiBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0SW5wdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICBjb25zdCB7XG4gICAgICB0eFAyc2hJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ3c2hJbnB1dFNpemUsXG4gICAgICB0eFAydHJLZXlwYXRoSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZSxcbiAgICAgIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemUsXG4gICAgICB0eFAyc2hQMnBrSW5wdXRTaXplLFxuICAgIH0gPSBWaXJ0dWFsU2l6ZXM7XG5cbiAgICBjb25zdCB7XG4gICAgICBuUDJzaElucHV0cyxcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ3c2hJbnB1dHMsXG4gICAgICBuUDJ0cktleXBhdGhJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMsXG4gICAgICBuUDJzaFAycGtJbnB1dHMsXG4gICAgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaXplID1cbiAgICAgIG5QMnNoSW5wdXRzICogdHhQMnNoSW5wdXRTaXplICtcbiAgICAgIG5QMnNoUDJ3c2hJbnB1dHMgKiB0eFAyc2hQMndzaElucHV0U2l6ZSArXG4gICAgICBuUDJ3c2hJbnB1dHMgKiB0eFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyAqIHR4UDJ0cktleXBhdGhJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMnBrSW5wdXRzICogdHhQMnNoUDJwa0lucHV0U2l6ZSArXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMgKiB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU7XG4gICAgaWYgKE51bWJlci5pc05hTihzaXplKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHNpemVgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSByZXR1cm4gdnNpemUgb2Ygb3V0cHV0cywgd2l0aG91dCBvdmVyaGVhZFxuICAgKi9cbiAgZ2V0T3V0cHV0c1ZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0cy5zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGltYXRlcyB0aGUgdmlydHVhbCBzaXplICgxLzQgd2VpZ2h0KSBvZiBhIHNpZ25lZCB0cmFuc2FjdGlvbiBhcyBzdW0gb2ZcbiAgICogb3ZlcmhlYWQgdnNpemUsIGlucHV0IHZzaXplIGFuZCBvdXRwdXQgdnNpemUuXG4gICAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBlc3RpbWF0ZWQgdnNpemUgb2YgdGhlIHRyYW5zYWN0aW9uIGRpbWVuc2lvbnMuXG4gICAqL1xuICBnZXRWU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldE92ZXJoZWFkVlNpemUoKSArIHRoaXMuZ2V0SW5wdXRzVlNpemUoKSArIHRoaXMuZ2V0T3V0cHV0c1ZTaXplKCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
11
15
|
}) : function(o, v) {
|
|
12
16
|
o["default"] = v;
|
|
13
17
|
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
21
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
22
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
37
|
};
|
|
@@ -27,4 +41,4 @@ const codes_1 = __importStar(require("./codes")), CodesTypes = codes_1;
|
|
|
27
41
|
exports.Codes = codes_1.default;
|
|
28
42
|
exports.CodesTypes = CodesTypes;
|
|
29
43
|
__exportStar(require("./dimensions"), exports);
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQTZDO0FBRzNDLGdCQUhLLGVBQUssQ0FHTDtBQUVMLGdDQUFVO0FBR1osK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvZGVzLCAqIGFzIENvZGVzVHlwZXMgZnJvbSAnLi9jb2Rlcyc7XG5leHBvcnQge1xuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBDb2RlcyxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ29kZXNUeXBlcyxcbn07XG5cbmV4cG9ydCAqIGZyb20gJy4vZGltZW5zaW9ucyc7XG4iXX0=
|