@bitgo-beta/unspents 0.13.2-beta.96 → 0.13.2-beta.960

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +495 -0
  3. package/dist/bin/generate_tables.js +25 -12
  4. package/dist/src/codes.d.ts +10 -10
  5. package/dist/src/codes.d.ts.map +1 -1
  6. package/dist/src/codes.js +27 -13
  7. package/dist/src/dimensions.d.ts +4 -4
  8. package/dist/src/dimensions.d.ts.map +1 -1
  9. package/dist/src/dimensions.js +34 -19
  10. package/dist/src/index.js +23 -9
  11. package/dist/src/inputWeights.d.ts +3 -3
  12. package/dist/src/inputWeights.d.ts.map +1 -1
  13. package/dist/src/inputWeights.js +7 -7
  14. package/dist/src/scriptSizes.js +3 -4
  15. package/dist/src/types.js +23 -9
  16. package/dist/src/virtualSizes.d.ts +12 -12
  17. package/dist/src/virtualSizes.js +2 -2
  18. package/dist/src/zcash.d.ts +9 -0
  19. package/dist/src/zcash.d.ts.map +1 -0
  20. package/dist/src/zcash.js +22 -0
  21. package/dist/test/dimensions.js +39 -15
  22. package/dist/test/signedTx/inputWeights.js +27 -13
  23. package/dist/test/signedTx/txCombinations.d.ts +1 -1
  24. package/dist/test/signedTx/txCombinations.d.ts.map +1 -1
  25. package/dist/test/signedTx/txCombinations.js +29 -15
  26. package/dist/test/signedTx/txGen.d.ts +2 -3
  27. package/dist/test/signedTx/txGen.d.ts.map +1 -1
  28. package/dist/test/signedTx/txGen.js +25 -11
  29. package/dist/test/testutils.d.ts +2 -2
  30. package/dist/test/testutils.d.ts.map +1 -1
  31. package/dist/test/testutils.js +28 -14
  32. package/dist/test/zcash.d.ts +2 -0
  33. package/dist/test/zcash.d.ts.map +1 -0
  34. package/dist/test/zcash.js +60 -0
  35. package/dist/tsconfig.build.tsbuildinfo +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/docs/input-costs.md +10 -9
  38. package/package.json +5 -5
@@ -2,16 +2,16 @@
2
2
  * Defines input sizes for BitGo signature scripts.
3
3
  */
4
4
  export declare function varSliceSize(someScript: Sized): number;
5
- export declare type Sized = {
5
+ export type Sized = {
6
6
  length: number;
7
7
  };
8
- export declare type Input = {
8
+ export type Input = {
9
9
  script: Sized;
10
10
  witness: Sized[];
11
11
  };
12
12
  export declare function getInputByteLength(input: Input, allowWitness: boolean): number;
13
13
  export declare function getInputWeight(input: Input): number;
14
- export declare type InputComponents = {
14
+ export type InputComponents = {
15
15
  script: number[];
16
16
  witness: number[];
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"inputWeights.d.ts","sourceRoot":"","sources":["../../src/inputWeights.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAItD;AAaD,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAMnE;AAgCD,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,eAGzC,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC"}
1
+ {"version":3,"file":"inputWeights.d.ts","sourceRoot":"","sources":["../../src/inputWeights.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAItD;AAaD,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAMnE;AAgCD,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,eAGzC,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC"}
@@ -6,13 +6,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.inputComponentsP2shP2pk = exports.inputComponentsP2trScriptSpendLevel2 = exports.inputComponentsP2trScriptSpendLevel1 = exports.inputComponentsP2trKeySpend = exports.inputComponentsP2wsh = exports.inputComponentsP2shP2wsh = exports.inputComponentsP2sh = exports.getInputComponentsWeight = exports.getInputWeight = exports.getInputByteLength = exports.varSliceSize = void 0;
9
+ exports.inputComponentsP2shP2pk = exports.inputComponentsP2trScriptSpendLevel2 = exports.inputComponentsP2trScriptSpendLevel1 = exports.inputComponentsP2trKeySpend = exports.inputComponentsP2wsh = exports.inputComponentsP2shP2wsh = exports.inputComponentsP2sh = void 0;
10
+ exports.varSliceSize = varSliceSize;
11
+ exports.getInputByteLength = getInputByteLength;
12
+ exports.getInputWeight = getInputWeight;
13
+ exports.getInputComponentsWeight = getInputComponentsWeight;
10
14
  const varuint_bitcoin_1 = __importDefault(require("varuint-bitcoin"));
11
15
  function varSliceSize(someScript) {
12
16
  const length = someScript.length;
13
17
  return varuint_bitcoin_1.default.encodingLength(length) + length;
14
18
  }
15
- exports.varSliceSize = varSliceSize;
16
19
  function vectorSize(someVector) {
17
20
  const length = someVector.length;
18
21
  return (varuint_bitcoin_1.default.encodingLength(length) +
@@ -25,11 +28,9 @@ function getInputByteLength(input, allowWitness) {
25
28
  varSliceSize(input.script) +
26
29
  (allowWitness ? vectorSize(input.witness) : 0));
27
30
  }
28
- exports.getInputByteLength = getInputByteLength;
29
31
  function getInputWeight(input) {
30
32
  return 3 * getInputByteLength(input, false) + getInputByteLength(input, true);
31
33
  }
32
- exports.getInputWeight = getInputWeight;
33
34
  function getInputComponentsWeight(c) {
34
35
  const scriptSize = c.script.reduce((a, b) => a + b, 0);
35
36
  return getInputWeight({
@@ -37,7 +38,6 @@ function getInputComponentsWeight(c) {
37
38
  witness: c.witness.map((v) => ({ length: v })),
38
39
  });
39
40
  }
40
- exports.getInputComponentsWeight = getInputComponentsWeight;
41
41
  const opSize = 1;
42
42
  const op0Size = opSize;
43
43
  const opPushSize = opSize;
@@ -46,7 +46,7 @@ const opCheckSigSize = opSize;
46
46
  const ecdsaSignatureSize = 72;
47
47
  const schnorrPubkeySize = 32;
48
48
  const schnorrSignatureNoSighashSize = 64;
49
- const p2msPubScriptSize = 105;
49
+ const p2msPubScriptSize = 105; // Note: This is valid for a compressed public key only
50
50
  const p2wshPubScriptSize = 34;
51
51
  const p2pkPubScriptSize = 35;
52
52
  function p2trScriptSpend(level) {
@@ -94,4 +94,4 @@ exports.inputComponentsP2shP2pk = {
94
94
  script: [opPushSize + ecdsaSignatureSize, opPushSize + p2pkPubScriptSize],
95
95
  witness: [],
96
96
  };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRXZWlnaHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lucHV0V2VpZ2h0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7OztBQUVILHNFQUFzQztBQUV0QyxTQUFnQixZQUFZLENBQUMsVUFBaUI7SUFDNUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUVqQyxPQUFPLHlCQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNqRCxDQUFDO0FBSkQsb0NBSUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxVQUFtQjtJQUNyQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBRWpDLE9BQU8sQ0FDTCx5QkFBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDOUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNqQyxPQUFPLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNOLENBQUM7QUFDSixDQUFDO0FBV0QsU0FBZ0Isa0JBQWtCLENBQUMsS0FBWSxFQUFFLFlBQXFCO0lBQ3BFLE9BQU8sQ0FDTCxFQUFFLENBQUMseUNBQXlDO1FBQzVDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0MsQ0FBQztBQUNKLENBQUM7QUFORCxnREFNQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxLQUFZO0lBQ3pDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENB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QUFDO0FBRVcsUUFBQSxvQ0FBb0MsR0FBb0I7SUFDbkUsTUFBTSxFQUFFLEVBQUU7SUFDVixPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztDQUM1QixDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FBb0I7SUFDdEQsTUFBTSxFQUFFLENBQUMsVUFBVSxHQUFHLGtCQUFrQixFQUFFLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztJQUN6RSxPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmluZXMgaW5wdXQgc2l6ZXMgZm9yIEJpdEdvIHNpZ25hdHVyZSBzY3JpcHRzLlxuICovXG5cbmltcG9ydCB2YXJ1aW50IGZyb20gJ3ZhcnVpbnQtYml0Y29pbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJTbGljZVNpemUoc29tZVNjcmlwdDogU2l6ZWQpOiBudW1iZXIge1xuICBjb25zdCBsZW5ndGggPSBzb21lU2NyaXB0Lmxlbmd0aDtcblxuICByZXR1cm4gdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgbGVuZ3RoO1xufVxuXG5mdW5jdGlvbiB2ZWN0b3JTaXplKHNvbWVWZWN0b3I6IFNpemVkW10pOiBudW1iZXIge1xuICBjb25zdCBsZW5ndGggPSBzb21lVmVjdG9yLmxlbmd0aDtcblxuICByZXR1cm4gKFxuICAgIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgobGVuZ3RoKSArXG4gICAgc29tZVZlY3Rvci5yZWR1Y2UoKHN1bSwgd2l0bmVzcykgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIHZhclNsaWNlU2l6ZSh3aXRuZXNzKTtcbiAgICB9LCAwKVxuICApO1xufVxuXG5leHBvcnQgdHlwZSBTaXplZCA9IHtcbiAgbGVuZ3RoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBJbnB1dCA9IHtcbiAgc2NyaXB0OiBTaXplZDtcbiAgd2l0bmVzczogU2l6ZWRbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dEJ5dGVMZW5ndGgoaW5wdXQ6IElucHV0LCBhbGxvd1dpdG5lc3M6IGJvb2xlYW4pOiBudW1iZXIge1xuICByZXR1cm4gKFxuICAgIDQwIC8qIGlucHV0SWQoMzIpLCBpbmRleCg0KSwgblNlcXVlbmNlKDQpICovICtcbiAgICB2YXJTbGljZVNpemUoaW5wdXQuc2NyaXB0KSArXG4gICAgKGFsbG93V2l0bmVzcyA/IHZlY3RvclNpemUoaW5wdXQud2l0bmVzcykgOiAwKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRXZWlnaHQoaW5wdXQ6IElucHV0KTogbnVtYmVyIHtcbiAgcmV0dXJuIDMgKiBnZXRJbnB1dEJ5dGVMZW5ndGgoaW5wdXQsIGZhbHNlKSArIGdldElucHV0Qnl0ZUxlbmd0aChpbnB1dCwgdHJ1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBudW1iZXJbXTtcbiAgd2l0bmVzczogbnVtYmVyW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRDb21wb25lbnRzV2VpZ2h0KGM6IElucHV0Q29tcG9uZW50cyk6IG51bWJlciB7XG4gIGNvbnN0IHNjcmlwdFNpemUgPSBjLnNjcmlwdC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcbiAgcmV0dXJuIGdldElucHV0V2VpZ2h0KHtcbiAgICBzY3JpcHQ6IHsgbGVuZ3RoOiBzY3JpcHRTaXplIH0sXG4gICAgd2l0bmVzczogYy53aXRuZXNzLm1hcCgodikgPT4gKHsgbGVuZ3RoOiB2IH0pKSxcbiAgfSk7XG59XG5cbmNvbnN0IG9wU2l6ZSA9IDE7XG5jb25zdCBvcDBTaXplID0gb3BTaXplO1xuY29uc3Qgb3BQdXNoU2l6ZSA9IG9wU2l6ZTtcbmNvbnN0IG9wQ2hlY2tTaWdWZXJpZnlTaXplID0gb3BTaXplO1xuY29uc3Qgb3BDaGVja1NpZ1NpemUgPSBvcFNpemU7XG5jb25zdCBlY2RzYVNpZ25hdHVyZVNpemUgPSA3MjtcbmNvbnN0IHNjaG5vcnJQdWJrZXlTaXplID0gMzI7XG5jb25zdCBzY2hub3JyU2lnbmF0dXJlTm9TaWdoYXNoU2l6ZSA9IDY0O1xuY29uc3QgcDJtc1B1YlNjcmlwdFNpemUgPSAxMDU7XG5jb25zdCBwMndzaFB1YlNjcmlwdFNpemUgPSAzNDtcbmNvbnN0IHAycGtQdWJTY3JpcHRTaXplID0gMzU7XG5cbmZ1bmN0aW9uIHAydHJTY3JpcHRTcGVuZChsZXZlbDogMSB8IDIpOiBudW1iZXJbXSB7XG4gIHJldHVybiBbXG4gICAgc2Nobm9yclNpZ25hdHVyZU5vU2lnaGFzaFNpemUsXG4gICAgc2Nobm9yclNpZ25hdHVyZU5vU2lnaGFzaFNpemUsXG4gICAgb3BQdXNoU2l6ZSArIHNjaG5vcnJQdWJrZXlTaXplICsgb3BDaGVja1NpZ1NpemUgKyBvcFB1c2hTaXplICsgc2Nobm9yclB1YmtleVNpemUgKyBvcENoZWNrU2lnVmVyaWZ5U2l6ZSxcbiAgICAvKiBoZWFkZXIgYnl0ZSAqLyAxICsgLyogaW5uZXIga2V5ICovIDMyICsgLyogaW5uZXIgbGVhZiAqLyAzMiAqIGxldmVsLFxuICBdO1xufVxuXG5mdW5jdGlvbiBwMm1zU2lnU2NyaXB0U2l6ZSh3aXRuZXNzOiBib29sZWFuKSB7XG4gIHJldHVybiBbXG4gICAgd2l0bmVzcyA/IDAgOiBvcDBTaXplLFxuICAgICh3aXRuZXNzID8gMCA6IG9wUHVzaFNpemUpICsgZWNkc2FTaWduYXR1cmVTaXplLFxuICAgICh3aXRuZXNzID8gMCA6IG9wUHVzaFNpemUpICsgZWNkc2FTaWduYXR1cmVTaXplLFxuICAgICh3aXRuZXNzID8gMCA6IC8qIE9QX1BVU0hEQVRBMiAqLyBvcFB1c2hTaXplICsgMSkgKyBwMm1zUHViU2NyaXB0U2l6ZSxcbiAgXTtcbn1cblxuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1Ayc2g6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBwMm1zU2lnU2NyaXB0U2l6ZShmYWxzZSksXG4gIHdpdG5lc3M6IFtdLFxufTtcblxuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1Ayc2hQMndzaDogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtvcFNpemUgKyBwMndzaFB1YlNjcmlwdFNpemVdLFxuICB3aXRuZXNzOiBwMm1zU2lnU2NyaXB0U2l6ZSh0cnVlKSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMndzaDogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtdLFxuICB3aXRuZXNzOiBwMm1zU2lnU2NyaXB0U2l6ZSh0cnVlKSxcbn07XG5cbi8vIFNlZTogaHR0cHM6Ly9tdXJjaGFuZGFtdXMubWVkaXVtLmNvbS8yLW9mLTMtbXVsdGlzaWctaW5wdXRzLXVzaW5nLXBheS10by10YXByb290LWQ1ZmFmMjMxMmJhM1xuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZDogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtdLFxuICB3aXRuZXNzOiBbc2Nobm9yclNpZ25hdHVyZU5vU2lnaGFzaFNpemVdLFxufTtcblxuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMTogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtdLFxuICB3aXRuZXNzOiBwMnRyU2NyaXB0U3BlbmQoMSksXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwyOiBJbnB1dENvbXBvbmVudHMgPSB7XG4gIHNjcmlwdDogW10sXG4gIHdpdG5lc3M6IHAydHJTY3JpcHRTcGVuZCgyKSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnNoUDJwazogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtvcFB1c2hTaXplICsgZWNkc2FTaWduYXR1cmVTaXplLCBvcFB1c2hTaXplICsgcDJwa1B1YlNjcmlwdFNpemVdLFxuICB3aXRuZXNzOiBbXSxcbn07XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRXZWlnaHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lucHV0V2VpZ2h0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7OztBQUlILG9DQUlDO0FBc0JELGdEQU1DO0FBRUQsd0NBRUM7QUFPRCw0REFNQztBQW5ERCxzRUFBc0M7QUFFdEMsU0FBZ0IsWUFBWSxDQUFDLFVBQWlCO0lBQzVDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyx5QkFBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLFVBQW1CO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyxDQUNMLHlCQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM5QixVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2pDLE9BQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ04sQ0FBQztBQUNKLENBQUM7QUFXRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsWUFBcUI7SUFDcEUsT0FBTyxDQUNMLEVBQUUsQ0FBQyx5Q0FBeUM7UUFDNUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDMUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxLQUFZO0lBQ3pDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxrQkFBa0IsQ0FB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QyxDQUFDO0NBQzVCLENBQUM7QUFFVyxRQUFBLG9DQUFvQyxHQUFvQjtJQUNuRSxNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0NBQzVCLENBQUM7QUFFVyxRQUFBLHVCQUF1QixHQUFvQjtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLEVBQUUsVUFBVSxHQUFHLGlCQUFpQixDQUFDO0lBQ3pFLE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmaW5lcyBpbnB1dCBzaXplcyBmb3IgQml0R28gc2lnbmF0dXJlIHNjcmlwdHMuXG4gKi9cblxuaW1wb3J0IHZhcnVpbnQgZnJvbSAndmFydWludC1iaXRjb2luJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhclNsaWNlU2l6ZShzb21lU2NyaXB0OiBTaXplZCk6IG51bWJlciB7XG4gIGNvbnN0IGxlbmd0aCA9IHNvbWVTY3JpcHQubGVuZ3RoO1xuXG4gIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGg7XG59XG5cbmZ1bmN0aW9uIHZlY3RvclNpemUoc29tZVZlY3RvcjogU2l6ZWRbXSk6IG51bWJlciB7XG4gIGNvbnN0IGxlbmd0aCA9IHNvbWVWZWN0b3IubGVuZ3RoO1xuXG4gIHJldHVybiAoXG4gICAgdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICtcbiAgICBzb21lVmVjdG9yLnJlZHVjZSgoc3VtLCB3aXRuZXNzKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgdmFyU2xpY2VTaXplKHdpdG5lc3MpO1xuICAgIH0sIDApXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIFNpemVkID0ge1xuICBsZW5ndGg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIElucHV0ID0ge1xuICBzY3JpcHQ6IFNpemVkO1xuICB3aXRuZXNzOiBTaXplZFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0Qnl0ZUxlbmd0aChpbnB1dDogSW5wdXQsIGFsbG93V2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIHJldHVybiAoXG4gICAgNDAgLyogaW5wdXRJZCgzMiksIGluZGV4KDQpLCBuU2VxdWVuY2UoNCkgKi8gK1xuICAgIHZhclNsaWNlU2l6ZShpbnB1dC5zY3JpcHQpICtcbiAgICAoYWxsb3dXaXRuZXNzID8gdmVjdG9yU2l6ZShpbnB1dC53aXRuZXNzKSA6IDApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dFdlaWdodChpbnB1dDogSW5wdXQpOiBudW1iZXIge1xuICByZXR1cm4gMyAqIGdldElucHV0Qnl0ZUxlbmd0aChpbnB1dCwgZmFsc2UpICsgZ2V0SW5wdXRCeXRlTGVuZ3RoKGlucHV0LCB0cnVlKTtcbn1cblxuZXhwb3J0IHR5cGUgSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IG51bWJlcltdO1xuICB3aXRuZXNzOiBudW1iZXJbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dENvbXBvbmVudHNXZWlnaHQoYzogSW5wdXRDb21wb25lbnRzKTogbnVtYmVyIHtcbiAgY29uc3Qgc2NyaXB0U2l6ZSA9IGMuc2NyaXB0LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuICByZXR1cm4gZ2V0SW5wdXRXZWlnaHQoe1xuICAgIHNjcmlwdDogeyBsZW5ndGg6IHNjcmlwdFNpemUgfSxcbiAgICB3aXRuZXNzOiBjLndpdG5lc3MubWFwKCh2KSA9PiAoeyBsZW5ndGg6IHYgfSkpLFxuICB9KTtcbn1cblxuY29uc3Qgb3BTaXplID0gMTtcbmNvbnN0IG9wMFNpemUgPSBvcFNpemU7XG5jb25zdCBvcFB1c2hTaXplID0gb3BTaXplO1xuY29uc3Qgb3BDaGVja1NpZ1ZlcmlmeVNpemUgPSBvcFNpemU7XG5jb25zdCBvcENoZWNrU2lnU2l6ZSA9IG9wU2l6ZTtcbmNvbnN0IGVjZHNhU2lnbmF0dXJlU2l6ZSA9IDcyO1xuY29uc3Qgc2Nobm9yclB1YmtleVNpemUgPSAzMjtcbmNvbnN0IHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplID0gNjQ7XG5jb25zdCBwMm1zUHViU2NyaXB0U2l6ZSA9IDEwNTsgLy8gTm90ZTogVGhpcyBpcyB2YWxpZCBmb3IgYSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgb25seVxuY29uc3QgcDJ3c2hQdWJTY3JpcHRTaXplID0gMzQ7XG5jb25zdCBwMnBrUHViU2NyaXB0U2l6ZSA9IDM1O1xuXG5mdW5jdGlvbiBwMnRyU2NyaXB0U3BlbmQobGV2ZWw6IDEgfCAyKTogbnVtYmVyW10ge1xuICByZXR1cm4gW1xuICAgIHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplLFxuICAgIHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplLFxuICAgIG9wUHVzaFNpemUgKyBzY2hub3JyUHVia2V5U2l6ZSArIG9wQ2hlY2tTaWdTaXplICsgb3BQdXNoU2l6ZSArIHNjaG5vcnJQdWJrZXlTaXplICsgb3BDaGVja1NpZ1ZlcmlmeVNpemUsXG4gICAgLyogaGVhZGVyIGJ5dGUgKi8gMSArIC8qIGlubmVyIGtleSAqLyAzMiArIC8qIGlubmVyIGxlYWYgKi8gMzIgKiBsZXZlbCxcbiAgXTtcbn1cblxuZnVuY3Rpb24gcDJtc1NpZ1NjcmlwdFNpemUod2l0bmVzczogYm9vbGVhbikge1xuICByZXR1cm4gW1xuICAgIHdpdG5lc3MgPyAwIDogb3AwU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiBvcFB1c2hTaXplKSArIGVjZHNhU2lnbmF0dXJlU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiBvcFB1c2hTaXplKSArIGVjZHNhU2lnbmF0dXJlU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiAvKiBPUF9QVVNIREFUQTIgKi8gb3BQdXNoU2l6ZSArIDEpICsgcDJtc1B1YlNjcmlwdFNpemUsXG4gIF07XG59XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnNoOiBJbnB1dENvbXBvbmVudHMgPSB7XG4gIHNjcmlwdDogcDJtc1NpZ1NjcmlwdFNpemUoZmFsc2UpLFxuICB3aXRuZXNzOiBbXSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2g6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbb3BTaXplICsgcDJ3c2hQdWJTY3JpcHRTaXplXSxcbiAgd2l0bmVzczogcDJtc1NpZ1NjcmlwdFNpemUodHJ1ZSksXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRDb21wb25lbnRzUDJ3c2g6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogcDJtc1NpZ1NjcmlwdFNpemUodHJ1ZSksXG59O1xuXG4vLyBTZWU6IGh0dHBzOi8vbXVyY2hhbmRhbXVzLm1lZGl1bS5jb20vMi1vZi0zLW11bHRpc2lnLWlucHV0cy11c2luZy1wYXktdG8tdGFwcm9vdC1kNWZhZjIzMTJiYTNcbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnRyS2V5U3BlbmQ6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogW3NjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplXSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDE6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogcDJ0clNjcmlwdFNwZW5kKDEpLFxufTtcblxuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMjogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtdLFxuICB3aXRuZXNzOiBwMnRyU2NyaXB0U3BlbmQoMiksXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRDb21wb25lbnRzUDJzaFAycGs6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbb3BQdXNoU2l6ZSArIGVjZHNhU2lnbmF0dXJlU2l6ZSwgb3BQdXNoU2l6ZSArIHAycGtQdWJTY3JpcHRTaXplXSxcbiAgd2l0bmVzczogW10sXG59O1xuIl19
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compactSize = exports.pushdataEncodingLength = void 0;
3
+ exports.pushdataEncodingLength = pushdataEncodingLength;
4
+ exports.compactSize = compactSize;
4
5
  const types_1 = require("./types");
5
6
  /**
6
7
  * Overhead size for a pushdata element in a script
@@ -25,7 +26,6 @@ function pushdataEncodingLength(i) {
25
26
  }
26
27
  throw new Error(`invalid pushdata size`);
27
28
  }
28
- exports.pushdataEncodingLength = pushdataEncodingLength;
29
29
  /**
30
30
  * https://developer.bitcoin.org/reference/transactions.html#compactsize-unsigned-integers
31
31
  * https://github.com/bitcoinjs/varuint-bitcoin/blob/1d5b253/index.js#L79
@@ -47,5 +47,4 @@ function compactSize(integer) {
47
47
  }
48
48
  return 9;
49
49
  }
50
- exports.compactSize = compactSize;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0U2l6ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0U2l6ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTBDO0FBRTFDOzs7R0FHRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLENBQVM7SUFDOUM7Ozs7OztPQU1HO0lBQ0gsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ1YsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtRQUNYLE9BQU8sQ0FBQyxDQUFDO0tBQ1Y7SUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUU7UUFDWCxPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFsQkQsd0RBa0JDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUMsT0FBZTtJQUN6QyxJQUFJLENBQUMsdUJBQWUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDaEMsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBQ2xEO0lBQ0QsSUFBSSxPQUFPLElBQUksR0FBRyxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDO0tBQ1Y7SUFDRCxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUU7UUFDckIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtRQUN6QixPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGl2ZUludGVnZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPdmVyaGVhZCBzaXplIGZvciBhIHB1c2hkYXRhIGVsZW1lbnQgaW4gYSBzY3JpcHRcbiAqIEBwYXJhbSBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoZGF0YUVuY29kaW5nTGVuZ3RoKGk6IG51bWJlcik6IG51bWJlciB7XG4gIC8qXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAwNjIubWVkaWF3aWtpI3B1c2gtb3BlcmF0b3JzXG4gICAqIFB1c2hpbmcgYW55IG90aGVyIGJ5dGUgc2VxdWVuY2UgdXAgdG8gNzUgYnl0ZXMgbXVzdCB1c2UgdGhlIG5vcm1hbCBkYXRhIHB1c2ggKG9wY29kZSBieXRlIG4sIHdpdGggbiB0aGUgbnVtYmVyIG9mIGJ5dGVzLCBmb2xsb3dlZCBuIGJ5dGVzIG9mIGRhdGEgYmVpbmcgcHVzaGVkKS5cbiAgICogUHVzaGluZyA3NiB0byAyNTUgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEExLlxuICAgKiBQdXNoaW5nIDI1NiB0byA1MjAgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEEyLlxuICAgKiBPUF9QVVNIREFUQTQgY2FuIG5ldmVyIGJlIHVzZWQsIGFzIHB1c2hlcyBvdmVyIDUyMCBieXRlcyBhcmUgbm90IGFsbG93ZWQsIGFuZCB0aG9zZSBiZWxvdyBjYW4gYmUgZG9uZSB1c2luZyBvdGhlciBvcGVyYXRvcnMuXG4gICAqL1xuICBpZiAoaSA8IDc2KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGkgPCAyNTUpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuICBpZiAoaSA8IDUyMCkge1xuICAgIHJldHVybiAzO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdXNoZGF0YSBzaXplYCk7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYml0Y29pbi5vcmcvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy5odG1sI2NvbXBhY3RzaXplLXVuc2lnbmVkLWludGVnZXJzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL3ZhcnVpbnQtYml0Y29pbi9ibG9iLzFkNWIyNTMvaW5kZXguanMjTDc5XG4gKiBAcGFyYW0gaW50ZWdlclxuICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBjb21wYWN0IHNpemUgdGhlIGludGVnZXIgcmVxdWlyZXMgd2hlbiBzZXJpYWxpemVkIGluIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3RTaXplKGludGVnZXI6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGludGVnZXIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgcG9zaXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDI1Mikge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZikge1xuICAgIHJldHVybiAzO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICByZXR1cm4gNTtcbiAgfVxuICByZXR1cm4gOTtcbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0U2l6ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0U2l6ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSx3REFrQkM7QUFRRCxrQ0FjQztBQTlDRCxtQ0FBMEM7QUFFMUM7OztHQUdHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsQ0FBUztJQUM5Qzs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLE9BQWU7SUFDekMsSUFBSSxDQUFDLHVCQUFlLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGl2ZUludGVnZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPdmVyaGVhZCBzaXplIGZvciBhIHB1c2hkYXRhIGVsZW1lbnQgaW4gYSBzY3JpcHRcbiAqIEBwYXJhbSBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoZGF0YUVuY29kaW5nTGVuZ3RoKGk6IG51bWJlcik6IG51bWJlciB7XG4gIC8qXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAwNjIubWVkaWF3aWtpI3B1c2gtb3BlcmF0b3JzXG4gICAqIFB1c2hpbmcgYW55IG90aGVyIGJ5dGUgc2VxdWVuY2UgdXAgdG8gNzUgYnl0ZXMgbXVzdCB1c2UgdGhlIG5vcm1hbCBkYXRhIHB1c2ggKG9wY29kZSBieXRlIG4sIHdpdGggbiB0aGUgbnVtYmVyIG9mIGJ5dGVzLCBmb2xsb3dlZCBuIGJ5dGVzIG9mIGRhdGEgYmVpbmcgcHVzaGVkKS5cbiAgICogUHVzaGluZyA3NiB0byAyNTUgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEExLlxuICAgKiBQdXNoaW5nIDI1NiB0byA1MjAgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEEyLlxuICAgKiBPUF9QVVNIREFUQTQgY2FuIG5ldmVyIGJlIHVzZWQsIGFzIHB1c2hlcyBvdmVyIDUyMCBieXRlcyBhcmUgbm90IGFsbG93ZWQsIGFuZCB0aG9zZSBiZWxvdyBjYW4gYmUgZG9uZSB1c2luZyBvdGhlciBvcGVyYXRvcnMuXG4gICAqL1xuICBpZiAoaSA8IDc2KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGkgPCAyNTUpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuICBpZiAoaSA8IDUyMCkge1xuICAgIHJldHVybiAzO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdXNoZGF0YSBzaXplYCk7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYml0Y29pbi5vcmcvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy5odG1sI2NvbXBhY3RzaXplLXVuc2lnbmVkLWludGVnZXJzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL3ZhcnVpbnQtYml0Y29pbi9ibG9iLzFkNWIyNTMvaW5kZXguanMjTDc5XG4gKiBAcGFyYW0gaW50ZWdlclxuICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBjb21wYWN0IHNpemUgdGhlIGludGVnZXIgcmVxdWlyZXMgd2hlbiBzZXJpYWxpemVkIGluIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3RTaXplKGludGVnZXI6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGludGVnZXIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgcG9zaXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDI1Mikge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZikge1xuICAgIHJldHVybiAzO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICByZXR1cm4gNTtcbiAgfVxuICByZXR1cm4gOTtcbn1cbiJdfQ==
package/dist/src/types.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.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
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,15 +15,25 @@ 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 (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
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.PositiveInteger = void 0;
23
37
  const t = __importStar(require("tcomb"));
24
38
  exports.PositiveInteger = t.refinement(t.Integer, (n) => n >= 0, 'PositiveInteger');
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUEyQjtBQUVkLFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICd0Y29tYic7XG5cbmV4cG9ydCBjb25zdCBQb3NpdGl2ZUludGVnZXIgPSB0LnJlZmluZW1lbnQodC5JbnRlZ2VyLCAobikgPT4gbiA+PSAwLCAnUG9zaXRpdmVJbnRlZ2VyJyk7XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBRWQsUUFBQSxlQUFlLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0IGZyb20gJ3Rjb21iJztcblxuZXhwb3J0IGNvbnN0IFBvc2l0aXZlSW50ZWdlciA9IHQucmVmaW5lbWVudCh0LkludGVnZXIsIChuKSA9PiBuID49IDAsICdQb3NpdGl2ZUludGVnZXInKTtcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  export declare const VirtualSizes: Readonly<{
2
2
  /** @deprecated */
3
- txP2pkhInputSizeCompressedKey: number;
3
+ txP2pkhInputSizeCompressedKey: 148;
4
4
  /** @deprecated */
5
- txP2pkhInputSizeUncompressedKey: number;
5
+ txP2pkhInputSizeUncompressedKey: 180;
6
6
  txP2shInputSize: number;
7
7
  txP2shP2wshInputSize: number;
8
8
  txP2wshInputSize: number;
@@ -10,16 +10,16 @@ export declare const VirtualSizes: Readonly<{
10
10
  txP2shP2pkInputSize: number;
11
11
  txP2trScriptPathLevel1InputSize: number;
12
12
  txP2trScriptPathLevel2InputSize: number;
13
- txOutputAmountSize: number;
14
- txP2shOutputSize: number;
15
- txP2shP2wshOutputSize: number;
16
- txP2wshOutputSize: number;
17
- txP2trOutputSize: number;
18
- txP2pkhOutputSize: number;
19
- txP2wpkhOutputSize: number;
13
+ txOutputAmountSize: 8;
14
+ txP2shOutputSize: 32;
15
+ txP2shP2wshOutputSize: 32;
16
+ txP2wshOutputSize: 43;
17
+ txP2trOutputSize: 43;
18
+ txP2pkhOutputSize: 34;
19
+ txP2wpkhOutputSize: 31;
20
20
  /** @deprecated - use txP2pkhOutputSize instead */
21
- txOutputSize: number;
22
- txOverheadSize: number;
23
- txSegOverheadVSize: number;
21
+ txOutputSize: 34;
22
+ txOverheadSize: 10;
23
+ txSegOverheadVSize: 11;
24
24
  }>;
25
25
  //# sourceMappingURL=virtualSizes.d.ts.map
@@ -57,7 +57,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
57
57
  exports.VirtualSizes = void 0;
58
58
  const inputWeights_1 = require("./inputWeights");
59
59
  function getVirtualInputSizeFromComponents(components) {
60
- return Math.ceil(inputWeights_1.getInputComponentsWeight(components) / 4);
60
+ return Math.ceil((0, inputWeights_1.getInputComponentsWeight)(components) / 4);
61
61
  }
62
62
  // Constants for signed TX input and output vsizes.
63
63
  // See https://bitcoincore.org/en/segwit_wallet_dev/#transaction-serialization for full description
@@ -111,4 +111,4 @@ exports.VirtualSizes = Object.freeze({
111
111
  // Thus, the vsize is only increased by one.
112
112
  txSegOverheadVSize: 11,
113
113
  });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbFNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZpcnR1YWxTaXplcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURFOzs7QUFFRixpREFVd0I7QUFFeEIsU0FBUyxpQ0FBaUMsQ0FBQyxVQUEyQjtJQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsdUNBQXdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxtR0FBbUc7QUFDbkcsMkNBQTJDO0FBQzlCLFFBQUEsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMscURBQXFEO0lBRXJELGdEQUFnRDtJQUNoRCxrQkFBa0I7SUFDbEIsNkJBQTZCLEVBQUUsR0FBRztJQUNsQyxrQkFBa0I7SUFDbEIsK0JBQStCLEVBQUUsR0FBRztJQUVwQyxjQUFjO0lBQ2QsZUFBZSxFQUFFLGlDQUFpQyxDQUFDLGtDQUFtQixDQUFDO0lBQ3ZFLG9CQUFvQixFQUFFLGlDQUFpQyxDQUFDLHVDQUF3QixDQUFDO0lBQ2pGLGdCQUFnQixFQUFFLGlDQUFpQyxDQUFDLG1DQUFvQixDQUFDO0lBQ3pFLHNCQUFzQixFQUFFLGlDQUFpQyxDQUFDLDBDQUEyQixDQUFDO0lBQ3RGLG1CQUFtQixFQUFFLGlDQUFpQyxDQUFDLHNDQUF1QixDQUFDO0lBQy9FLCtCQUErQixFQUFFLGlDQUFpQyxDQUFDLG1EQUFvQyxDQUFDO0lBQ3hHLCtCQUErQixFQUFFLGlDQUFpQyxDQUFDLG1EQUFvQyxDQUFDO0lBRXhHLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUVGLDRCQUE0QjtJQUM1QixFQUFFO0lBQ0YsbUVBQW1FO0lBQ25FLEVBQUU7SUFDRixnR0FBZ0c7SUFDaEcsRUFBRTtJQUNGLHNCQUFzQjtJQUN0QixFQUFFO0lBRUYsK0JBQStCO0lBQy9CLGtCQUFrQixFQUFFLENBQUM7SUFFckIsK0ZBQStGO0lBQy9GLGdCQUFnQixFQUFFLEVBQUU7SUFDcEIscUJBQXFCLEVBQUUsRUFBRTtJQUN6QixzR0FBc0c7SUFDdEcsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixzQ0FBc0M7SUFDdEMsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQiwrRkFBK0Y7SUFDL0YsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixzR0FBc0c7SUFDdEcsa0JBQWtCLEVBQUUsRUFBRTtJQUV0QixrREFBa0Q7SUFDbEQsWUFBWSxFQUFFLEVBQUU7SUFFaEIsRUFBRTtJQUNGLDRCQUE0QjtJQUM1QixFQUFFO0lBRUYsY0FBYyxFQUFFLEVBQUU7SUFDbEIsd0VBQXdFO0lBQ3hFLDRDQUE0QztJQUM1QyxrQkFBa0IsRUFBRSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5UaGlzIGlzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBjYWxjdWxhdGluZyB3ZWlnaHRzIGFuZCB2U2l6ZXMgZnJvbSBiaXRjb2luanMtbGliIDMuMy4yLlxuaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjMuMy4yL3NyYy90cmFuc2FjdGlvbi5qcyNMMTk0LUwyMTlcblxuYGBgXG4gIGZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoIChudW1iZXIpIHtcbiAgICBjaGVja1VJbnQ1MyhudW1iZXIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgbnVtYmVyIDwgMHhmZCA/IDFcbiAgICA6IG51bWJlciA8PSAweGZmZmYgPyAzXG4gICAgOiBudW1iZXIgPD0gMHhmZmZmZmZmZiA/IDVcbiAgICA6IDlcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiB2YXJTbGljZVNpemUgKHNvbWVTY3JpcHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gc29tZVNjcmlwdC5sZW5ndGhcblxuICAgIHJldHVybiBlbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgbGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiB2ZWN0b3JTaXplIChzb21lVmVjdG9yKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNvbWVWZWN0b3IubGVuZ3RoXG5cbiAgICByZXR1cm4gdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgc29tZVZlY3Rvci5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgd2l0bmVzcykge1xuICAgICAgcmV0dXJuIHN1bSArIHZhclNsaWNlU2l6ZSh3aXRuZXNzKVxuICAgIH0sIDApXG4gIH1cblxuICBUcmFuc2FjdGlvbi5wcm90b3R5cGUuX19ieXRlTGVuZ3RoID0gZnVuY3Rpb24gKF9fYWxsb3dXaXRuZXNzKSB7XG4gICAgdmFyIGhhc1dpdG5lc3NlcyA9IF9fYWxsb3dXaXRuZXNzICYmIHRoaXMuaGFzV2l0bmVzc2VzKClcblxuICAgIHJldHVybiAoXG4gICAgICAoaGFzV2l0bmVzc2VzID8gMTAgOiA4KSArXG4gICAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMuaW5zLmxlbmd0aCkgK1xuICAgICAgdmFydWludC5lbmNvZGluZ0xlbmd0aCh0aGlzLm91dHMubGVuZ3RoKSArXG4gICAgICB0aGlzLmlucy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgaW5wdXQpIHsgcmV0dXJuIHN1bSArIDQwICsgdmFyU2xpY2VTaXplKGlucHV0LnNjcmlwdCkgfSwgMCkgK1xuICAgICAgdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHsgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCkgfSwgMCkgK1xuICAgICAgKGhhc1dpdG5lc3NlcyA/IHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgdmVjdG9yU2l6ZShpbnB1dC53aXRuZXNzKSB9LCAwKSA6IDApXG4gICAgKVxuICB9XG5cbiAgVHJhbnNhY3Rpb24ucHJvdG90eXBlLndlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYmFzZSA9IHRoaXMuX19ieXRlTGVuZ3RoKGZhbHNlKVxuICAgIHZhciB0b3RhbCA9IHRoaXMuX19ieXRlTGVuZ3RoKHRydWUpXG4gICAgcmV0dXJuIGJhc2UgKiAzICsgdG90YWxcbiAgfVxuXG4gIFRyYW5zYWN0aW9uLnByb3RvdHlwZS52aXJ0dWFsU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMud2VpZ2h0KCkgLyA0KVxuICB9XG5gYGBcbiovXG5cbmltcG9ydCB7XG4gIGdldElucHV0Q29tcG9uZW50c1dlaWdodCxcbiAgSW5wdXRDb21wb25lbnRzLFxuICBpbnB1dENvbXBvbmVudHNQMnNoLFxuICBpbnB1dENvbXBvbmVudHNQMnNoUDJwayxcbiAgaW5wdXRDb21wb25lbnRzUDJzaFAyd3NoLFxuICBpbnB1dENvbXBvbmVudHNQMnRyS2V5U3BlbmQsXG4gIGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMSxcbiAgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwyLFxuICBpbnB1dENvbXBvbmVudHNQMndzaCxcbn0gZnJvbSAnLi9pbnB1dFdlaWdodHMnO1xuXG5mdW5jdGlvbiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoY29tcG9uZW50czogSW5wdXRDb21wb25lbnRzKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbChnZXRJbnB1dENvbXBvbmVudHNXZWlnaHQoY29tcG9uZW50cykgLyA0KTtcbn1cblxuLy8gQ29uc3RhbnRzIGZvciBzaWduZWQgVFggaW5wdXQgYW5kIG91dHB1dCB2c2l6ZXMuXG4vLyBTZWUgaHR0cHM6Ly9iaXRjb2luY29yZS5vcmcvZW4vc2Vnd2l0X3dhbGxldF9kZXYvI3RyYW5zYWN0aW9uLXNlcmlhbGl6YXRpb24gZm9yIGZ1bGwgZGVzY3JpcHRpb25cbi8vIEZJWE1FKEJHLTkyMzMpOiB1c2Ugd2VpZ2h0IHVuaXRzIGluc3RlYWRcbmV4cG9ydCBjb25zdCBWaXJ0dWFsU2l6ZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgLy8gRklYTUUoQkctNzg3Myk6IGFkZCBzdXBwb3J0IGZvciBzaWduYXR1cmUgZ3JpbmRpbmdcblxuICAvLyBTaXplIG9mIGEgUDJQS0ggaW5wdXQgd2l0aCAodW4pY29tcHJlc3NlZCBrZXlcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHR4UDJwa2hJbnB1dFNpemVDb21wcmVzc2VkS2V5OiAxNDgsXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICB0eFAycGtoSW5wdXRTaXplVW5jb21wcmVzc2VkS2V5OiAxODAsXG5cbiAgLy8gSW5wdXQgc2l6ZXNcbiAgdHhQMnNoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJzaCksXG4gIHR4UDJzaFAyd3NoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJzaFAyd3NoKSxcbiAgdHhQMndzaElucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1Ayd3NoKSxcbiAgdHhQMnRyS2V5cGF0aElucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZCksXG4gIHR4UDJzaFAycGtJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoUDJwayksXG4gIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDEpLFxuICB0eFAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwyKSxcblxuICAvL1xuICAvLyBPdXRwdXQgc2l6ZXNcbiAgLy9cblxuICAvLyBUaGUgc2l6ZSBpcyBjYWxjdWxhdGVkIGFzXG4gIC8vXG4gIC8vICAgIHNjcmlwdExlbmd0aCArIGNvbXBhY3RTaXplKHNjcmlwdExlbmd0aCkgKyB0eE91dHB1dEFtb3VudFNpemVcbiAgLy9cbiAgLy8gU2luY2UgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSBpcyAxIGZvciBhbGwgc2NyaXB0cyBjb25zaWRlcmVkIGhlcmUsIHdlIGNhbiBzaW1wbGlmeSB0aGlzIHRvXG4gIC8vXG4gIC8vICAgIHNjcmlwdExlbmd0aCArIDlcbiAgLy9cblxuICAvLyBTaXplIG9mIHNpbmdsZSBvdXRwdXQgYW1vdW50XG4gIHR4T3V0cHV0QW1vdW50U2l6ZTogOCxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy9zY3JpcHRoYXNoL291dHB1dC5qcyNMOVxuICB0eFAyc2hPdXRwdXRTaXplOiAzMixcbiAgdHhQMnNoUDJ3c2hPdXRwdXRTaXplOiAzMixcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvd2l0bmVzc3NjcmlwdGhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJ3c2hPdXRwdXRTaXplOiA0MyxcbiAgLy8gT1BfMSBPUF9QVVNIMzIgPHNjaG5vcnJfcHVibGljX2tleT5cbiAgdHhQMnRyT3V0cHV0U2l6ZTogNDMsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYml0Y29pbmpzLWxpYi9ibG9iL3Y0LjAuMi9zcmMvdGVtcGxhdGVzL3B1YmtleWhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJwa2hPdXRwdXRTaXplOiAzNCxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvd2l0bmVzc3B1YmtleWhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJ3cGtoT3V0cHV0U2l6ZTogMzEsXG5cbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHR4UDJwa2hPdXRwdXRTaXplIGluc3RlYWQgKi9cbiAgdHhPdXRwdXRTaXplOiAzNCxcblxuICAvL1xuICAvLyBHZW5lcmFsIHR4IHNpemUgY29uc3RhbnRzXG4gIC8vXG5cbiAgdHhPdmVyaGVhZFNpemU6IDEwLFxuICAvLyBTZWd3aXQgYWRkcyBvbmUgYnl0ZSBlYWNoIGZvciBtYXJrZXIgYW5kIGZsYWcgdG8gdGhlIHdpdG5lc3Mgc2VjdGlvbi5cbiAgLy8gVGh1cywgdGhlIHZzaXplIGlzIG9ubHkgaW5jcmVhc2VkIGJ5IG9uZS5cbiAgdHhTZWdPdmVyaGVhZFZTaXplOiAxMSxcbn0pO1xuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbFNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZpcnR1YWxTaXplcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURFOzs7QUFFRixpREFVd0I7QUFFeEIsU0FBUyxpQ0FBaUMsQ0FBQyxVQUEyQjtJQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSx1Q0FBd0IsRUFBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsbURBQW1EO0FBQ25ELG1HQUFtRztBQUNuRywyQ0FBMkM7QUFDOUIsUUFBQSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxxREFBcUQ7SUFFckQsZ0RBQWdEO0lBQ2hELGtCQUFrQjtJQUNsQiw2QkFBNkIsRUFBRSxHQUFHO0lBQ2xDLGtCQUFrQjtJQUNsQiwrQkFBK0IsRUFBRSxHQUFHO0lBRXBDLGNBQWM7SUFDZCxlQUFlLEVBQUUsaUNBQWlDLENBQUMsa0NBQW1CLENBQUM7SUFDdkUsb0JBQW9CLEVBQUUsaUNBQWlDLENBQUMsdUNBQXdCLENBQUM7SUFDakYsZ0JBQWdCLEVBQUUsaUNBQWlDLENBQUMsbUNBQW9CLENBQUM7SUFDekUsc0JBQXNCLEVBQUUsaUNBQWlDLENBQUMsMENBQTJCLENBQUM7SUFDdEYsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUMsc0NBQXVCLENBQUM7SUFDL0UsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFDeEcsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFFeEcsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBRUYsNEJBQTRCO0lBQzVCLEVBQUU7SUFDRixtRUFBbUU7SUFDbkUsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyxFQUFFO0lBQ0Ysc0JBQXNCO0lBQ3RCLEVBQUU7SUFFRiwrQkFBK0I7SUFDL0Isa0JBQWtCLEVBQUUsQ0FBQztJQUVyQiwrRkFBK0Y7SUFDL0YsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNHQUFzRztJQUN0RyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNDQUFzQztJQUN0QyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLCtGQUErRjtJQUMvRixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNHQUFzRztJQUN0RyxrQkFBa0IsRUFBRSxFQUFFO0lBRXRCLGtEQUFrRDtJQUNsRCxZQUFZLEVBQUUsRUFBRTtJQUVoQixFQUFFO0lBQ0YsNEJBQTRCO0lBQzVCLEVBQUU7SUFFRixjQUFjLEVBQUUsRUFBRTtJQUNsQix3RUFBd0U7SUFDeEUsNENBQTRDO0lBQzVDLGtCQUFrQixFQUFFLEVBQUU7Q0FDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcblRoaXMgaXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGNhbGN1bGF0aW5nIHdlaWdodHMgYW5kIHZTaXplcyBmcm9tIGJpdGNvaW5qcy1saWIgMy4zLjIuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92My4zLjIvc3JjL3RyYW5zYWN0aW9uLmpzI0wxOTQtTDIxOVxuXG5gYGBcbiAgZnVuY3Rpb24gZW5jb2RpbmdMZW5ndGggKG51bWJlcikge1xuICAgIGNoZWNrVUludDUzKG51bWJlcilcblxuICAgIHJldHVybiAoXG4gICAgICBudW1iZXIgPCAweGZkID8gMVxuICAgIDogbnVtYmVyIDw9IDB4ZmZmZiA/IDNcbiAgICA6IG51bWJlciA8PSAweGZmZmZmZmZmID8gNVxuICAgIDogOVxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhclNsaWNlU2l6ZSAoc29tZVNjcmlwdCkge1xuICAgIHZhciBsZW5ndGggPSBzb21lU2NyaXB0Lmxlbmd0aFxuXG4gICAgcmV0dXJuIGVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHZlY3RvclNpemUgKHNvbWVWZWN0b3IpIHtcbiAgICB2YXIgbGVuZ3RoID0gc29tZVZlY3Rvci5sZW5ndGhcblxuICAgIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBzb21lVmVjdG9yLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB3aXRuZXNzKSB7XG4gICAgICByZXR1cm4gc3VtICsgdmFyU2xpY2VTaXplKHdpdG5lc3MpXG4gICAgfSwgMClcbiAgfVxuXG4gIFRyYW5zYWN0aW9uLnByb3RvdHlwZS5fX2J5dGVMZW5ndGggPSBmdW5jdGlvbiAoX19hbGxvd1dpdG5lc3MpIHtcbiAgICB2YXIgaGFzV2l0bmVzc2VzID0gX19hbGxvd1dpdG5lc3MgJiYgdGhpcy5oYXNXaXRuZXNzZXMoKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChoYXNXaXRuZXNzZXMgPyAxMCA6IDgpICtcbiAgICAgIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgodGhpcy5pbnMubGVuZ3RoKSArXG4gICAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMub3V0cy5sZW5ndGgpICtcbiAgICAgIHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgNDAgKyB2YXJTbGljZVNpemUoaW5wdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkgeyByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICAoaGFzV2l0bmVzc2VzID8gdGhpcy5pbnMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIGlucHV0KSB7IHJldHVybiBzdW0gKyB2ZWN0b3JTaXplKGlucHV0LndpdG5lc3MpIH0sIDApIDogMClcbiAgICApXG4gIH1cblxuICBUcmFuc2FjdGlvbi5wcm90b3R5cGUud2VpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBiYXNlID0gdGhpcy5fX2J5dGVMZW5ndGgoZmFsc2UpXG4gICAgdmFyIHRvdGFsID0gdGhpcy5fX2J5dGVMZW5ndGgodHJ1ZSlcbiAgICByZXR1cm4gYmFzZSAqIDMgKyB0b3RhbFxuICB9XG5cbiAgVHJhbnNhY3Rpb24ucHJvdG90eXBlLnZpcnR1YWxTaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy53ZWlnaHQoKSAvIDQpXG4gIH1cbmBgYFxuKi9cblxuaW1wb3J0IHtcbiAgZ2V0SW5wdXRDb21wb25lbnRzV2VpZ2h0LFxuICBJbnB1dENvbXBvbmVudHMsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2gsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrLFxuICBpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gsXG4gIGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZCxcbiAgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwxLFxuICBpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIsXG4gIGlucHV0Q29tcG9uZW50c1Ayd3NoLFxufSBmcm9tICcuL2lucHV0V2VpZ2h0cyc7XG5cbmZ1bmN0aW9uIGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhjb21wb25lbnRzOiBJbnB1dENvbXBvbmVudHMpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5jZWlsKGdldElucHV0Q29tcG9uZW50c1dlaWdodChjb21wb25lbnRzKSAvIDQpO1xufVxuXG4vLyBDb25zdGFudHMgZm9yIHNpZ25lZCBUWCBpbnB1dCBhbmQgb3V0cHV0IHZzaXplcy5cbi8vIFNlZSBodHRwczovL2JpdGNvaW5jb3JlLm9yZy9lbi9zZWd3aXRfd2FsbGV0X2Rldi8jdHJhbnNhY3Rpb24tc2VyaWFsaXphdGlvbiBmb3IgZnVsbCBkZXNjcmlwdGlvblxuLy8gRklYTUUoQkctOTIzMyk6IHVzZSB3ZWlnaHQgdW5pdHMgaW5zdGVhZFxuZXhwb3J0IGNvbnN0IFZpcnR1YWxTaXplcyA9IE9iamVjdC5mcmVlemUoe1xuICAvLyBGSVhNRShCRy03ODczKTogYWRkIHN1cHBvcnQgZm9yIHNpZ25hdHVyZSBncmluZGluZ1xuXG4gIC8vIFNpemUgb2YgYSBQMlBLSCBpbnB1dCB3aXRoICh1biljb21wcmVzc2VkIGtleVxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgdHhQMnBraElucHV0U2l6ZUNvbXByZXNzZWRLZXk6IDE0OCxcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHR4UDJwa2hJbnB1dFNpemVVbmNvbXByZXNzZWRLZXk6IDE4MCxcblxuICAvLyBJbnB1dCBzaXplc1xuICB0eFAyc2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoKSxcbiAgdHhQMnNoUDJ3c2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gpLFxuICB0eFAyd3NoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ3c2gpLFxuICB0eFAydHJLZXlwYXRoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ0cktleVNwZW5kKSxcbiAgdHhQMnNoUDJwa0lucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrKSxcbiAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMSksXG4gIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIpLFxuXG4gIC8vXG4gIC8vIE91dHB1dCBzaXplc1xuICAvL1xuXG4gIC8vIFRoZSBzaXplIGlzIGNhbGN1bGF0ZWQgYXNcbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSArIHR4T3V0cHV0QW1vdW50U2l6ZVxuICAvL1xuICAvLyBTaW5jZSBjb21wYWN0U2l6ZShzY3JpcHRMZW5ndGgpIGlzIDEgZm9yIGFsbCBzY3JpcHRzIGNvbnNpZGVyZWQgaGVyZSwgd2UgY2FuIHNpbXBsaWZ5IHRoaXMgdG9cbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgOVxuICAvL1xuXG4gIC8vIFNpemUgb2Ygc2luZ2xlIG91dHB1dCBhbW91bnRcbiAgdHhPdXRwdXRBbW91bnRTaXplOiA4LFxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYml0Y29pbmpzLWxpYi9ibG9iL3Y0LjAuMi9zcmMvdGVtcGxhdGVzL3NjcmlwdGhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJzaE91dHB1dFNpemU6IDMyLFxuICB0eFAyc2hQMndzaE91dHB1dFNpemU6IDMyLFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzc2NyaXB0aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndzaE91dHB1dFNpemU6IDQzLFxuICAvLyBPUF8xIE9QX1BVU0gzMiA8c2Nobm9ycl9wdWJsaWNfa2V5PlxuICB0eFAydHJPdXRwdXRTaXplOiA0MyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMnBraE91dHB1dFNpemU6IDM0LFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndwa2hPdXRwdXRTaXplOiAzMSxcblxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdHhQMnBraE91dHB1dFNpemUgaW5zdGVhZCAqL1xuICB0eE91dHB1dFNpemU6IDM0LFxuXG4gIC8vXG4gIC8vIEdlbmVyYWwgdHggc2l6ZSBjb25zdGFudHNcbiAgLy9cblxuICB0eE92ZXJoZWFkU2l6ZTogMTAsXG4gIC8vIFNlZ3dpdCBhZGRzIG9uZSBieXRlIGVhY2ggZm9yIG1hcmtlciBhbmQgZmxhZyB0byB0aGUgd2l0bmVzcyBzZWN0aW9uLlxuICAvLyBUaHVzLCB0aGUgdnNpemUgaXMgb25seSBpbmNyZWFzZWQgYnkgb25lLlxuICB0eFNlZ092ZXJoZWFkVlNpemU6IDExLFxufSk7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { Dimensions } from './dimensions';
2
+ export declare function getLogicalActions(params: {
3
+ txInTotalSize: number;
4
+ txOutTotalSize: number;
5
+ } | Dimensions): number;
6
+ export declare function getConventionalFeeForDimensions(dimensions: Dimensions, params?: {
7
+ marginalFeeZatPerAction?: number;
8
+ }): number;
9
+ //# sourceMappingURL=zcash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zcash.d.ts","sourceRoot":"","sources":["../../src/zcash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO1C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,MAAM,CAUhH;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE;IACN,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACL,MAAM,CAIR"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // https://zips.z.cash/zip-0317
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getLogicalActions = getLogicalActions;
5
+ exports.getConventionalFeeForDimensions = getConventionalFeeForDimensions;
6
+ const dimensions_1 = require("./dimensions");
7
+ const marginalFeeZatPerAction = 5000;
8
+ const graceActions = 2;
9
+ const p2pkhStandardInputSize = 150;
10
+ const p2pkhStandardOutputSize = 34;
11
+ function getLogicalActions(params) {
12
+ if (params instanceof dimensions_1.Dimensions) {
13
+ return getLogicalActions({ txInTotalSize: params.getInputsVSize(), txOutTotalSize: params.getOutputsVSize() });
14
+ }
15
+ // The ZIP includes nJoinSplits, nSpendsSapling, nOutputsSapling, nActionsOrchard
16
+ // which are not relevant for BitGo transactions.
17
+ return Math.max(Math.ceil(params.txInTotalSize / p2pkhStandardInputSize), Math.ceil(params.txOutTotalSize / p2pkhStandardOutputSize));
18
+ }
19
+ function getConventionalFeeForDimensions(dimensions, params = {}) {
20
+ return (Math.max(getLogicalActions(dimensions), graceActions) * (params.marginalFeeZatPerAction ?? marginalFeeZatPerAction));
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNhc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvemNhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7QUFTL0IsOENBVUM7QUFFRCwwRUFTQztBQTVCRCw2Q0FBMEM7QUFFMUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBRW5DLFNBQWdCLGlCQUFpQixDQUFDLE1BQXNFO0lBQ3RHLElBQUksTUFBTSxZQUFZLHVCQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGlCQUFpQixDQUFDLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBQ0QsaUZBQWlGO0lBQ2pGLGlEQUFpRDtJQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLHNCQUFzQixDQUFDLEVBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUMzRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUM3QyxVQUFzQixFQUN0QixTQUVJLEVBQUU7SUFFTixPQUFPLENBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxDQUNwSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAzMTdcblxuaW1wb3J0IHsgRGltZW5zaW9ucyB9IGZyb20gJy4vZGltZW5zaW9ucyc7XG5cbmNvbnN0IG1hcmdpbmFsRmVlWmF0UGVyQWN0aW9uID0gNTAwMDtcbmNvbnN0IGdyYWNlQWN0aW9ucyA9IDI7XG5jb25zdCBwMnBraFN0YW5kYXJkSW5wdXRTaXplID0gMTUwO1xuY29uc3QgcDJwa2hTdGFuZGFyZE91dHB1dFNpemUgPSAzNDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2ljYWxBY3Rpb25zKHBhcmFtczogeyB0eEluVG90YWxTaXplOiBudW1iZXI7IHR4T3V0VG90YWxTaXplOiBudW1iZXIgfSB8IERpbWVuc2lvbnMpOiBudW1iZXIge1xuICBpZiAocGFyYW1zIGluc3RhbmNlb2YgRGltZW5zaW9ucykge1xuICAgIHJldHVybiBnZXRMb2dpY2FsQWN0aW9ucyh7IHR4SW5Ub3RhbFNpemU6IHBhcmFtcy5nZXRJbnB1dHNWU2l6ZSgpLCB0eE91dFRvdGFsU2l6ZTogcGFyYW1zLmdldE91dHB1dHNWU2l6ZSgpIH0pO1xuICB9XG4gIC8vIFRoZSBaSVAgaW5jbHVkZXMgbkpvaW5TcGxpdHMsIG5TcGVuZHNTYXBsaW5nLCBuT3V0cHV0c1NhcGxpbmcsIG5BY3Rpb25zT3JjaGFyZFxuICAvLyB3aGljaCBhcmUgbm90IHJlbGV2YW50IGZvciBCaXRHbyB0cmFuc2FjdGlvbnMuXG4gIHJldHVybiBNYXRoLm1heChcbiAgICBNYXRoLmNlaWwocGFyYW1zLnR4SW5Ub3RhbFNpemUgLyBwMnBraFN0YW5kYXJkSW5wdXRTaXplKSxcbiAgICBNYXRoLmNlaWwocGFyYW1zLnR4T3V0VG90YWxTaXplIC8gcDJwa2hTdGFuZGFyZE91dHB1dFNpemUpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb252ZW50aW9uYWxGZWVGb3JEaW1lbnNpb25zKFxuICBkaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICBwYXJhbXM6IHtcbiAgICBtYXJnaW5hbEZlZVphdFBlckFjdGlvbj86IG51bWJlcjtcbiAgfSA9IHt9XG4pOiBudW1iZXIge1xuICByZXR1cm4gKFxuICAgIE1hdGgubWF4KGdldExvZ2ljYWxBY3Rpb25zKGRpbWVuc2lvbnMpLCBncmFjZUFjdGlvbnMpICogKHBhcmFtcy5tYXJnaW5hbEZlZVphdFBlckFjdGlvbiA/PyBtYXJnaW5hbEZlZVphdFBlckFjdGlvbilcbiAgKTtcbn1cbiJdfQ==
@@ -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.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
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 (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
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
  /* eslint-disable @typescript-eslint/ban-ts-comment */
23
37
  const should = __importStar(require("should"));
@@ -136,8 +150,8 @@ describe('Dimensions from unspent types', function () {
136
150
  chainCodesP2shP2wsh.forEach((chain) => src_1.Dimensions.fromUnspent({ chain }).should.eql(src_1.Dimensions.sum({ nP2shP2wshInputs: 1 })));
137
151
  chainCodesP2wsh.forEach((chain) => src_1.Dimensions.fromUnspent({ chain }).should.eql(src_1.Dimensions.sum({ nP2wshInputs: 1 })));
138
152
  chainCodesP2tr.forEach((chain) => {
139
- src_1.Dimensions.fromUnspent({ chain }).should.eql(src_1.Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }));
140
- src_1.Dimensions.fromUnspent({ chain }, { p2tr: { scriptPathLevel: 2 }, p2trMusig2: { scriptPathLevel: undefined } }).should.eql(src_1.Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }));
153
+ src_1.Dimensions.fromUnspent({ chain }).should.eql(src_1.Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }));
154
+ src_1.Dimensions.fromUnspent({ chain }, { p2tr: { scriptPathLevel: 1 }, p2trMusig2: { scriptPathLevel: undefined } }).should.eql(src_1.Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }));
141
155
  });
142
156
  chainCodesP2trMusig2.forEach((chain) => {
143
157
  src_1.Dimensions.fromUnspent({ chain }).should.eql(src_1.Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }));
@@ -148,7 +162,17 @@ describe('Dimensions from unspent types', function () {
148
162
  nP2shInputs: 2,
149
163
  nP2wshInputs: 2,
150
164
  nP2trKeypathInputs: 0,
151
- nP2trScriptPathLevel1Inputs: 4,
165
+ nP2trScriptPathLevel1Inputs: 2,
166
+ nP2trScriptPathLevel2Inputs: 2,
167
+ nP2shP2pkInputs: 0,
168
+ outputs: { count: 0, size: 0 },
169
+ }));
170
+ src_1.Dimensions.fromUnspents(chainCodes.map((chain) => ({ chain })), { p2tr: { scriptPathLevel: 1 }, p2trMusig2: { scriptPathLevel: undefined } }).should.eql(new src_1.Dimensions({
171
+ nP2shP2wshInputs: 2,
172
+ nP2shInputs: 2,
173
+ nP2wshInputs: 2,
174
+ nP2trKeypathInputs: 2,
175
+ nP2trScriptPathLevel1Inputs: 2,
152
176
  nP2trScriptPathLevel2Inputs: 0,
153
177
  nP2shP2pkInputs: 0,
154
178
  outputs: { count: 0, size: 0 },
@@ -165,7 +189,7 @@ describe('Dimensions from unspent types', function () {
165
189
  [testutils_1.UnspentTypePubKeyHash.p2pkh, src_1.VirtualSizes.txP2pkhOutputSize],
166
190
  [testutils_1.UnspentTypePubKeyHash.p2wpkh, src_1.VirtualSizes.txP2wpkhOutputSize],
167
191
  ]);
168
- [...Object.keys(testutils_1.UnspentTypeScript2of3), ...Object.keys(testutils_1.UnspentTypePubKeyHash)].forEach((type) => testutils_1.getOutputDimensionsForUnspentType(type).outputs.size.should.eql(expectedSizes.get(type)));
192
+ [...Object.keys(testutils_1.UnspentTypeScript2of3), ...Object.keys(testutils_1.UnspentTypePubKeyHash)].forEach((type) => (0, testutils_1.getOutputDimensionsForUnspentType)(type).outputs.size.should.eql(expectedSizes.get(type)));
169
193
  });
170
194
  });
171
195
  describe('Dimensions estimates', function () {
@@ -175,14 +199,14 @@ describe('Dimensions estimates', function () {
175
199
  nP2shInputs,
176
200
  nP2shP2wshInputs,
177
201
  nP2wshInputs,
178
- }, testutils_1.getOutputDimensionsForUnspentType(testutils_1.UnspentTypePubKeyHash.p2pkh).times(nOutputs));
202
+ }, (0, testutils_1.getOutputDimensionsForUnspentType)(testutils_1.UnspentTypePubKeyHash.p2pkh).times(nOutputs));
179
203
  }
180
204
  function dimP2tr(nP2trKeypathInputs, nP2trScriptPathLevel1Inputs, nP2trScriptPathLevel2Inputs, nOutputs) {
181
205
  return src_1.Dimensions.sum({
182
206
  nP2trKeypathInputs,
183
207
  nP2trScriptPathLevel1Inputs,
184
208
  nP2trScriptPathLevel2Inputs,
185
- }, testutils_1.getOutputDimensionsForUnspentType(testutils_1.UnspentTypePubKeyHash.p2pkh).times(nOutputs));
209
+ }, (0, testutils_1.getOutputDimensionsForUnspentType)(testutils_1.UnspentTypePubKeyHash.p2pkh).times(nOutputs));
186
210
  }
187
211
  const vectors = [
188
212
  [dim(1, 0, 0, 1), [false, 10, 298, 34, 342]],
@@ -208,4 +232,4 @@ describe('Dimensions estimates', function () {
208
232
  });
209
233
  });
210
234
  });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvZGltZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsK0NBQWlDO0FBQ2pDLG1EQUE2QztBQUM3QyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLEdBQzlHLGdCQUFLLENBQUM7QUFDUixnQ0FBb0U7QUFFcEUsMkNBQThHO0FBRTlHLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtJQUNoQyxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFFLGdCQUFVLENBQUMsSUFBWSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUUsZ0JBQVUsQ0FBQyxJQUFZLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFDLGNBQWMsRUFBRTtRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLHNCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsdUJBQXVC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LEdBQUcsQ0FBQyxDQUFDO1lBQzVDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRTNDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hELENBQUM7UUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN0QztnQkFDRSxVQUFVLENBQUMsUUFBUSxFQUFFO2dCQUNyQixVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzdCLFVBQVUsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNCLFVBQVUsQ0FBQyxlQUFlLEVBQUU7Z0JBQzVCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7YUFDdEIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBiaXRnbyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmNvbnN0IHsgY2hhaW5Db2RlcywgY2hhaW5Db2Rlc1Ayc2gsIGNoYWluQ29kZXNQMnNoUDJ3c2gsIGNoYWluQ29kZXNQMnRyLCBjaGFpbkNvZGVzUDJ0ck11c2lnMiwgY2hhaW5Db2Rlc1Ayd3NoIH0gPVxuICBiaXRnbztcbmltcG9ydCB7IERpbWVuc2lvbnMsIE91dHB1dERpbWVuc2lvbnMsIFZpcnR1YWxTaXplcyB9IGZyb20gJy4uL3NyYyc7XG5cbmltcG9ydCB7IGdldE91dHB1dERpbWVuc2lvbnNGb3JVbnNwZW50VHlwZSwgVW5zcGVudFR5cGVQdWJLZXlIYXNoLCBVbnNwZW50VHlwZVNjcmlwdDJvZjMgfSBmcm9tICcuL3Rlc3R1dGlscyc7XG5cbmRlc2NyaWJlKCdEaW1lbnNpb25zIEF0dHJpYnV0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdoYXMgcmVhZC1vbmx5IG5JbnB1dHMgYW5kIG5PdXRwdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gKChEaW1lbnNpb25zLlpFUk8gYXMgYW55KS5uSW5wdXRzID0gMSksIC9yZWFkLW9ubHkvKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+ICgoRGltZW5zaW9ucy5aRVJPIGFzIGFueSkubk91dHB1dHMgPSAxKSwgL3JlYWQtb25seS8pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnT3V0cHV0IERpbWVuc2lvbnMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdpbnN0YW50aWF0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGltcyA9IG5ldyBPdXRwdXREaW1lbnNpb25zKHsgc2l6ZTogMCwgY291bnQ6IDAgfSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiAoZGltcy5jb3VudCArPSAxKSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEaW1lbnNpb25zIEFyaXRobWV0aWMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzdW1zIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICBEaW1lbnNpb25zLnplcm8oKVxuICAgICAgLnBsdXMoeyBuUDJzaElucHV0czogMSB9KVxuICAgICAgLnNob3VsZC5lcWwoXG4gICAgICAgIG5ldyBEaW1lbnNpb25zKHtcbiAgICAgICAgICBuUDJzaElucHV0czogMSxcbiAgICAgICAgICBuUDJzaFAyd3NoSW5wdXRzOiAwLFxuICAgICAgICAgIG5QMndzaElucHV0czogMCxcbiAgICAgICAgICBuUDJ0cktleXBhdGhJbnB1dHM6IDAsXG4gICAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiAwLFxuICAgICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogMCxcbiAgICAgICAgICBuUDJzaFAycGtJbnB1dHM6IDAsXG4gICAgICAgICAgb3V0cHV0czogeyBzaXplOiAwLCBjb3VudDogMCB9LFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXG4gICAgICB7IG5QMnNoSW5wdXRzOiAxIH0sXG4gICAgICB7IG5QMnNoUDJ3c2hJbnB1dHM6IDIgfSxcbiAgICAgIHsgblAyd3NoSW5wdXRzOiAzIH0sXG4gICAgICB7IG5QMnRyS2V5cGF0aElucHV0czogNCB9LFxuICAgICAgeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDUgfSxcbiAgICAgIHsgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiA2IH0sXG4gICAgICB7IG91dHB1dHM6IHsgc2l6ZTogMjMsIGNvdW50OiAxIH0gfSxcbiAgICAgIHsgb3V0cHV0czogeyBzaXplOiA0NCwgY291bnQ6IDIgfSB9LFxuICAgICAgeyBvdXRwdXRzOiB7IHNpemU6IDAsIGNvdW50OiAwIH0gfSxcbiAgICBdO1xuXG4gICAgY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gRGltZW5zaW9ucy5zdW0oY29tcG9uZW50KSkpO1xuXG4gICAgY29uc3Qgc3VtID0gY29tcG9uZW50cy5yZWR1Y2UoKGEsIGIpID0+IGEucGx1cyhiKSwgRGltZW5zaW9ucy56ZXJvKCkpO1xuXG4gICAgc3VtLnNob3VsZC5lcWwoRGltZW5zaW9ucy5zdW0oLi4uY29tcG9uZW50cykpO1xuXG4gICAgc3VtLnNob3VsZC5lcWwoXG4gICAgICBuZXcgRGltZW5zaW9ucyh7XG4gICAgICAgIG5QMnNoSW5wdXRzOiAxLFxuICAgICAgICBuUDJzaFAyd3NoSW5wdXRzOiAyLFxuICAgICAgICBuUDJ3c2hJbnB1dHM6IDMsXG4gICAgICAgIG5QMnRyS2V5cGF0aElucHV0czogNCxcbiAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiA1LFxuICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IDYsXG4gICAgICAgIG5QMnNoUDJwa0lucHV0czogMCxcbiAgICAgICAgb3V0cHV0czogeyBzaXplOiA2NywgY291bnQ6IDMgfSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHN1bS5uT3V0cHV0cy5zaG91bGQuZXFsKHN1bS5vdXRwdXRzLmNvdW50KTtcbiAgfSk7XG5cbiAgaXQoJ3Byb3ZpZGVzIHNvbWUgdHlwaWNhbCBvdXRwdXQgc2l6ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgKFxuICAgICAgW1xuICAgICAgICBbRGltZW5zaW9ucy5TaW5nbGVPdXRwdXQucDJzaCwgVmlydHVhbFNpemVzLnR4UDJzaE91dHB1dFNpemVdLFxuICAgICAgICBbRGltZW5zaW9ucy5TaW5nbGVPdXRwdXQucDJzaFAyd3NoLCBWaXJ0dWFsU2l6ZXMudHhQMnNoUDJ3c2hPdXRwdXRTaXplXSxcbiAgICAgICAgW0RpbWVuc2lvbnMuU2luZ2xlT3V0cHV0LnAyd3NoLCBWaXJ0dWFsU2l6ZXMudHhQMndzaE91dHB1dFNpemVdLFxuICAgICAgICBbRGltZW5zaW9ucy5TaW5nbGVPdXRwdXQucDJwa2gsIFZpcnR1YWxTaXplcy50eFAycGtoT3V0cHV0U2l6ZV0sXG4gICAgICAgIFtEaW1lbnNpb25zLlNpbmdsZU91dHB1dC5wMndwa2gsIFZpcnR1YWxTaXplcy50eFAyd3BraE91dHB1dFNpemVdLFxuICAgICAgICBbRGltZW5zaW9ucy5TaW5nbGVPdXRwdXQucDJ0ciwgVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemVdLFxuICAgICAgXSBhcyBbRGltZW5zaW9ucywgbnVtYmVyXVtdXG4gICAgKS5mb3JFYWNoKChbZGltcywgc2l6ZV0pID0+IHtcbiAgICAgIGRpbXMuZ2V0T3V0cHV0c1ZTaXplKCkuc2hvdWxkLmVxbChzaXplKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXZlbnRzIHN1bSBvZiBpbnZhbGlkIGRhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDAsIHNpemU6IDAgfSB9KSk7XG4gICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemU6IDEgfSB9KSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG5PdXRwdXRzOiAxIH0pKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IERpbWVuc2lvbnMuc3VtKHsgbk91dHB1dHM6IDEsIG91dHB1dHM6IHsgY291bnQ6IDIsIHNpemU6IDEgfSB9KSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gRGltZW5zaW9ucy5zdW0oeyBuUDJzaElucHV0czogMSB9LCB7IG5QMnNoSW5wdXRzOiAnZm9vJyB9KSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemU6IDAgfSB9KSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDAsIHNpemU6IDEgfSB9KSk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemU6IDEgfSB9LCB7IG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemU6IDAgfSB9KSk7XG4gIH0pO1xuXG4gIGl0KCdjb3VudHMgaW5wdXRzIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3QuZW50cmllcyhEaW1lbnNpb25zLlNpbmdsZUlucHV0KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHZhbHVlLm5JbnB1dHMuc2hvdWxkLmVxbCgxLCBrZXkpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnbXVsdGlwbGllcyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBEaW1lbnNpb25zKHtcbiAgICAgIG5QMnNoSW5wdXRzOiAxLFxuICAgICAgblAyc2hQMndzaElucHV0czogMixcbiAgICAgIG5QMndzaElucHV0czogMyxcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0czogNCxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogNSxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogNixcbiAgICAgIG5QMnNoUDJwa0lucHV0czogNyxcbiAgICAgIG91dHB1dHM6IHsgY291bnQ6IDEsIHNpemU6IDIyIH0sXG4gICAgfSkudGltZXMoMyk7XG5cbiAgICBkLnNob3VsZC5lcWwoXG4gICAgICBuZXcgRGltZW5zaW9ucyh7XG4gICAgICAgIG5QMnNoSW5wdXRzOiAzLFxuICAgICAgICBuUDJzaFAyd3NoSW5wdXRzOiA2LFxuICAgICAgICBuUDJ3c2hJbnB1dHM6IDksXG4gICAgICAgIG5QMnRyS2V5cGF0aElucHV0czogMTIsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMTUsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogMTgsXG4gICAgICAgIG5QMnNoUDJwa0lucHV0czogMjEsXG4gICAgICAgIG91dHB1dHM6IHsgY291bnQ6IDMsIHNpemU6IDY2IH0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBkLmdldE5JbnB1dHMoKS5zaG91bGQuZXFsKDg0KTtcbiAgICBkLm5JbnB1dHMuc2hvdWxkLmVxbCg4NCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEaW1lbnNpb25zIGZyb20gdW5zcGVudCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2RldGVybWluZXMgdW5zcGVudCBzaXplIGFjY29yZGluZyB0byBjaGFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjaGFpbkNvZGVzUDJzaC5mb3JFYWNoKChjaGFpbikgPT4gRGltZW5zaW9ucy5mcm9tVW5zcGVudCh7IGNoYWluIH0pLnNob3VsZC5lcWwoRGltZW5zaW9ucy5zdW0oeyBuUDJzaElucHV0czogMSB9KSkpO1xuXG4gICAgY2hhaW5Db2Rlc1Ayc2hQMndzaC5mb3JFYWNoKChjaGFpbikgPT5cbiAgICAgIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoeyBjaGFpbiB9KS5zaG91bGQuZXFsKERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMndzaElucHV0czogMSB9KSlcbiAgICApO1xuXG4gICAgY2hhaW5Db2Rlc1Ayd3NoLmZvckVhY2goKGNoYWluKSA9PlxuICAgICAgRGltZW5zaW9ucy5mcm9tVW5zcGVudCh7IGNoYWluIH0pLnNob3VsZC5lcWwoRGltZW5zaW9ucy5zdW0oeyBuUDJ3c2hJbnB1dHM6IDEgfSkpXG4gICAgKTtcblxuICAgIGNoYWluQ29kZXNQMnRyLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50KHsgY2hhaW4gfSkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMSB9KSk7XG4gICAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50KFxuICAgICAgICB7IGNoYWluIH0sXG4gICAgICAgIHsgcDJ0cjogeyBzY3JpcHRQYXRoTGV2ZWw6IDIgfSwgcDJ0ck11c2lnMjogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9IH1cbiAgICAgICkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogMSB9KSk7XG4gICAgfSk7XG5cbiAgICBjaGFpbkNvZGVzUDJ0ck11c2lnMi5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgRGltZW5zaW9ucy5mcm9tVW5zcGVudCh7IGNoYWluIH0pLnNob3VsZC5lcWwoRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDEgfSkpO1xuICAgICAgRGltZW5zaW9ucy5mcm9tVW5zcGVudChcbiAgICAgICAgeyBjaGFpbiB9LFxuICAgICAgICB7IHAydHI6IHsgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgfSwgcDJ0ck11c2lnMjogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9IH1cbiAgICAgICkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMnRyS2V5cGF0aElucHV0czogMSB9KSk7XG4gICAgfSk7XG5cbiAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50cyhjaGFpbkNvZGVzLm1hcCgoY2hhaW4pID0+ICh7IGNoYWluIH0pKSkuc2hvdWxkLmVxbChcbiAgICAgIG5ldyBEaW1lbnNpb25zKHtcbiAgICAgICAgblAyc2hQMndzaElucHV0czogMixcbiAgICAgICAgblAyc2hJbnB1dHM6IDIsXG4gICAgICAgIG5QMndzaElucHV0czogMixcbiAgICAgICAgblAydHJLZXlwYXRoSW5wdXRzOiAwLFxuICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDQsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogMCxcbiAgICAgICAgblAyc2hQMnBrSW5wdXRzOiAwLFxuICAgICAgICBvdXRwdXRzOiB7IGNvdW50OiAwLCBzaXplOiAwIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdjYWxjdWxhdGVzIG91dHB1dCBkaW1lbnNpb25zIGR5bmFtaWNhbGx5JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGV4cGVjdGVkU2l6ZXMgPSBuZXcgTWFwKFtcbiAgICAgIFtVbnNwZW50VHlwZVNjcmlwdDJvZjMucDJzaCwgVmlydHVhbFNpemVzLnR4UDJzaE91dHB1dFNpemVdLFxuICAgICAgW1Vuc3BlbnRUeXBlU2NyaXB0Mm9mMy5wMnNoUDJ3c2gsIFZpcnR1YWxTaXplcy50eFAyc2hQMndzaE91dHB1dFNpemVdLFxuICAgICAgW1Vuc3BlbnRUeXBlU2NyaXB0Mm9mMy5wMndzaCwgVmlydHVhbFNpemVzLnR4UDJ3c2hPdXRwdXRTaXplXSxcbiAgICAgIFtVbnNwZW50VHlwZVNjcmlwdDJvZjMucDJ0ciwgVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemVdLFxuICAgICAgW1Vuc3BlbnRUeXBlU2NyaXB0Mm9mMy5wMnRyTXVzaWcyLCBWaXJ0dWFsU2l6ZXMudHhQMnRyT3V0cHV0U2l6ZV0sXG4gICAgICBbVW5zcGVudFR5cGVTY3JpcHQyb2YzLnRhcHJvb3RLZXlQYXRoU3BlbmQsIFZpcnR1YWxTaXplcy50eFAydHJPdXRwdXRTaXplXSxcbiAgICAgIFtVbnNwZW50VHlwZVB1YktleUhhc2gucDJwa2gsIFZpcnR1YWxTaXplcy50eFAycGtoT3V0cHV0U2l6ZV0sXG4gICAgICBbVW5zcGVudFR5cGVQdWJLZXlIYXNoLnAyd3BraCwgVmlydHVhbFNpemVzLnR4UDJ3cGtoT3V0cHV0U2l6ZV0sXG4gICAgXSk7XG5cbiAgICBbLi4uT2JqZWN0LmtleXMoVW5zcGVudFR5cGVTY3JpcHQyb2YzKSwgLi4uT2JqZWN0LmtleXMoVW5zcGVudFR5cGVQdWJLZXlIYXNoKV0uZm9yRWFjaCgodHlwZSkgPT5cbiAgICAgIGdldE91dHB1dERpbWVuc2lvbnNGb3JVbnNwZW50VHlwZSh0eXBlKS5vdXRwdXRzLnNpemUuc2hvdWxkLmVxbChleHBlY3RlZFNpemVzLmdldCh0eXBlIGFzIGFueSkpXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0RpbWVuc2lvbnMgZXN0aW1hdGVzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnY2FsY3VsYXRlcyB2c2l6ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gZGltKG5QMnNoSW5wdXRzOiBudW1iZXIsIG5QMnNoUDJ3c2hJbnB1dHM6IG51bWJlciwgblAyd3NoSW5wdXRzOiBudW1iZXIsIG5PdXRwdXRzOiBudW1iZXIpOiBEaW1lbnNpb25zIHtcbiAgICAgIHJldHVybiBEaW1lbnNpb25zLnN1bShcbiAgICAgICAge1xuICAgICAgICAgIG5QMnNoSW5wdXRzLFxuICAgICAgICAgIG5QMnNoUDJ3c2hJbnB1dHMsXG4gICAgICAgICAgblAyd3NoSW5wdXRzLFxuICAgICAgICB9LFxuICAgICAgICBnZXRPdXRwdXREaW1lbnNpb25zRm9yVW5zcGVudFR5cGUoVW5zcGVudFR5cGVQdWJLZXlIYXNoLnAycGtoKS50aW1lcyhuT3V0cHV0cylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGltUDJ0cihcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0czogbnVtYmVyLFxuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiBudW1iZXIsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IG51bWJlcixcbiAgICAgIG5PdXRwdXRzOiBudW1iZXJcbiAgICApOiBEaW1lbnNpb25zIHtcbiAgICAgIHJldHVybiBEaW1lbnNpb25zLnN1bShcbiAgICAgICAge1xuICAgICAgICAgIG5QMnRyS2V5cGF0aElucHV0cyxcbiAgICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHMsXG4gICAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzLFxuICAgICAgICB9LFxuICAgICAgICBnZXRPdXRwdXREaW1lbnNpb25zRm9yVW5zcGVudFR5cGUoVW5zcGVudFR5cGVQdWJLZXlIYXNoLnAycGtoKS50aW1lcyhuT3V0cHV0cylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVjdG9yczogW0RpbWVuc2lvbnMsIHVua25vd25bXV1bXSA9IFtcbiAgICAgIFtkaW0oMSwgMCwgMCwgMSksIFtmYWxzZSwgMTAsIDI5OCwgMzQsIDM0Ml1dLFxuICAgICAgW2RpbSgwLCAxLCAwLCAxKSwgW3RydWUsIDExLCAxNDAsIDM0LCAxODVdXSxcbiAgICAgIFtkaW0oMCwgMCwgMSwgMSksIFt0cnVlLCAxMSwgMTA1LCAzNCwgMTUwXV0sXG4gICAgICBbZGltKDIsIDAsIDAsIDEpLCBbZmFsc2UsIDEwLCA1OTYsIDM0LCA2NDBdXSxcbiAgICAgIFtkaW0oMCwgMiwgMCwgMSksIFt0cnVlLCAxMSwgMjgwLCAzNCwgMzI1XV0sXG4gICAgICBbZGltKDAsIDAsIDIsIDEpLCBbdHJ1ZSwgMTEsIDIxMCwgMzQsIDI1NV1dLFxuICAgICAgW2RpbSgxLCAxLCAxLCAxKSwgW3RydWUsIDExLCA1NDMsIDM0LCA1ODhdXSxcbiAgICAgIFtkaW0oMSwgMSwgMSwgMiksIFt0cnVlLCAxMSwgNTQzLCA2OCwgNjIyXV0sXG5cbiAgICAgIFtkaW1QMnRyKDEsIDAsIDAsIDEpLCBbdHJ1ZSwgMTEsIDU4LCAzNCwgMTAzXV0sXG4gICAgICBbZGltUDJ0cigwLCAxLCAwLCAxKSwgW3RydWUsIDExLCAxMDgsIDM0LCAxNTNdXSxcbiAgICAgIFtkaW1QMnRyKDAsIDAsIDEsIDEpLCBbdHJ1ZSwgMTEsIDExNiwgMzQsIDE2MV1dLFxuICAgIF07XG5cbiAgICB2ZWN0b3JzLmZvckVhY2goKFtkaW1lbnNpb25zLCBwcm9wc10pID0+IHtcbiAgICAgIFtcbiAgICAgICAgZGltZW5zaW9ucy5pc1NlZ3dpdCgpLFxuICAgICAgICBkaW1lbnNpb25zLmdldE92ZXJoZWFkVlNpemUoKSxcbiAgICAgICAgZGltZW5zaW9ucy5nZXRJbnB1dHNWU2l6ZSgpLFxuICAgICAgICBkaW1lbnNpb25zLmdldE91dHB1dHNWU2l6ZSgpLFxuICAgICAgICBkaW1lbnNpb25zLmdldFZTaXplKCksXG4gICAgICBdLnNob3VsZC5lcWwocHJvcHMpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvZGltZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCwrQ0FBaUM7QUFDakMsbURBQTZDO0FBQzdDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsR0FDOUcsZ0JBQUssQ0FBQztBQUNSLGdDQUFvRTtBQUVwRSwyQ0FBOEc7QUFFOUcsUUFBUSxDQUFDLHVCQUF1QixFQUFFO0lBQ2hDLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtRQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUUsZ0JBQVUsQ0FBQyxJQUFZLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBRSxnQkFBVSxDQUFDLElBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixFQUFFLENBQUMsY0FBYyxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFB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QUFNLE9BQU8sR0FBOEI7WUFDekMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFM0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDaEQsQ0FBQztRQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3RDO2dCQUNFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDN0IsVUFBVSxDQUFDLGNBQWMsRUFBRTtnQkFDM0IsVUFBVSxDQUFDLGVBQWUsRUFBRTtnQkFDNUIsVUFBVSxDQUFDLFFBQVEsRUFBRTthQUN0QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG5pbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuY29uc3QgeyBjaGFpbkNvZGVzLCBjaGFpbkNvZGVzUDJzaCwgY2hhaW5Db2Rlc1Ayc2hQMndzaCwgY2hhaW5Db2Rlc1AydHIsIGNoYWluQ29kZXNQMnRyTXVzaWcyLCBjaGFpbkNvZGVzUDJ3c2ggfSA9XG4gIGJpdGdvO1xuaW1wb3J0IHsgRGltZW5zaW9ucywgT3V0cHV0RGltZW5zaW9ucywgVmlydHVhbFNpemVzIH0gZnJvbSAnLi4vc3JjJztcblxuaW1wb3J0IHsgZ2V0T3V0cHV0RGltZW5zaW9uc0ZvclVuc3BlbnRUeXBlLCBVbnNwZW50VHlwZVB1YktleUhhc2gsIFVuc3BlbnRUeXBlU2NyaXB0Mm9mMyB9IGZyb20gJy4vdGVzdHV0aWxzJztcblxuZGVzY3JpYmUoJ0RpbWVuc2lvbnMgQXR0cmlidXRlcycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2hhcyByZWFkLW9ubHkgbklucHV0cyBhbmQgbk91dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiAoKERpbWVuc2lvbnMuWkVSTyBhcyBhbnkpLm5JbnB1dHMgPSAxKSwgL3JlYWQtb25seS8pO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gKChEaW1lbnNpb25zLlpFUk8gYXMgYW55KS5uT3V0cHV0cyA9IDEpLCAvcmVhZC1vbmx5Lyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdPdXRwdXQgRGltZW5zaW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2luc3RhbnRpYXRlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkaW1zID0gbmV3IE91dHB1dERpbWVuc2lvbnMoeyBzaXplOiAwLCBjb3VudDogMCB9KTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IChkaW1zLmNvdW50ICs9IDEpKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0RpbWVuc2lvbnMgQXJpdGhtZXRpYycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3N1bXMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgIERpbWVuc2lvbnMuemVybygpXG4gICAgICAucGx1cyh7IG5QMnNoSW5wdXRzOiAxIH0pXG4gICAgICAuc2hvdWxkLmVxbChcbiAgICAgICAgbmV3IERpbWVuc2lvbnMoe1xuICAgICAgICAgIG5QMnNoSW5wdXRzOiAxLFxuICAgICAgICAgIG5QMnNoUDJ3c2hJbnB1dHM6IDAsXG4gICAgICAgICAgblAyd3NoSW5wdXRzOiAwLFxuICAgICAgICAgIG5QMnRyS2V5cGF0aElucHV0czogMCxcbiAgICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDAsXG4gICAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAwLFxuICAgICAgICAgIG5QMnNoUDJwa0lucHV0czogMCxcbiAgICAgICAgICBvdXRwdXRzOiB7IHNpemU6IDAsIGNvdW50OiAwIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgY29uc3QgY29tcG9uZW50cyA9IFtcbiAgICAgIHsgblAyc2hJbnB1dHM6IDEgfSxcbiAgICAgIHsgblAyc2hQMndzaElucHV0czogMiB9LFxuICAgICAgeyBuUDJ3c2hJbnB1dHM6IDMgfSxcbiAgICAgIHsgblAydHJLZXlwYXRoSW5wdXRzOiA0IH0sXG4gICAgICB7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogNSB9LFxuICAgICAgeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IDYgfSxcbiAgICAgIHsgb3V0cHV0czogeyBzaXplOiAyMywgY291bnQ6IDEgfSB9LFxuICAgICAgeyBvdXRwdXRzOiB7IHNpemU6IDQ0LCBjb3VudDogMiB9IH0sXG4gICAgICB7IG91dHB1dHM6IHsgc2l6ZTogMCwgY291bnQ6IDAgfSB9LFxuICAgIF07XG5cbiAgICBjb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4gc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBEaW1lbnNpb25zLnN1bShjb21wb25lbnQpKSk7XG5cbiAgICBjb25zdCBzdW0gPSBjb21wb25lbnRzLnJlZHVjZSgoYSwgYikgPT4gYS5wbHVzKGIpLCBEaW1lbnNpb25zLnplcm8oKSk7XG5cbiAgICBzdW0uc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSguLi5jb21wb25lbnRzKSk7XG5cbiAgICBzdW0uc2hvdWxkLmVxbChcbiAgICAgIG5ldyBEaW1lbnNpb25zKHtcbiAgICAgICAgblAyc2hJbnB1dHM6IDEsXG4gICAgICAgIG5QMnNoUDJ3c2hJbnB1dHM6IDIsXG4gICAgICAgIG5QMndzaElucHV0czogMyxcbiAgICAgICAgblAydHJLZXlwYXRoSW5wdXRzOiA0LFxuICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IDUsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogNixcbiAgICAgICAgblAyc2hQMnBrSW5wdXRzOiAwLFxuICAgICAgICBvdXRwdXRzOiB7IHNpemU6IDY3LCBjb3VudDogMyB9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgc3VtLm5PdXRwdXRzLnNob3VsZC5lcWwoc3VtLm91dHB1dHMuY291bnQpO1xuICB9KTtcblxuICBpdCgncHJvdmlkZXMgc29tZSB0eXBpY2FsIG91dHB1dCBzaXplcycsIGZ1bmN0aW9uICgpIHtcbiAgICAoXG4gICAgICBbXG4gICAgICAgIFtEaW1lbnNpb25zLlNpbmdsZU91dHB1dC5wMnNoLCBWaXJ0dWFsU2l6ZXMudHhQMnNoT3V0cHV0U2l6ZV0sXG4gICAgICAgIFtEaW1lbnNpb25zLlNpbmdsZU91dHB1dC5wMnNoUDJ3c2gsIFZpcnR1YWxTaXplcy50eFAyc2hQMndzaE91dHB1dFNpemVdLFxuICAgICAgICBbRGltZW5zaW9ucy5TaW5nbGVPdXRwdXQucDJ3c2gsIFZpcnR1YWxTaXplcy50eFAyd3NoT3V0cHV0U2l6ZV0sXG4gICAgICAgIFtEaW1lbnNpb25zLlNpbmdsZU91dHB1dC5wMnBraCwgVmlydHVhbFNpemVzLnR4UDJwa2hPdXRwdXRTaXplXSxcbiAgICAgICAgW0RpbWVuc2lvbnMuU2luZ2xlT3V0cHV0LnAyd3BraCwgVmlydHVhbFNpemVzLnR4UDJ3cGtoT3V0cHV0U2l6ZV0sXG4gICAgICAgIFtEaW1lbnNpb25zLlNpbmdsZU91dHB1dC5wMnRyLCBWaXJ0dWFsU2l6ZXMudHhQMnRyT3V0cHV0U2l6ZV0sXG4gICAgICBdIGFzIFtEaW1lbnNpb25zLCBudW1iZXJdW11cbiAgICApLmZvckVhY2goKFtkaW1zLCBzaXplXSkgPT4ge1xuICAgICAgZGltcy5nZXRPdXRwdXRzVlNpemUoKS5zaG91bGQuZXFsKHNpemUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgncHJldmVudHMgc3VtIG9mIGludmFsaWQgZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMCwgc2l6ZTogMCB9IH0pKTtcbiAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZTogMSB9IH0pKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IERpbWVuc2lvbnMuc3VtKHsgbk91dHB1dHM6IDEgfSkpO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gRGltZW5zaW9ucy5zdW0oeyBuT3V0cHV0czogMSwgb3V0cHV0czogeyBjb3VudDogMiwgc2l6ZTogMSB9IH0pKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBEaW1lbnNpb25zLnN1bSh7IG5QMnNoSW5wdXRzOiAxIH0sIHsgblAyc2hJbnB1dHM6ICdmb28nIH0pKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZTogMCB9IH0pKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMCwgc2l6ZTogMSB9IH0pKTtcbiAgICBzaG91bGQudGhyb3dzKCgpID0+IERpbWVuc2lvbnMuc3VtKHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZTogMSB9IH0sIHsgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZTogMCB9IH0pKTtcbiAgfSk7XG5cbiAgaXQoJ2NvdW50cyBpbnB1dHMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5lbnRyaWVzKERpbWVuc2lvbnMuU2luZ2xlSW5wdXQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgdmFsdWUubklucHV0cy5zaG91bGQuZXFsKDEsIGtleSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdtdWx0aXBsaWVzIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IERpbWVuc2lvbnMoe1xuICAgICAgblAyc2hJbnB1dHM6IDEsXG4gICAgICBuUDJzaFAyd3NoSW5wdXRzOiAyLFxuICAgICAgblAyd3NoSW5wdXRzOiAzLFxuICAgICAgblAydHJLZXlwYXRoSW5wdXRzOiA0LFxuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiA1LFxuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiA2LFxuICAgICAgblAyc2hQMnBrSW5wdXRzOiA3LFxuICAgICAgb3V0cHV0czogeyBjb3VudDogMSwgc2l6ZTogMjIgfSxcbiAgICB9KS50aW1lcygzKTtcblxuICAgIGQuc2hvdWxkLmVxbChcbiAgICAgIG5ldyBEaW1lbnNpb25zKHtcbiAgICAgICAgblAyc2hJbnB1dHM6IDMsXG4gICAgICAgIG5QMnNoUDJ3c2hJbnB1dHM6IDYsXG4gICAgICAgIG5QMndzaElucHV0czogOSxcbiAgICAgICAgblAydHJLZXlwYXRoSW5wdXRzOiAxMixcbiAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiAxNSxcbiAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAxOCxcbiAgICAgICAgblAyc2hQMnBrSW5wdXRzOiAyMSxcbiAgICAgICAgb3V0cHV0czogeyBjb3VudDogMywgc2l6ZTogNjYgfSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGQuZ2V0TklucHV0cygpLnNob3VsZC5lcWwoODQpO1xuICAgIGQubklucHV0cy5zaG91bGQuZXFsKDg0KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0RpbWVuc2lvbnMgZnJvbSB1bnNwZW50IHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnZGV0ZXJtaW5lcyB1bnNwZW50IHNpemUgYWNjb3JkaW5nIHRvIGNoYWluJywgZnVuY3Rpb24gKCkge1xuICAgIGNoYWluQ29kZXNQMnNoLmZvckVhY2goKGNoYWluKSA9PiBEaW1lbnNpb25zLmZyb21VbnNwZW50KHsgY2hhaW4gfSkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMnNoSW5wdXRzOiAxIH0pKSk7XG5cbiAgICBjaGFpbkNvZGVzUDJzaFAyd3NoLmZvckVhY2goKGNoYWluKSA9PlxuICAgICAgRGltZW5zaW9ucy5mcm9tVW5zcGVudCh7IGNoYWluIH0pLnNob3VsZC5lcWwoRGltZW5zaW9ucy5zdW0oeyBuUDJzaFAyd3NoSW5wdXRzOiAxIH0pKVxuICAgICk7XG5cbiAgICBjaGFpbkNvZGVzUDJ3c2guZm9yRWFjaCgoY2hhaW4pID0+XG4gICAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50KHsgY2hhaW4gfSkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMndzaElucHV0czogMSB9KSlcbiAgICApO1xuXG4gICAgY2hhaW5Db2Rlc1AydHIuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoeyBjaGFpbiB9KS5zaG91bGQuZXFsKERpbWVuc2lvbnMuc3VtKHsgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAxIH0pKTtcbiAgICAgIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoXG4gICAgICAgIHsgY2hhaW4gfSxcbiAgICAgICAgeyBwMnRyOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LCBwMnRyTXVzaWcyOiB7IHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIH0gfVxuICAgICAgKS5zaG91bGQuZXFsKERpbWVuc2lvbnMuc3VtKHsgblAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzOiAxIH0pKTtcbiAgICB9KTtcblxuICAgIGNoYWluQ29kZXNQMnRyTXVzaWcyLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50KHsgY2hhaW4gfSkuc2hvdWxkLmVxbChEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMSB9KSk7XG4gICAgICBEaW1lbnNpb25zLmZyb21VbnNwZW50KFxuICAgICAgICB7IGNoYWluIH0sXG4gICAgICAgIHsgcDJ0cjogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LCBwMnRyTXVzaWcyOiB7IHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIH0gfVxuICAgICAgKS5zaG91bGQuZXFsKERpbWVuc2lvbnMuc3VtKHsgblAydHJLZXlwYXRoSW5wdXRzOiAxIH0pKTtcbiAgICB9KTtcblxuICAgIERpbWVuc2lvbnMuZnJvbVVuc3BlbnRzKGNoYWluQ29kZXMubWFwKChjaGFpbikgPT4gKHsgY2hhaW4gfSkpKS5zaG91bGQuZXFsKFxuICAgICAgbmV3IERpbWVuc2lvbnMoe1xuICAgICAgICBuUDJzaFAyd3NoSW5wdXRzOiAyLFxuICAgICAgICBuUDJzaElucHV0czogMixcbiAgICAgICAgblAyd3NoSW5wdXRzOiAyLFxuICAgICAgICBuUDJ0cktleXBhdGhJbnB1dHM6IDAsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMixcbiAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAyLFxuICAgICAgICBuUDJzaFAycGtJbnB1dHM6IDAsXG4gICAgICAgIG91dHB1dHM6IHsgY291bnQ6IDAsIHNpemU6IDAgfSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIERpbWVuc2lvbnMuZnJvbVVuc3BlbnRzKFxuICAgICAgY2hhaW5Db2Rlcy5tYXAoKGNoYWluKSA9PiAoeyBjaGFpbiB9KSksXG4gICAgICB7IHAydHI6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sIHAydHJNdXNpZzI6IHsgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgfSB9XG4gICAgKS5zaG91bGQuZXFsKFxuICAgICAgbmV3IERpbWVuc2lvbnMoe1xuICAgICAgICBuUDJzaFAyd3NoSW5wdXRzOiAyLFxuICAgICAgICBuUDJzaElucHV0czogMixcbiAgICAgICAgblAyd3NoSW5wdXRzOiAyLFxuICAgICAgICBuUDJ0cktleXBhdGhJbnB1dHM6IDIsXG4gICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMixcbiAgICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzOiAwLFxuICAgICAgICBuUDJzaFAycGtJbnB1dHM6IDAsXG4gICAgICAgIG91dHB1dHM6IHsgY291bnQ6IDAsIHNpemU6IDAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGN1bGF0ZXMgb3V0cHV0IGRpbWVuc2lvbnMgZHluYW1pY2FsbHknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRTaXplcyA9IG5ldyBNYXAoW1xuICAgICAgW1Vuc3BlbnRUeXBlU2NyaXB0Mm9mMy5wMnNoLCBWaXJ0dWFsU2l6ZXMudHhQMnNoT3V0cHV0U2l6ZV0sXG4gICAgICBbVW5zcGVudFR5cGVTY3JpcHQyb2YzLnAyc2hQMndzaCwgVmlydHVhbFNpemVzLnR4UDJzaFAyd3NoT3V0cHV0U2l6ZV0sXG4gICAgICBbVW5zcGVudFR5cGVTY3JpcHQyb2YzLnAyd3NoLCBWaXJ0dWFsU2l6ZXMudHhQMndzaE91dHB1dFNpemVdLFxuICAgICAgW1Vuc3BlbnRUeXBlU2NyaXB0Mm9mMy5wMnRyLCBWaXJ0dWFsU2l6ZXMudHhQMnRyT3V0cHV0U2l6ZV0sXG4gICAgICBbVW5zcGVudFR5cGVTY3JpcHQyb2YzLnAydHJNdXNpZzIsIFZpcnR1YWxTaXplcy50eFAydHJPdXRwdXRTaXplXSxcbiAgICAgIFtVbnNwZW50VHlwZVNjcmlwdDJvZjMudGFwcm9vdEtleVBhdGhTcGVuZCwgVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemVdLFxuICAgICAgW1Vuc3BlbnRUeXBlUHViS2V5SGFzaC5wMnBraCwgVmlydHVhbFNpemVzLnR4UDJwa2hPdXRwdXRTaXplXSxcbiAgICAgIFtVbnNwZW50VHlwZVB1YktleUhhc2gucDJ3cGtoLCBWaXJ0dWFsU2l6ZXMudHhQMndwa2hPdXRwdXRTaXplXSxcbiAgICBdKTtcblxuICAgIFsuLi5PYmplY3Qua2V5cyhVbnNwZW50VHlwZVNjcmlwdDJvZjMpLCAuLi5PYmplY3Qua2V5cyhVbnNwZW50VHlwZVB1YktleUhhc2gpXS5mb3JFYWNoKCh0eXBlKSA9PlxuICAgICAgZ2V0T3V0cHV0RGltZW5zaW9uc0ZvclVuc3BlbnRUeXBlKHR5cGUpLm91dHB1dHMuc2l6ZS5zaG91bGQuZXFsKGV4cGVjdGVkU2l6ZXMuZ2V0KHR5cGUgYXMgYW55KSlcbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnRGltZW5zaW9ucyBlc3RpbWF0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdjYWxjdWxhdGVzIHZzaXplcycsIGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBkaW0oblAyc2hJbnB1dHM6IG51bWJlciwgblAyc2hQMndzaElucHV0czogbnVtYmVyLCBuUDJ3c2hJbnB1dHM6IG51bWJlciwgbk91dHB1dHM6IG51bWJlcik6IERpbWVuc2lvbnMge1xuICAgICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKFxuICAgICAgICB7XG4gICAgICAgICAgblAyc2hJbnB1dHMsXG4gICAgICAgICAgblAyc2hQMndzaElucHV0cyxcbiAgICAgICAgICBuUDJ3c2hJbnB1dHMsXG4gICAgICAgIH0sXG4gICAgICAgIGdldE91dHB1dERpbWVuc2lvbnNGb3JVbnNwZW50VHlwZShVbnNwZW50VHlwZVB1YktleUhhc2gucDJwa2gpLnRpbWVzKG5PdXRwdXRzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaW1QMnRyKFxuICAgICAgblAydHJLZXlwYXRoSW5wdXRzOiBudW1iZXIsXG4gICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dHM6IG51bWJlcixcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogbnVtYmVyLFxuICAgICAgbk91dHB1dHM6IG51bWJlclxuICAgICk6IERpbWVuc2lvbnMge1xuICAgICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKFxuICAgICAgICB7XG4gICAgICAgICAgblAydHJLZXlwYXRoSW5wdXRzLFxuICAgICAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyxcbiAgICAgICAgICBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMsXG4gICAgICAgIH0sXG4gICAgICAgIGdldE91dHB1dERpbWVuc2lvbnNGb3JVbnNwZW50VHlwZShVbnNwZW50VHlwZVB1YktleUhhc2gucDJwa2gpLnRpbWVzKG5PdXRwdXRzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZWN0b3JzOiBbRGltZW5zaW9ucywgdW5rbm93bltdXVtdID0gW1xuICAgICAgW2RpbSgxLCAwLCAwLCAxKSwgW2ZhbHNlLCAxMCwgMjk4LCAzNCwgMzQyXV0sXG4gICAgICBbZGltKDAsIDEsIDAsIDEpLCBbdHJ1ZSwgMTEsIDE0MCwgMzQsIDE4NV1dLFxuICAgICAgW2RpbSgwLCAwLCAxLCAxKSwgW3RydWUsIDExLCAxMDUsIDM0LCAxNTBdXSxcbiAgICAgIFtkaW0oMiwgMCwgMCwgMSksIFtmYWxzZSwgMTAsIDU5NiwgMzQsIDY0MF1dLFxuICAgICAgW2RpbSgwLCAyLCAwLCAxKSwgW3RydWUsIDExLCAyODAsIDM0LCAzMjVdXSxcbiAgICAgIFtkaW0oMCwgMCwgMiwgMSksIFt0cnVlLCAxMSwgMjEwLCAzNCwgMjU1XV0sXG4gICAgICBbZGltKDEsIDEsIDEsIDEpLCBbdHJ1ZSwgMTEsIDU0MywgMzQsIDU4OF1dLFxuICAgICAgW2RpbSgxLCAxLCAxLCAyKSwgW3RydWUsIDExLCA1NDMsIDY4LCA2MjJdXSxcblxuICAgICAgW2RpbVAydHIoMSwgMCwgMCwgMSksIFt0cnVlLCAxMSwgNTgsIDM0LCAxMDNdXSxcbiAgICAgIFtkaW1QMnRyKDAsIDEsIDAsIDEpLCBbdHJ1ZSwgMTEsIDEwOCwgMzQsIDE1M11dLFxuICAgICAgW2RpbVAydHIoMCwgMCwgMSwgMSksIFt0cnVlLCAxMSwgMTE2LCAzNCwgMTYxXV0sXG4gICAgXTtcblxuICAgIHZlY3RvcnMuZm9yRWFjaCgoW2RpbWVuc2lvbnMsIHByb3BzXSkgPT4ge1xuICAgICAgW1xuICAgICAgICBkaW1lbnNpb25zLmlzU2Vnd2l0KCksXG4gICAgICAgIGRpbWVuc2lvbnMuZ2V0T3ZlcmhlYWRWU2l6ZSgpLFxuICAgICAgICBkaW1lbnNpb25zLmdldElucHV0c1ZTaXplKCksXG4gICAgICAgIGRpbWVuc2lvbnMuZ2V0T3V0cHV0c1ZTaXplKCksXG4gICAgICAgIGRpbWVuc2lvbnMuZ2V0VlNpemUoKSxcbiAgICAgIF0uc2hvdWxkLmVxbChwcm9wcyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=