@bitgo-beta/utxo-bin 2.8.3-beta.66 → 2.8.3-beta.660

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 (139) hide show
  1. package/README.md +63 -4
  2. package/dist/bin/index.js +11 -2
  3. package/dist/src/AddressParser.d.ts +1 -1
  4. package/dist/src/AddressParser.d.ts.map +1 -1
  5. package/dist/src/AddressParser.js +19 -7
  6. package/dist/src/InputParser.d.ts +1 -2
  7. package/dist/src/InputParser.d.ts.map +1 -1
  8. package/dist/src/InputParser.js +34 -32
  9. package/dist/src/OutputParser.d.ts +3 -3
  10. package/dist/src/OutputParser.d.ts.map +1 -1
  11. package/dist/src/OutputParser.js +18 -5
  12. package/dist/src/Parser.d.ts +3 -3
  13. package/dist/src/Parser.d.ts.map +1 -1
  14. package/dist/src/Parser.js +16 -6
  15. package/dist/src/ParserTx.d.ts +3 -4
  16. package/dist/src/ParserTx.d.ts.map +1 -1
  17. package/dist/src/ParserTx.js +7 -8
  18. package/dist/src/ScriptParser.d.ts +23 -0
  19. package/dist/src/ScriptParser.d.ts.map +1 -0
  20. package/dist/src/ScriptParser.js +96 -0
  21. package/dist/src/TxParser.d.ts +3 -2
  22. package/dist/src/TxParser.d.ts.map +1 -1
  23. package/dist/src/TxParser.js +10 -10
  24. package/dist/src/args/format.d.ts +8 -0
  25. package/dist/src/args/format.d.ts.map +1 -0
  26. package/dist/src/args/format.js +15 -0
  27. package/dist/src/args/index.d.ts +5 -0
  28. package/dist/src/args/index.d.ts.map +1 -0
  29. package/dist/src/args/index.js +21 -0
  30. package/dist/src/args/parseNetwork.d.ts +25 -0
  31. package/dist/src/args/parseNetwork.d.ts.map +1 -0
  32. package/dist/src/args/parseNetwork.js +75 -0
  33. package/dist/src/args/parseString.d.ts +40 -0
  34. package/dist/src/args/parseString.d.ts.map +1 -0
  35. package/dist/src/args/parseString.js +120 -0
  36. package/dist/src/args/walletKeys.d.ts +38 -0
  37. package/dist/src/args/walletKeys.d.ts.map +1 -0
  38. package/dist/src/args/walletKeys.js +28 -0
  39. package/dist/src/bip32.d.ts +5 -0
  40. package/dist/src/bip32.d.ts.map +1 -0
  41. package/dist/src/bip32.js +23 -0
  42. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts +21 -0
  43. package/dist/src/commands/cmdAddress/cmdGenerate.d.ts.map +1 -0
  44. package/dist/src/commands/cmdAddress/cmdGenerate.js +89 -0
  45. package/dist/src/commands/cmdAddress/cmdParse.d.ts +20 -0
  46. package/dist/src/commands/cmdAddress/cmdParse.d.ts.map +1 -0
  47. package/dist/src/commands/cmdAddress/cmdParse.js +28 -0
  48. package/dist/src/commands/cmdAddress/index.d.ts +3 -0
  49. package/dist/src/commands/cmdAddress/index.d.ts.map +1 -0
  50. package/dist/src/commands/cmdAddress/index.js +16 -0
  51. package/dist/src/commands/cmdBip32.d.ts +16 -0
  52. package/dist/src/commands/cmdBip32.d.ts.map +1 -0
  53. package/dist/src/commands/cmdBip32.js +45 -0
  54. package/dist/src/commands/cmdParseScript.d.ts +18 -0
  55. package/dist/src/commands/cmdParseScript.d.ts.map +1 -0
  56. package/dist/src/commands/cmdParseScript.js +27 -0
  57. package/dist/src/commands/cmdParseTx.d.ts +30 -0
  58. package/dist/src/commands/cmdParseTx.d.ts.map +1 -0
  59. package/dist/src/commands/cmdParseTx.js +120 -0
  60. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts +13 -0
  61. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.d.ts.map +1 -0
  62. package/dist/src/commands/cmdPsbt/cmdAddDescriptorInput.js +67 -0
  63. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts +11 -0
  64. package/dist/src/commands/cmdPsbt/cmdAddOutput.d.ts.map +1 -0
  65. package/dist/src/commands/cmdPsbt/cmdAddOutput.js +89 -0
  66. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts +9 -0
  67. package/dist/src/commands/cmdPsbt/cmdCreate.d.ts.map +1 -0
  68. package/dist/src/commands/cmdPsbt/cmdCreate.js +23 -0
  69. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts +11 -0
  70. package/dist/src/commands/cmdPsbt/cmdFinalize.d.ts.map +1 -0
  71. package/dist/src/commands/cmdPsbt/cmdFinalize.js +43 -0
  72. package/dist/src/commands/cmdPsbt/cmdSign.d.ts +7 -0
  73. package/dist/src/commands/cmdPsbt/cmdSign.d.ts.map +1 -0
  74. package/dist/src/commands/cmdPsbt/cmdSign.js +24 -0
  75. package/dist/src/commands/cmdPsbt/index.d.ts +8 -0
  76. package/dist/src/commands/cmdPsbt/index.d.ts.map +1 -0
  77. package/dist/src/commands/cmdPsbt/index.js +27 -0
  78. package/dist/src/commands/cmdPsbt/withPsbt.d.ts +63 -0
  79. package/dist/src/commands/cmdPsbt/withPsbt.d.ts.map +1 -0
  80. package/dist/src/commands/cmdPsbt/withPsbt.js +66 -0
  81. package/dist/src/commands/cmdPsbt/wrap.d.ts +5 -0
  82. package/dist/src/commands/cmdPsbt/wrap.d.ts.map +1 -0
  83. package/dist/src/commands/cmdPsbt/wrap.js +27 -0
  84. package/dist/src/commands/formatString.d.ts +8 -0
  85. package/dist/src/commands/formatString.d.ts.map +1 -0
  86. package/dist/src/commands/formatString.js +14 -0
  87. package/dist/src/commands/index.d.ts +6 -0
  88. package/dist/src/commands/index.d.ts.map +1 -0
  89. package/dist/src/commands/index.js +22 -0
  90. package/dist/src/ecdsa.d.ts +0 -1
  91. package/dist/src/ecdsa.d.ts.map +1 -1
  92. package/dist/src/ecdsa.js +2 -3
  93. package/dist/src/fetch.d.ts +8 -1
  94. package/dist/src/fetch.d.ts.map +1 -1
  95. package/dist/src/fetch.js +42 -9
  96. package/dist/src/format.d.ts.map +1 -1
  97. package/dist/src/format.js +15 -8
  98. package/dist/src/generateAddress.d.ts +47 -0
  99. package/dist/src/generateAddress.d.ts.map +1 -0
  100. package/dist/src/generateAddress.js +141 -0
  101. package/dist/src/hollowSegwitSpend.d.ts +1 -1
  102. package/dist/src/hollowSegwitSpend.d.ts.map +1 -1
  103. package/dist/src/hollowSegwitSpend.js +3 -4
  104. package/dist/src/parseUnknown.d.ts +3 -1
  105. package/dist/src/parseUnknown.d.ts.map +1 -1
  106. package/dist/src/parseUnknown.js +5 -6
  107. package/dist/test/args/stringToBuffer.d.ts +2 -0
  108. package/dist/test/args/stringToBuffer.d.ts.map +1 -0
  109. package/dist/test/args/stringToBuffer.js +16 -0
  110. package/dist/test/bip32.d.ts +2 -0
  111. package/dist/test/bip32.d.ts.map +1 -0
  112. package/dist/test/bip32.js +22 -0
  113. package/dist/test/bip32.util.d.ts +6 -0
  114. package/dist/test/bip32.util.d.ts.map +1 -0
  115. package/dist/test/bip32.util.js +13 -0
  116. package/dist/test/cmdPsbt.d.ts +2 -0
  117. package/dist/test/cmdPsbt.d.ts.map +1 -0
  118. package/dist/test/cmdPsbt.js +102 -0
  119. package/dist/test/fixtures.d.ts +4 -4
  120. package/dist/test/fixtures.d.ts.map +1 -1
  121. package/dist/test/fixtures.js +20 -14
  122. package/dist/test/generateAddress.d.ts +2 -0
  123. package/dist/test/generateAddress.d.ts.map +1 -0
  124. package/dist/test/generateAddress.js +46 -0
  125. package/dist/test/parseAddress.d.ts +1 -5
  126. package/dist/test/parseAddress.d.ts.map +1 -1
  127. package/dist/test/parseAddress.js +20 -22
  128. package/dist/test/parseScript.d.ts +2 -0
  129. package/dist/test/parseScript.d.ts.map +1 -0
  130. package/dist/test/parseScript.js +41 -0
  131. package/dist/test/parseTransaction.js +14 -10
  132. package/dist/tsconfig.tsbuildinfo +1 -1
  133. package/package.json +9 -6
  134. package/dist/src/commands.d.ts +0 -48
  135. package/dist/src/commands.d.ts.map +0 -1
  136. package/dist/src/commands.js +0 -213
  137. package/dist/src/readStdin.d.ts +0 -5
  138. package/dist/src/readStdin.d.ts.map +0 -1
  139. package/dist/src/readStdin.js +0 -42
@@ -2,19 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InputParser = void 0;
4
4
  const utxolib = require("@bitgo-beta/utxo-lib");
5
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
6
  const Parser_1 = require("./Parser");
6
7
  const ParserTx_1 = require("./ParserTx");
7
8
  const hollowSegwitSpend_1 = require("./hollowSegwitSpend");
8
- const bitcoinjs_lib_1 = require("bitcoinjs-lib");
9
9
  const ecdsa_1 = require("./ecdsa");
10
10
  const OutputParser_1 = require("./OutputParser");
11
11
  const parseUnknown_1 = require("./parseUnknown");
12
+ const ScriptParser_1 = require("./ScriptParser");
12
13
  function getOutputId(v) {
13
14
  return utxolib.bitgo.formatOutputId(utxolib.bitgo.getOutputIdForInput(v));
14
15
  }
15
16
  function parseSignatureScript(tx, inputIndex, network) {
16
17
  if (tx instanceof utxolib.bitgo.UtxoTransaction) {
17
- return (hollowSegwitSpend_1.parseHollowSegwitSpend(tx.ins[inputIndex], network) || utxolib.bitgo.parseSignatureScript(tx.ins[inputIndex]));
18
+ return ((0, hollowSegwitSpend_1.parseHollowSegwitSpend)(tx.ins[inputIndex], network) || utxolib.bitgo.parseSignatureScript(tx.ins[inputIndex]));
18
19
  }
19
20
  return utxolib.bitgo.parsePsbtInput(tx.data.inputs[inputIndex]);
20
21
  }
@@ -44,16 +45,7 @@ class InputParser extends Parser_1.Parser {
44
45
  parseScriptAsm(type, part, i, n) {
45
46
  if ((type === 'taproot' && i === n - 2) ||
46
47
  ((type === 'scripthash' || type === 'witnessscripthash') && i === n - 1)) {
47
- let parsed;
48
- try {
49
- parsed = utxolib.script.toASM(part);
50
- }
51
- catch (e) {
52
- return 'error';
53
- }
54
- if (parsed) {
55
- return ['', ...parsed.split(' ')].join('\n');
56
- }
48
+ return ScriptParser_1.ScriptParser.toASM(part);
57
49
  }
58
50
  }
59
51
  parseScriptParts(type, parts) {
@@ -67,11 +59,10 @@ class InputParser extends Parser_1.Parser {
67
59
  });
68
60
  }
69
61
  parseInputScript(buffer) {
70
- var _a;
71
62
  let value;
72
63
  let nodes;
73
64
  if (buffer && buffer.length && this.params.parseSignatureData.script) {
74
- const type = (_a = utxolib.classify.input(buffer, true)) !== null && _a !== void 0 ? _a : 'unknown';
65
+ const type = utxolib.classify.input(buffer, true) ?? 'unknown';
75
66
  const decompiled = utxolib.script.decompile(buffer);
76
67
  if (decompiled) {
77
68
  nodes = this.parseScriptParts(type, decompiled);
@@ -84,11 +75,10 @@ class InputParser extends Parser_1.Parser {
84
75
  return this.node('scriptSig', value, nodes);
85
76
  }
86
77
  parseWitness(script) {
87
- var _a;
88
78
  if (!script || script.length === 0) {
89
79
  return this.node('witness', '[]');
90
80
  }
91
- const type = (_a = utxolib.classify.witness(script, true)) !== null && _a !== void 0 ? _a : 'unknown';
81
+ const type = utxolib.classify.witness(script, true) ?? 'unknown';
92
82
  return this.node('witness', type, this.params.parseScriptData ? this.parseScriptParts(type, script) : undefined);
93
83
  }
94
84
  parsePubkeys(parsed) {
@@ -103,6 +93,9 @@ class InputParser extends Parser_1.Parser {
103
93
  if (buf === 0) {
104
94
  return [this.node('type', 'placeholder (0)')];
105
95
  }
96
+ if (buf.length === 0) {
97
+ return [this.node('type', 'placeholder (empty Buffer)')];
98
+ }
106
99
  const nodes = [this.node('bytes', buf)];
107
100
  if (signerIndex !== undefined) {
108
101
  nodes.push(this.node('valid', 0 <= signerIndex));
@@ -120,19 +113,25 @@ class InputParser extends Parser_1.Parser {
120
113
  if (r.length !== 32 || s.length !== 32) {
121
114
  throw new Error(`invalid scalar length`);
122
115
  }
123
- nodes.push(this.node('isCanonical', bitcoinjs_lib_1.script.isCanonicalScriptSignature(buf)), this.node('hashType', hashType), this.node('r', r), this.node('s', s), this.node('highS', ecdsa_1.isHighS(s)));
116
+ nodes.push(this.node('isCanonical', bitcoinjs_lib_1.script.isCanonicalScriptSignature(buf)), this.node('hashType', hashType), this.node('r', r), this.node('s', s), this.node('highS', (0, ecdsa_1.isHighS)(s)));
124
117
  }
125
118
  return nodes;
126
119
  }
127
120
  parseSignaturesWithSigners(parsed, signedByLabels, signerIndex) {
128
121
  const nodes = signedByLabels ? [this.node('signed by', `[${signedByLabels.join(', ')}]`)] : [];
129
122
  if (this.params.parseSignatureData.ecdsa || this.params.parseSignatureData.schnorr) {
130
- nodes.push(...parsed.signatures.map((s, i) => this.node(i, undefined, this.parseSignatureBuffer(parsed.scriptType, s, signerIndex ? signerIndex[i] : undefined))));
123
+ nodes.push(...parsed.signatures.map((s, i) => {
124
+ try {
125
+ return this.node(i, undefined, this.parseSignatureBuffer(parsed.scriptType, s, signerIndex ? signerIndex[i] : undefined));
126
+ }
127
+ catch (e) {
128
+ return this.node(i, undefined, [this.node('buf', s), this.handleParseError(e)]);
129
+ }
130
+ }));
131
131
  }
132
132
  return nodes;
133
133
  }
134
134
  parseSignatures(parsed) {
135
- var _a;
136
135
  const nodes = [];
137
136
  if ('signatures' in parsed &&
138
137
  'publicKeys' in parsed &&
@@ -141,7 +140,12 @@ class InputParser extends Parser_1.Parser {
141
140
  parsed.scriptType !== undefined) {
142
141
  if (this.tx instanceof utxolib.bitgo.UtxoTransaction && this.chainInfo.prevOutputs) {
143
142
  const signedBy = utxolib.bitgo.getSignaturesWithPublicKeys(this.tx, this.inputIndex, this.chainInfo.prevOutputs, parsed.publicKeys);
144
- nodes.push(...this.parseSignaturesWithSigners(parsed, signedBy.flatMap((v, i) => (v ? [i.toString()] : [])), parsed.signatures.map((k) => (k === 0 ? -1 : signedBy.indexOf(k)))));
143
+ try {
144
+ nodes.push(...this.parseSignaturesWithSigners(parsed, signedBy.flatMap((v, i) => (v ? [i.toString()] : [])), parsed.signatures.map((k) => (k === 0 ? -1 : signedBy.indexOf(k)))));
145
+ }
146
+ catch (e) {
147
+ nodes.push(this.node('parseSignaturesWithSigners', undefined, [this.handleParseError(e)]));
148
+ }
145
149
  }
146
150
  if (this.tx instanceof utxolib.bitgo.UtxoPsbt) {
147
151
  let signedByLabels;
@@ -158,14 +162,13 @@ class InputParser extends Parser_1.Parser {
158
162
  .join(' '), nodes);
159
163
  }
160
164
  else if ('signatures' in parsed) {
161
- return this.node('signatures', undefined, ((_a = parsed.signatures) !== null && _a !== void 0 ? _a : []).map((s, i) => this.node(i, s)));
165
+ return this.node('signatures', undefined, (parsed.signatures ?? []).map((s, i) => this.node(i, s)));
162
166
  }
163
167
  else {
164
168
  return this.node('signatures', undefined);
165
169
  }
166
170
  }
167
171
  parseSigScriptWithType(parsed) {
168
- var _a;
169
172
  if (parsed.scriptType &&
170
173
  (utxolib.bitgo.outputScripts.isScriptType2Of3(parsed.scriptType) ||
171
174
  parsed.scriptType === 'taprootScriptPathSpend' ||
@@ -173,16 +176,16 @@ class InputParser extends Parser_1.Parser {
173
176
  return this.node('sigScript', parsed.scriptType, [this.parsePubkeys(parsed), this.parseSignatures(parsed)]);
174
177
  }
175
178
  if (parsed.scriptType === 'p2shP2wshHollow' || parsed.scriptType === 'p2shP2wpkhHollow') {
176
- return this.node('sigScript', parsed.scriptType, [this.node('info', hollowSegwitSpend_1.getHollowSpendMessage())]);
179
+ return this.node('sigScript', parsed.scriptType, [this.node('info', (0, hollowSegwitSpend_1.getHollowSpendMessage)())]);
177
180
  }
178
- return this.node('sigScript', (_a = parsed.scriptType) !== null && _a !== void 0 ? _a : 'unknown');
181
+ return this.node('sigScript', parsed.scriptType ?? 'unknown');
179
182
  }
180
183
  parseSigScript() {
181
184
  try {
182
185
  return this.parseSigScriptWithType(parseSignatureScript(this.tx, this.inputIndex, this.tx.network));
183
186
  }
184
187
  catch (e) {
185
- return this.handleParseError(e);
188
+ return this.node('sigScript', undefined, [this.handleParseError(e)]);
186
189
  }
187
190
  }
188
191
  parsePrevOut(prevOutput) {
@@ -195,7 +198,7 @@ class InputParser extends Parser_1.Parser {
195
198
  if (!(this.tx instanceof utxolib.bitgo.UtxoPsbt)) {
196
199
  throw new Error('invalid state');
197
200
  }
198
- const result = ParserTx_1.getPrevOut(prevOutput, this.tx.txInputs[this.inputIndex], this.tx.network);
201
+ const result = (0, ParserTx_1.getPrevOut)(prevOutput, this.tx.txInputs[this.inputIndex], this.tx.network);
199
202
  if (!result) {
200
203
  return [this.node('script', 'unknown'), this.node('value', 'unknown')];
201
204
  }
@@ -221,13 +224,12 @@ class InputParser extends Parser_1.Parser {
221
224
  musig2Participants: utxolib.bitgo.musig2.parsePsbtMusig2Participants(input),
222
225
  musig2Nonces: utxolib.bitgo.musig2.parsePsbtMusig2Nonces(input),
223
226
  musig2PartialSignatures: utxolib.bitgo.musig2.parsePsbtMusig2PartialSigs(input),
224
- }).flatMap(([key, value]) => (value ? [parseUnknown_1.parseUnknown(this, key, value)] : []));
227
+ }).flatMap(([key, value]) => (value ? [(0, parseUnknown_1.parseUnknown)(this, key, value)] : []));
225
228
  }
226
229
  parseInput() {
227
- var _a;
228
230
  const psbtInput = this.tx instanceof utxolib.bitgo.UtxoPsbt ? this.tx.data.inputs[this.inputIndex] : undefined;
229
- const { txid: prevTxid, vout, sequence, script, witness } = ParserTx_1.getParserTxInputProperties(this.input, psbtInput);
230
- const prevOutput = (_a = this.chainInfo.prevOutputs) === null || _a === void 0 ? void 0 : _a[this.inputIndex];
231
+ const { txid: prevTxid, vout, sequence, script, witness } = (0, ParserTx_1.getParserTxInputProperties)(this.input, psbtInput);
232
+ const prevOutput = this.chainInfo.prevOutputs?.[this.inputIndex];
231
233
  return this.node(this.inputIndex, getOutputId(this.input), [
232
234
  this.node('sequence', sequence === undefined ? undefined : toBufferUInt32BE(sequence)),
233
235
  this.parseInputScript(script),
@@ -235,7 +237,7 @@ class InputParser extends Parser_1.Parser {
235
237
  this.parseSigScript(),
236
238
  ...(psbtInput ? this.parsePrevOut(psbtInput) : []),
237
239
  ...(prevOutput
238
- ? new OutputParser_1.OutputParser(this.tx.network, prevTxid, vout, prevOutput, this.chainInfo, this.params).parseSpend({
240
+ ? new OutputParser_1.OutputParser(this.tx.network, prevTxid, vout, prevOutput, this.chainInfo, this.params).parsePrevOutputSpend({
239
241
  conflict: true,
240
242
  })
241
243
  : []),
@@ -244,4 +246,4 @@ class InputParser extends Parser_1.Parser {
244
246
  }
245
247
  }
246
248
  exports.InputParser = InputParser;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELHFDQUE4QztBQUM5Qyx5Q0FBNkY7QUFDN0YsMkRBQXVHO0FBQ3ZHLGlEQUF3RDtBQUN4RCxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQVc5QyxTQUFTLFdBQVcsQ0FBQyxDQUFrQztJQUNyRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxFQUFZLEVBQUUsVUFBa0IsRUFBRSxPQUF3QjtJQUN0RixJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUMvQyxPQUFPLENBQ0wsMENBQXNCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDOUcsQ0FBQztLQUNIO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLENBQVM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFhLFdBQVksU0FBUSxl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QUN0RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxVQUFVO2dCQUNaLENBQUMsQ0FBQyxJQUFJLDJCQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUNwRyxRQUFRLEVBQUUsSUFBSTtpQkFDZixDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaFRELGtDQWdUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXMsIGdldFByZXZPdXQsIFBhcnNlclR4LCBQYXJzZXJUeElucHV0IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5pbXBvcnQgeyBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UsIEhvbGxvd1NlZ3dpdFNwZW5kLCBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kIH0gZnJvbSAnLi9ob2xsb3dTZWd3aXRTcGVuZCc7XG5pbXBvcnQgeyBzY3JpcHQsIFNjcmlwdFNpZ25hdHVyZSB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgaXNIaWdoUyB9IGZyb20gJy4vZWNkc2EnO1xuaW1wb3J0IHsgQ2hhaW5JbmZvIH0gZnJvbSAnLi9UeFBhcnNlcic7XG5pbXBvcnQgeyBPdXRwdXRQYXJzZXIgfSBmcm9tICcuL091dHB1dFBhcnNlcic7XG5pbXBvcnQgeyBwYXJzZVVua25vd24gfSBmcm9tICcuL3BhcnNlVW5rbm93bic7XG5cbnR5cGUgUGFyc2VkU2lnbmF0dXJlU2NyaXB0ID1cbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFAybXNcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290XG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0UDJtc1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkUHNidFAyc2hQMnBrXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0VGFwcm9vdFxuICB8IEhvbGxvd1NlZ3dpdFNwZW5kO1xuXG5mdW5jdGlvbiBnZXRPdXRwdXRJZCh2OiB7IGhhc2g6IEJ1ZmZlcjsgaW5kZXg6IG51bWJlciB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIHV0eG9saWIuYml0Z28uZm9ybWF0T3V0cHV0SWQodXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHYpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQodHg6IFBhcnNlclR4LCBpbnB1dEluZGV4OiBudW1iZXIsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhcnNlSG9sbG93U2Vnd2l0U3BlbmQodHguaW5zW2lucHV0SW5kZXhdLCBuZXR3b3JrKSB8fCB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KHR4Lmluc1tpbnB1dEluZGV4XSlcbiAgICApO1xuICB9XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLnBhcnNlUHNidElucHV0KHR4LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXJVSW50MzJCRShuOiBudW1iZXIpOiBCdWZmZXIge1xuICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoNCk7XG4gIGJ1Zi53cml0ZVVJbnQzMkxFKG4sIDApO1xuICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgY2xhc3MgSW5wdXRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcml2YXRlIGlucHV0OiBQYXJzZXJUeElucHV0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHhpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgdHg6IFBhcnNlclR4LFxuICAgIHByaXZhdGUgaW5wdXRJbmRleDogbnVtYmVyLFxuICAgIHByaXZhdGUgY2hhaW5JbmZvOiBDaGFpbkluZm8sXG4gICAgcHJpdmF0ZSBwYXJhbXM6IHtcbiAgICAgIHBhcnNlT3V0cHV0U2NyaXB0OiBib29sZWFuO1xuICAgICAgcGFyc2VTY3JpcHRBc206IGJvb2xlYW47XG4gICAgICBwYXJzZVNjcmlwdERhdGE6IGJvb2xlYW47XG4gICAgICBwYXJzZVNpZ25hdHVyZURhdGE6IHtcbiAgICAgICAgc2NyaXB0OiBib29sZWFuO1xuICAgICAgICBlY2RzYTogYm9vbGVhbjtcbiAgICAgICAgc2Nobm9ycjogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBwYXJzZUVycm9yPzogJ3Rocm93JyB8ICdjb250aW51ZSc7XG4gICAgfVxuICApIHtcbiAgICBzdXBlcih7IHBhcnNlRXJyb3I6IHBhcmFtcy5wYXJzZUVycm9yIH0pO1xuICAgIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aGlzLmlucHV0ID0gdHguaW5zW2lucHV0SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICB0aGlzLmlucHV0ID0gdHgudHhJbnB1dHNbaW5wdXRJbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTY3JpcHRBc20odHlwZTogc3RyaW5nLCBwYXJ0OiBCdWZmZXIsIGk6IG51bWJlciwgbjogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAodHlwZSA9PT0gJ3RhcHJvb3QnICYmIGkgPT09IG4gLSAyKSB8fFxuICAgICAgKCh0eXBlID09PSAnc2NyaXB0aGFzaCcgfHwgdHlwZSA9PT0gJ3dpdG5lc3NzY3JpcHRoYXNoJykgJiYgaSA9PT0gbiAtIDEpXG4gICAgKSB7XG4gICAgICBsZXQgcGFyc2VkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSB1dHhvbGliLnNjcmlwdC50b0FTTShwYXJ0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgcmV0dXJuIFsnJywgLi4ucGFyc2VkLnNwbGl0KCcgJyldLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2NyaXB0UGFydHModHlwZTogc3RyaW5nLCBwYXJ0czogQXJyYXk8QnVmZmVyIHwgbnVtYmVyPik6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHBhcnRzLm1hcCgodiwgaSkgPT4ge1xuICAgICAgbGV0IGFzbU5vZGU6IFBhcnNlck5vZGUgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodGhpcy5wYXJhbXMucGFyc2VTY3JpcHRBc20gJiYgQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VTY3JpcHRBc20odHlwZSwgdiwgaSwgcGFydHMubGVuZ3RoKTtcbiAgICAgICAgYXNtTm9kZSA9IHBhcnNlZCA/IHRoaXMubm9kZSgnYXNtJywgcGFyc2VkKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubm9kZShpLCB0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdERhdGEgPyB2IDogdW5kZWZpbmVkLCBhc21Ob2RlID8gW2FzbU5vZGVdIDogdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlSW5wdXRTY3JpcHQoYnVmZmVyOiBCdWZmZXIgfCB1bmRlZmluZWQpOiBQYXJzZXJOb2RlIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgbGV0IG5vZGVzO1xuICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLmxlbmd0aCAmJiB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2NyaXB0KSB7XG4gICAgICBjb25zdCB0eXBlID0gdXR4b2xpYi5jbGFzc2lmeS5pbnB1dChidWZmZXIsIHRydWUpID8/ICd1bmtub3duJztcbiAgICAgIGNvbnN0IGRlY29tcGlsZWQgPSB1dHhvbGliLnNjcmlwdC5kZWNvbXBpbGUoYnVmZmVyKTtcbiAgICAgIGlmIChkZWNvbXBpbGVkKSB7XG4gICAgICAgIG5vZGVzID0gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIGRlY29tcGlsZWQpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB0eXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKCdzY3JpcHRTaWcnLCB2YWx1ZSwgbm9kZXMpO1xuICB9XG5cbiAgcGFyc2VXaXRuZXNzKHNjcmlwdDogQnVmZmVyW10gfCB1bmRlZmluZWQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoIXNjcmlwdCB8fCBzY3JpcHQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgJ1tdJyk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LndpdG5lc3Moc2NyaXB0LCB0cnVlKSA/PyAndW5rbm93bic7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgnd2l0bmVzcycsIHR5cGUsIHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0RGF0YSA/IHRoaXMucGFyc2VTY3JpcHRQYXJ0cyh0eXBlLCBzY3JpcHQpIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHBhcnNlUHVia2V5cyhwYXJzZWQ6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCk6IFBhcnNlck5vZGUge1xuICAgIGlmICgncHVibGljS2V5cycgaW4gcGFyc2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKFxuICAgICAgICAncHVia2V5cycsXG4gICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzLmxlbmd0aCxcbiAgICAgICAgcGFyc2VkLnB1YmxpY0tleXMubWFwKChrLCBpKSA9PiB0aGlzLm5vZGUoaSwgaykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdwdWJrZXlzJywgJ1tdJyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTaWduYXR1cmVCdWZmZXIoXG4gICAgdHlwZTpcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4gICAgICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2NyaXB0VHlwZTJPZjNcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGVQMnNoUDJwayxcbiAgICBidWY6IEJ1ZmZlciB8IDAsXG4gICAgc2lnbmVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGlmIChidWYgPT09IDApIHtcbiAgICAgIHJldHVybiBbdGhpcy5ub2RlKCd0eXBlJywgJ3BsYWNlaG9sZGVyICgwKScpXTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IFt0aGlzLm5vZGUoJ2J5dGVzJywgYnVmKV07XG4gICAgaWYgKHNpZ25lckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCd2YWxpZCcsIDAgPD0gc2lnbmVySW5kZXgpKTtcbiAgICAgIGlmICgwIDw9IHNpZ25lckluZGV4KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdzaWduZWRCeScsIFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtzaWduZXJJbmRleF0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8IHR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgLy8gVE9ET1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSwgaGFzaFR5cGUgfSA9IFNjcmlwdFNpZ25hdHVyZS5kZWNvZGUoYnVmKTtcbiAgICAgIGNvbnN0IHIgPSBzaWduYXR1cmUuc3ViYXJyYXkoMCwgMzIpO1xuICAgICAgY29uc3QgcyA9IHNpZ25hdHVyZS5zdWJhcnJheSgzMik7XG5cbiAgICAgIGlmIChyLmxlbmd0aCAhPT0gMzIgfHwgcy5sZW5ndGggIT09IDMyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzY2FsYXIgbGVuZ3RoYCk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIHRoaXMubm9kZSgnaXNDYW5vbmljYWwnLCBzY3JpcHQuaXNDYW5vbmljYWxTY3JpcHRTaWduYXR1cmUoYnVmKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGFzaFR5cGUnLCBoYXNoVHlwZSksXG4gICAgICAgIHRoaXMubm9kZSgncicsIHIpLFxuICAgICAgICB0aGlzLm5vZGUoJ3MnLCBzKSxcbiAgICAgICAgdGhpcy5ub2RlKCdoaWdoUycsIGlzSGlnaFMocykpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlc1dpdGhTaWduZXJzKFxuICAgIHBhcnNlZDoge1xuICAgICAgc2NyaXB0VHlwZTpcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMztcbiAgICAgIHNpZ25hdHVyZXM6IChCdWZmZXIgfCAwKVtdO1xuICAgIH0sXG4gICAgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzID0gc2lnbmVkQnlMYWJlbHMgPyBbdGhpcy5ub2RlKCdzaWduZWQgYnknLCBgWyR7c2lnbmVkQnlMYWJlbHMuam9pbignLCAnKX1dYCldIDogW107XG4gICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5lY2RzYSB8fCB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2Nobm9ycikge1xuICAgICAgbm9kZXMucHVzaChcbiAgICAgICAgLi4ucGFyc2VkLnNpZ25hdHVyZXMubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+XG4gICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMucGFyc2VTaWduYXR1cmVCdWZmZXIocGFyc2VkLnNjcmlwdFR5cGUsIHMsIHNpZ25lckluZGV4ID8gc2lnbmVySW5kZXhbaV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZXMocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBub2RlczogUGFyc2VyTm9kZVtdID0gW107XG4gICAgaWYgKFxuICAgICAgJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCAmJlxuICAgICAgJ3B1YmxpY0tleXMnIGluIHBhcnNlZCAmJlxuICAgICAgJ3NjcmlwdFR5cGUnIGluIHBhcnNlZCAmJlxuICAgICAgcGFyc2VkLnNpZ25hdHVyZXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcGFyc2VkLnNjcmlwdFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiAmJiB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCeSA9IHV0eG9saWIuYml0Z28uZ2V0U2lnbmF0dXJlc1dpdGhQdWJsaWNLZXlzKFxuICAgICAgICAgIHRoaXMudHgsXG4gICAgICAgICAgdGhpcy5pbnB1dEluZGV4LFxuICAgICAgICAgIHRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRzLFxuICAgICAgICAgIHBhcnNlZC5wdWJsaWNLZXlzXG4gICAgICAgICk7XG4gICAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICAgIHNpZ25lZEJ5LmZsYXRNYXAoKHYsIGkpID0+ICh2ID8gW2kudG9TdHJpbmcoKV0gOiBbXSkpLFxuICAgICAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXMubWFwKChrOiBCdWZmZXIgfCAwKSA9PiAoayA9PT0gMCA/IC0xIDogc2lnbmVkQnkuaW5kZXhPZihrKSkpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICAgIGxldCBzaWduZWRCeUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwYXJzZWQucHVibGljS2V5cyAmJiBBcnJheS5pc0FycmF5KHBhcnNlZC5wdWJsaWNLZXlzKSkge1xuICAgICAgICAgIGNvbnN0IHBzYnQgPSB0aGlzLnR4O1xuICAgICAgICAgIHNpZ25lZEJ5TGFiZWxzID0gcGFyc2VkLnB1YmxpY0tleXMuZmxhdE1hcCgoazogQnVmZmVyLCBpKSA9PlxuICAgICAgICAgICAgQnVmZmVyLmlzQnVmZmVyKGspICYmIHBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dENvbW1vbih0aGlzLmlucHV0SW5kZXgsIGspID8gW2kudG9TdHJpbmcoKV0gOiBbXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogdGhlIGN1cnJlbnQgVXR4b1BzYnQgQVBJIGRvZXMgbm90IGFsbG93IHVzIHRvIGRldGVybWluZSB3aGljaCBzaWduZXIgY3JlYXRlZCB3aGljaCBzaWduYXR1cmVcbiAgICAgICAgY29uc3Qgc2lnbmVySW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIG5vZGVzLnB1c2goLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhwYXJzZWQsIHNpZ25lZEJ5TGFiZWxzLCBzaWduZXJJbmRleCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICBwYXJzZWQuc2lnbmF0dXJlc1xuICAgICAgICAgIC5tYXAoKHM6IEJ1ZmZlciB8IDApID0+XG4gICAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgIG5vZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIChwYXJzZWQuc2lnbmF0dXJlcyA/PyBbXSkubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHRoaXMubm9kZShpLCBzKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ25hdHVyZXMnLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0V2l0aFR5cGUocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAmJlxuICAgICAgKHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKSB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8XG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMucGFyc2VQdWJrZXlzKHBhcnNlZCksIHRoaXMucGFyc2VTaWduYXR1cmVzKHBhcnNlZCldKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLnNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2hIb2xsb3cnIHx8IHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3BraEhvbGxvdycpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlLCBbdGhpcy5ub2RlKCdpbmZvJywgZ2V0SG9sbG93U3BlbmRNZXNzYWdlKCkpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUgPz8gJ3Vua25vd24nKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KCk6IFBhcnNlck5vZGUge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlU2lnbmF0dXJlU2NyaXB0KHRoaXMudHgsIHRoaXMuaW5wdXRJbmRleCwgdGhpcy50eC5uZXR3b3JrKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVByZXZPdXQocHJldk91dHB1dDogdXR4b2xpYi5UeE91dHB1dDxiaWdpbnQ+IHwgdXR4b2xpYi5iaXRnby5Qc2J0SW5wdXQpOiBQYXJzZXJOb2RlW10ge1xuICAgIGxldCBzY3JpcHQ6IEJ1ZmZlcjtcbiAgICBsZXQgdmFsdWU6IGJpZ2ludDtcbiAgICBpZiAoJ3NjcmlwdCcgaW4gcHJldk91dHB1dCAmJiBwcmV2T3V0cHV0LnNjcmlwdCkge1xuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcHJldk91dHB1dCk7XG4gICAgfSBlbHNlIGlmICgnd2l0bmVzc1V0eG8nIGluIHByZXZPdXRwdXQgfHwgJ25vbldpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0KSB7XG4gICAgICBpZiAoISh0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHN0YXRlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRQcmV2T3V0KHByZXZPdXRwdXQsIHRoaXMudHgudHhJbnB1dHNbdGhpcy5pbnB1dEluZGV4XSwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5ub2RlKCdzY3JpcHQnLCAndW5rbm93bicpLCB0aGlzLm5vZGUoJ3ZhbHVlJywgJ3Vua25vd24nKV07XG4gICAgICB9XG4gICAgICAoeyBzY3JpcHQsIHZhbHVlIH0gPSByZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJldk91dHB1dCcpO1xuICAgIH1cblxuICAgIGxldCBhZGRyZXNzO1xuICAgIHRyeSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCB0aGlzLnR4Lm5ldHdvcmspO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFkZHJlc3MgPSAnKGVycm9yKSc7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3ZhbHVlJywgTnVtYmVyKHZhbHVlKSAvIDFlOCksXG4gICAgICB0aGlzLm5vZGUoJ3B1YlNjcmlwdCcsIHNjcmlwdCwgYWRkcmVzcyA/IFt0aGlzLm5vZGUoJ2FkZHJlc3MnLCBhZGRyZXNzKV0gOiB1bmRlZmluZWQpLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVBzYnRJbnB1dChpbnB1dDogdXR4b2xpYi5iaXRnby5Qc2J0SW5wdXQpOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh7XG4gICAgICBtdXNpZzJQYXJ0aWNpcGFudHM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpY2lwYW50cyhpbnB1dCksXG4gICAgICBtdXNpZzJOb25jZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMk5vbmNlcyhpbnB1dCksXG4gICAgICBtdXNpZzJQYXJ0aWFsU2lnbmF0dXJlczogdXR4b2xpYi5iaXRnby5tdXNpZzIucGFyc2VQc2J0TXVzaWcyUGFydGlhbFNpZ3MoaW5wdXQpLFxuICAgIH0pLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT4gKHZhbHVlID8gW3BhcnNlVW5rbm93bih0aGlzLCBrZXksIHZhbHVlKV0gOiBbXSkpO1xuICB9XG5cbiAgcGFyc2VJbnB1dCgpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBwc2J0SW5wdXQgPSB0aGlzLnR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCA/IHRoaXMudHguZGF0YS5pbnB1dHNbdGhpcy5pbnB1dEluZGV4XSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7IHR4aWQ6IHByZXZUeGlkLCB2b3V0LCBzZXF1ZW5jZSwgc2NyaXB0LCB3aXRuZXNzIH0gPSBnZXRQYXJzZXJUeElucHV0UHJvcGVydGllcyh0aGlzLmlucHV0LCBwc2J0SW5wdXQpO1xuICAgIGNvbnN0IHByZXZPdXRwdXQgPSB0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0cz8uW3RoaXMuaW5wdXRJbmRleF07XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLmlucHV0SW5kZXgsIGdldE91dHB1dElkKHRoaXMuaW5wdXQpLCBbXG4gICAgICB0aGlzLm5vZGUoJ3NlcXVlbmNlJywgc2VxdWVuY2UgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvQnVmZmVyVUludDMyQkUoc2VxdWVuY2UpKSxcbiAgICAgIHRoaXMucGFyc2VJbnB1dFNjcmlwdChzY3JpcHQpLFxuICAgICAgdGhpcy5wYXJzZVdpdG5lc3Mod2l0bmVzcyksXG4gICAgICB0aGlzLnBhcnNlU2lnU2NyaXB0KCksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVByZXZPdXQocHNidElucHV0KSA6IFtdKSxcbiAgICAgIC4uLihwcmV2T3V0cHV0XG4gICAgICAgID8gbmV3IE91dHB1dFBhcnNlcih0aGlzLnR4Lm5ldHdvcmssIHByZXZUeGlkLCB2b3V0LCBwcmV2T3V0cHV0LCB0aGlzLmNoYWluSW5mbywgdGhpcy5wYXJhbXMpLnBhcnNlU3BlbmQoe1xuICAgICAgICAgICAgY29uZmxpY3Q6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVBzYnRJbnB1dChwc2J0SW5wdXQpIDogW10pLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5wdXRQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQWdEO0FBQ2hELGlEQUF3RDtBQUV4RCxxQ0FBOEM7QUFDOUMseUNBQTZGO0FBQzdGLDJEQUF1RztBQUN2RyxtQ0FBa0M7QUFFbEMsaURBQThDO0FBQzlDLGlEQUE4QztBQUM5QyxpREFBOEM7QUFXOUMsU0FBUyxXQUFXLENBQUMsQ0FBa0M7SUFDckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsRUFBWSxFQUFFLFVBQWtCLEVBQUUsT0FBd0I7SUFDdEYsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQ0wsSUFBQSwwQ0FBc0IsRUFBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUM5RyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFTO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFD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QyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxHQUFHLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsSUFBSSwyQkFBWSxDQUNkLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUNmLFFBQVEsRUFDUixJQUFJLEVBQ0osVUFBVSxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDLG9CQUFvQixDQUFDO29CQUNyQixRQUFRLEVBQUUsSUFBSTtpQkFDZixDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBelRELGtDQXlUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgc2NyaXB0LCBTY3JpcHRTaWduYXR1cmUgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXMsIGdldFByZXZPdXQsIFBhcnNlclR4LCBQYXJzZXJUeElucHV0IH0gZnJvbSAnLi9QYXJzZXJUeCc7XG5pbXBvcnQgeyBnZXRIb2xsb3dTcGVuZE1lc3NhZ2UsIEhvbGxvd1NlZ3dpdFNwZW5kLCBwYXJzZUhvbGxvd1NlZ3dpdFNwZW5kIH0gZnJvbSAnLi9ob2xsb3dTZWd3aXRTcGVuZCc7XG5pbXBvcnQgeyBpc0hpZ2hTIH0gZnJvbSAnLi9lY2RzYSc7XG5pbXBvcnQgeyBDaGFpbkluZm8gfSBmcm9tICcuL1R4UGFyc2VyJztcbmltcG9ydCB7IE91dHB1dFBhcnNlciB9IGZyb20gJy4vT3V0cHV0UGFyc2VyJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcbmltcG9ydCB7IFNjcmlwdFBhcnNlciB9IGZyb20gJy4vU2NyaXB0UGFyc2VyJztcblxudHlwZSBQYXJzZWRTaWduYXR1cmVTY3JpcHQgPVxuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJtc1xuICB8IHV0eG9saWIuYml0Z28uUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJzaFAycGtcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRQMm1zXG4gIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRQc2J0UDJzaFAycGtcbiAgfCB1dHhvbGliLmJpdGdvLlBhcnNlZFBzYnRUYXByb290XG4gIHwgSG9sbG93U2Vnd2l0U3BlbmQ7XG5cbmZ1bmN0aW9uIGdldE91dHB1dElkKHY6IHsgaGFzaDogQnVmZmVyOyBpbmRleDogbnVtYmVyIH0pOiBzdHJpbmcge1xuICByZXR1cm4gdXR4b2xpYi5iaXRnby5mb3JtYXRPdXRwdXRJZCh1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQodikpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdCh0eDogUGFyc2VyVHgsIGlucHV0SW5kZXg6IG51bWJlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gKFxuICAgICAgcGFyc2VIb2xsb3dTZWd3aXRTcGVuZCh0eC5pbnNbaW5wdXRJbmRleF0sIG5ldHdvcmspIHx8IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQodHguaW5zW2lucHV0SW5kZXhdKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHV0eG9saWIuYml0Z28ucGFyc2VQc2J0SW5wdXQodHguZGF0YS5pbnB1dHNbaW5wdXRJbmRleF0pO1xufVxuXG5mdW5jdGlvbiB0b0J1ZmZlclVJbnQzMkJFKG46IG51bWJlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgYnVmLndyaXRlVUludDMyTEUobiwgMCk7XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnB1dFBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaXZhdGUgaW5wdXQ6IFBhcnNlclR4SW5wdXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0eGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0eDogUGFyc2VyVHgsXG4gICAgcHJpdmF0ZSBpbnB1dEluZGV4OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBjaGFpbkluZm86IENoYWluSW5mbyxcbiAgICBwcml2YXRlIHBhcmFtczoge1xuICAgICAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gICAgICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2NyaXB0RGF0YTogYm9vbGVhbjtcbiAgICAgIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgICAgICBzY3JpcHQ6IGJvb2xlYW47XG4gICAgICAgIGVjZHNhOiBib29sZWFuO1xuICAgICAgICBzY2hub3JyOiBib29sZWFuO1xuICAgICAgfTtcbiAgICAgIHBhcnNlRXJyb3I/OiAndGhyb3cnIHwgJ2NvbnRpbnVlJztcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKHsgcGFyc2VFcnJvcjogcGFyYW1zLnBhcnNlRXJyb3IgfSk7XG4gICAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRoaXMuaW5wdXQgPSB0eC5pbnNbaW5wdXRJbmRleF07XG4gICAgfSBlbHNlIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpIHtcbiAgICAgIHRoaXMuaW5wdXQgPSB0eC50eElucHV0c1tpbnB1dEluZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNjcmlwdEFzbSh0eXBlOiBzdHJpbmcsIHBhcnQ6IEJ1ZmZlciwgaTogbnVtYmVyLCBuOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChcbiAgICAgICh0eXBlID09PSAndGFwcm9vdCcgJiYgaSA9PT0gbiAtIDIpIHx8XG4gICAgICAoKHR5cGUgPT09ICdzY3JpcHRoYXNoJyB8fCB0eXBlID09PSAnd2l0bmVzc3NjcmlwdGhhc2gnKSAmJiBpID09PSBuIC0gMSlcbiAgICApIHtcbiAgICAgIHJldHVybiBTY3JpcHRQYXJzZXIudG9BU00ocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTY3JpcHRQYXJ0cyh0eXBlOiBzdHJpbmcsIHBhcnRzOiBBcnJheTxCdWZmZXIgfCBudW1iZXI+KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gcGFydHMubWFwKCh2LCBpKSA9PiB7XG4gICAgICBsZXQgYXNtTm9kZTogUGFyc2VyTm9kZSB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5wYXJzZVNjcmlwdEFzbSAmJiBCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVNjcmlwdEFzbSh0eXBlLCB2LCBpLCBwYXJ0cy5sZW5ndGgpO1xuICAgICAgICBhc21Ob2RlID0gcGFyc2VkID8gdGhpcy5ub2RlKCdhc20nLCBwYXJzZWQpIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ub2RlKGksIHRoaXMucGFyYW1zLnBhcnNlU2NyaXB0RGF0YSA/IHYgOiB1bmRlZmluZWQsIGFzbU5vZGUgPyBbYXNtTm9kZV0gOiB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VJbnB1dFNjcmlwdChidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZCk6IFBhcnNlck5vZGUge1xuICAgIGxldCB2YWx1ZTtcbiAgICBsZXQgbm9kZXM7XG4gICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoICYmIHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5zY3JpcHQpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB1dHhvbGliLmNsYXNzaWZ5LmlucHV0KGJ1ZmZlciwgdHJ1ZSkgPz8gJ3Vua25vd24nO1xuICAgICAgY29uc3QgZGVjb21waWxlZCA9IHV0eG9saWIuc2NyaXB0LmRlY29tcGlsZShidWZmZXIpO1xuICAgICAgaWYgKGRlY29tcGlsZWQpIHtcbiAgICAgICAgbm9kZXMgPSB0aGlzLnBhcnNlU2NyaXB0UGFydHModHlwZSwgZGVjb21waWxlZCk7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gYnVmZmVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoJ3NjcmlwdFNpZycsIHZhbHVlLCBub2Rlcyk7XG4gIH1cblxuICBwYXJzZVdpdG5lc3Moc2NyaXB0OiBCdWZmZXJbXSB8IHVuZGVmaW5lZCk6IFBhcnNlck5vZGUge1xuICAgIGlmICghc2NyaXB0IHx8IHNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3dpdG5lc3MnLCAnW10nKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHV0eG9saWIuY2xhc3NpZnkud2l0bmVzcyhzY3JpcHQsIHRydWUpID8/ICd1bmtub3duJztcbiAgICByZXR1cm4gdGhpcy5ub2RlKCd3aXRuZXNzJywgdHlwZSwgdGhpcy5wYXJhbXMucGFyc2VTY3JpcHREYXRhID8gdGhpcy5wYXJzZVNjcmlwdFBhcnRzKHR5cGUsIHNjcmlwdCkgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcGFyc2VQdWJrZXlzKHBhcnNlZDogUGFyc2VkU2lnbmF0dXJlU2NyaXB0KTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKCdwdWJsaWNLZXlzJyBpbiBwYXJzZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICdwdWJrZXlzJyxcbiAgICAgICAgcGFyc2VkLnB1YmxpY0tleXMubGVuZ3RoLFxuICAgICAgICBwYXJzZWQucHVibGljS2V5cy5tYXAoKGssIGkpID0+IHRoaXMubm9kZShpLCBrKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3B1YmtleXMnLCAnW10nKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVNpZ25hdHVyZUJ1ZmZlcihcbiAgICB0eXBlOlxuICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mM1xuICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrLFxuICAgIGJ1ZjogQnVmZmVyIHwgMCxcbiAgICBzaWduZXJJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKGJ1ZiA9PT0gMCkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3R5cGUnLCAncGxhY2Vob2xkZXIgKDApJyldO1xuICAgIH1cblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgndHlwZScsICdwbGFjZWhvbGRlciAoZW1wdHkgQnVmZmVyKScpXTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IFt0aGlzLm5vZGUoJ2J5dGVzJywgYnVmKV07XG4gICAgaWYgKHNpZ25lckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCd2YWxpZCcsIDAgPD0gc2lnbmVySW5kZXgpKTtcbiAgICAgIGlmICgwIDw9IHNpZ25lckluZGV4KSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdzaWduZWRCeScsIFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtzaWduZXJJbmRleF0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8IHR5cGUgPT09ICd0YXByb290S2V5UGF0aFNwZW5kJykge1xuICAgICAgLy8gVE9ET1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSwgaGFzaFR5cGUgfSA9IFNjcmlwdFNpZ25hdHVyZS5kZWNvZGUoYnVmKTtcbiAgICAgIGNvbnN0IHIgPSBzaWduYXR1cmUuc3ViYXJyYXkoMCwgMzIpO1xuICAgICAgY29uc3QgcyA9IHNpZ25hdHVyZS5zdWJhcnJheSgzMik7XG5cbiAgICAgIGlmIChyLmxlbmd0aCAhPT0gMzIgfHwgcy5sZW5ndGggIT09IDMyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzY2FsYXIgbGVuZ3RoYCk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgIHRoaXMubm9kZSgnaXNDYW5vbmljYWwnLCBzY3JpcHQuaXNDYW5vbmljYWxTY3JpcHRTaWduYXR1cmUoYnVmKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGFzaFR5cGUnLCBoYXNoVHlwZSksXG4gICAgICAgIHRoaXMubm9kZSgncicsIHIpLFxuICAgICAgICB0aGlzLm5vZGUoJ3MnLCBzKSxcbiAgICAgICAgdGhpcy5ub2RlKCdoaWdoUycsIGlzSGlnaFMocykpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlc1dpdGhTaWduZXJzKFxuICAgIHBhcnNlZDoge1xuICAgICAgc2NyaXB0VHlwZTpcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjNcbiAgICAgICAgfCB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZVAyc2hQMnBrXG4gICAgICAgIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMztcbiAgICAgIHNpZ25hdHVyZXM6IChCdWZmZXIgfCAwKVtdO1xuICAgIH0sXG4gICAgc2lnbmVkQnlMYWJlbHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICAgIHNpZ25lckluZGV4OiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBQYXJzZXJOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzID0gc2lnbmVkQnlMYWJlbHMgPyBbdGhpcy5ub2RlKCdzaWduZWQgYnknLCBgWyR7c2lnbmVkQnlMYWJlbHMuam9pbignLCAnKX1dYCldIDogW107XG4gICAgaWYgKHRoaXMucGFyYW1zLnBhcnNlU2lnbmF0dXJlRGF0YS5lY2RzYSB8fCB0aGlzLnBhcmFtcy5wYXJzZVNpZ25hdHVyZURhdGEuc2Nobm9ycikge1xuICAgICAgbm9kZXMucHVzaChcbiAgICAgICAgLi4ucGFyc2VkLnNpZ25hdHVyZXMubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB0aGlzLnBhcnNlU2lnbmF0dXJlQnVmZmVyKHBhcnNlZC5zY3JpcHRUeXBlLCBzLCBzaWduZXJJbmRleCA/IHNpZ25lckluZGV4W2ldIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKGksIHVuZGVmaW5lZCwgW3RoaXMubm9kZSgnYnVmJywgcyksIHRoaXMuaGFuZGxlUGFyc2VFcnJvcihlKV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHBhcnNlU2lnbmF0dXJlcyhwYXJzZWQ6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdCk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IG5vZGVzOiBQYXJzZXJOb2RlW10gPSBbXTtcbiAgICBpZiAoXG4gICAgICAnc2lnbmF0dXJlcycgaW4gcGFyc2VkICYmXG4gICAgICAncHVibGljS2V5cycgaW4gcGFyc2VkICYmXG4gICAgICAnc2NyaXB0VHlwZScgaW4gcGFyc2VkICYmXG4gICAgICBwYXJzZWQuc2lnbmF0dXJlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uICYmIHRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gdXR4b2xpYi5iaXRnby5nZXRTaWduYXR1cmVzV2l0aFB1YmxpY0tleXMoXG4gICAgICAgICAgdGhpcy50eCxcbiAgICAgICAgICB0aGlzLmlucHV0SW5kZXgsXG4gICAgICAgICAgdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHMsXG4gICAgICAgICAgcGFyc2VkLnB1YmxpY0tleXNcbiAgICAgICAgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBub2Rlcy5wdXNoKFxuICAgICAgICAgICAgLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhcbiAgICAgICAgICAgICAgcGFyc2VkLFxuICAgICAgICAgICAgICBzaWduZWRCeS5mbGF0TWFwKCh2LCBpKSA9PiAodiA/IFtpLnRvU3RyaW5nKCldIDogW10pKSxcbiAgICAgICAgICAgICAgcGFyc2VkLnNpZ25hdHVyZXMubWFwKChrOiBCdWZmZXIgfCAwKSA9PiAoayA9PT0gMCA/IC0xIDogc2lnbmVkQnkuaW5kZXhPZihrKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdwYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycycsIHVuZGVmaW5lZCwgW3RoaXMuaGFuZGxlUGFyc2VFcnJvcihlKV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgICAgIGxldCBzaWduZWRCeUxhYmVsczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwYXJzZWQucHVibGljS2V5cyAmJiBBcnJheS5pc0FycmF5KHBhcnNlZC5wdWJsaWNLZXlzKSkge1xuICAgICAgICAgIGNvbnN0IHBzYnQgPSB0aGlzLnR4O1xuICAgICAgICAgIHNpZ25lZEJ5TGFiZWxzID0gcGFyc2VkLnB1YmxpY0tleXMuZmxhdE1hcCgoazogQnVmZmVyLCBpKSA9PlxuICAgICAgICAgICAgQnVmZmVyLmlzQnVmZmVyKGspICYmIHBzYnQudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dENvbW1vbih0aGlzLmlucHV0SW5kZXgsIGspID8gW2kudG9TdHJpbmcoKV0gOiBbXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogdGhlIGN1cnJlbnQgVXR4b1BzYnQgQVBJIGRvZXMgbm90IGFsbG93IHVzIHRvIGRldGVybWluZSB3aGljaCBzaWduZXIgY3JlYXRlZCB3aGljaCBzaWduYXR1cmVcbiAgICAgICAgY29uc3Qgc2lnbmVySW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIG5vZGVzLnB1c2goLi4udGhpcy5wYXJzZVNpZ25hdHVyZXNXaXRoU2lnbmVycyhwYXJzZWQsIHNpZ25lZEJ5TGFiZWxzLCBzaWduZXJJbmRleCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICBwYXJzZWQuc2lnbmF0dXJlc1xuICAgICAgICAgIC5tYXAoKHM6IEJ1ZmZlciB8IDApID0+XG4gICAgICAgICAgICB1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUocykgPyAnW10nIDogQnVmZmVyLmlzQnVmZmVyKHMpID8gYFske3MubGVuZ3RofWJ5dGVdYCA6IGBbJHtzfV1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgIG5vZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoJ3NpZ25hdHVyZXMnIGluIHBhcnNlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICAgJ3NpZ25hdHVyZXMnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIChwYXJzZWQuc2lnbmF0dXJlcyA/PyBbXSkubWFwKChzOiBCdWZmZXIgfCAwLCBpOiBudW1iZXIpID0+IHRoaXMubm9kZShpLCBzKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ25hdHVyZXMnLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0V2l0aFR5cGUocGFyc2VkOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQpOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAoXG4gICAgICBwYXJzZWQuc2NyaXB0VHlwZSAmJlxuICAgICAgKHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5pc1NjcmlwdFR5cGUyT2YzKHBhcnNlZC5zY3JpcHRUeXBlKSB8fFxuICAgICAgICBwYXJzZWQuc2NyaXB0VHlwZSA9PT0gJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnIHx8XG4gICAgICAgIHBhcnNlZC5zY3JpcHRUeXBlID09PSAndGFwcm9vdEtleVBhdGhTcGVuZCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKCdzaWdTY3JpcHQnLCBwYXJzZWQuc2NyaXB0VHlwZSwgW3RoaXMucGFyc2VQdWJrZXlzKHBhcnNlZCksIHRoaXMucGFyc2VTaWduYXR1cmVzKHBhcnNlZCldKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLnNjcmlwdFR5cGUgPT09ICdwMnNoUDJ3c2hIb2xsb3cnIHx8IHBhcnNlZC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3BraEhvbGxvdycpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoJ3NpZ1NjcmlwdCcsIHBhcnNlZC5zY3JpcHRUeXBlLCBbdGhpcy5ub2RlKCdpbmZvJywgZ2V0SG9sbG93U3BlbmRNZXNzYWdlKCkpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgcGFyc2VkLnNjcmlwdFR5cGUgPz8gJ3Vua25vd24nKTtcbiAgfVxuXG4gIHBhcnNlU2lnU2NyaXB0KCk6IFBhcnNlck5vZGUge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVNpZ1NjcmlwdFdpdGhUeXBlKHBhcnNlU2lnbmF0dXJlU2NyaXB0KHRoaXMudHgsIHRoaXMuaW5wdXRJbmRleCwgdGhpcy50eC5uZXR3b3JrKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZSgnc2lnU2NyaXB0JywgdW5kZWZpbmVkLCBbdGhpcy5oYW5kbGVQYXJzZUVycm9yKGUpXSk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VQcmV2T3V0KHByZXZPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PiB8IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgc2NyaXB0OiBCdWZmZXI7XG4gICAgbGV0IHZhbHVlOiBiaWdpbnQ7XG4gICAgaWYgKCdzY3JpcHQnIGluIHByZXZPdXRwdXQgJiYgcHJldk91dHB1dC5zY3JpcHQpIHtcbiAgICAgICh7IHNjcmlwdCwgdmFsdWUgfSA9IHByZXZPdXRwdXQpO1xuICAgIH0gZWxzZSBpZiAoJ3dpdG5lc3NVdHhvJyBpbiBwcmV2T3V0cHV0IHx8ICdub25XaXRuZXNzVXR4bycgaW4gcHJldk91dHB1dCkge1xuICAgICAgaWYgKCEodGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UHJldk91dChwcmV2T3V0cHV0LCB0aGlzLnR4LnR4SW5wdXRzW3RoaXMuaW5wdXRJbmRleF0sIHRoaXMudHgubmV0d29yayk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gW3RoaXMubm9kZSgnc2NyaXB0JywgJ3Vua25vd24nKSwgdGhpcy5ub2RlKCd2YWx1ZScsICd1bmtub3duJyldO1xuICAgICAgfVxuICAgICAgKHsgc2NyaXB0LCB2YWx1ZSB9ID0gcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByZXZPdXRwdXQnKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzcztcbiAgICB0cnkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgdGhpcy50eC5uZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhZGRyZXNzID0gJyhlcnJvciknO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCd2YWx1ZScsIE51bWJlcih2YWx1ZSkgLyAxZTgpLFxuICAgICAgdGhpcy5ub2RlKCdwdWJTY3JpcHQnLCBzY3JpcHQsIGFkZHJlc3MgPyBbdGhpcy5ub2RlKCdhZGRyZXNzJywgYWRkcmVzcyldIDogdW5kZWZpbmVkKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VQc2J0SW5wdXQoaW5wdXQ6IHV0eG9saWIuYml0Z28uUHNidElucHV0KTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICAgbXVzaWcyUGFydGljaXBhbnRzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJQYXJ0aWNpcGFudHMoaW5wdXQpLFxuICAgICAgbXVzaWcyTm9uY2VzOiB1dHhvbGliLmJpdGdvLm11c2lnMi5wYXJzZVBzYnRNdXNpZzJOb25jZXMoaW5wdXQpLFxuICAgICAgbXVzaWcyUGFydGlhbFNpZ25hdHVyZXM6IHV0eG9saWIuYml0Z28ubXVzaWcyLnBhcnNlUHNidE11c2lnMlBhcnRpYWxTaWdzKGlucHV0KSxcbiAgICB9KS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZSA/IFtwYXJzZVVua25vd24odGhpcywga2V5LCB2YWx1ZSldIDogW10pKTtcbiAgfVxuXG4gIHBhcnNlSW5wdXQoKTogUGFyc2VyTm9kZSB7XG4gICAgY29uc3QgcHNidElucHV0ID0gdGhpcy50eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyB0aGlzLnR4LmRhdGEuaW5wdXRzW3RoaXMuaW5wdXRJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgeyB0eGlkOiBwcmV2VHhpZCwgdm91dCwgc2VxdWVuY2UsIHNjcmlwdCwgd2l0bmVzcyB9ID0gZ2V0UGFyc2VyVHhJbnB1dFByb3BlcnRpZXModGhpcy5pbnB1dCwgcHNidElucHV0KTtcbiAgICBjb25zdCBwcmV2T3V0cHV0ID0gdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dHM/Llt0aGlzLmlucHV0SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5pbnB1dEluZGV4LCBnZXRPdXRwdXRJZCh0aGlzLmlucHV0KSwgW1xuICAgICAgdGhpcy5ub2RlKCdzZXF1ZW5jZScsIHNlcXVlbmNlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b0J1ZmZlclVJbnQzMkJFKHNlcXVlbmNlKSksXG4gICAgICB0aGlzLnBhcnNlSW5wdXRTY3JpcHQoc2NyaXB0KSxcbiAgICAgIHRoaXMucGFyc2VXaXRuZXNzKHdpdG5lc3MpLFxuICAgICAgdGhpcy5wYXJzZVNpZ1NjcmlwdCgpLFxuICAgICAgLi4uKHBzYnRJbnB1dCA/IHRoaXMucGFyc2VQcmV2T3V0KHBzYnRJbnB1dCkgOiBbXSksXG4gICAgICAuLi4ocHJldk91dHB1dFxuICAgICAgICA/IG5ldyBPdXRwdXRQYXJzZXIoXG4gICAgICAgICAgICB0aGlzLnR4Lm5ldHdvcmssXG4gICAgICAgICAgICBwcmV2VHhpZCxcbiAgICAgICAgICAgIHZvdXQsXG4gICAgICAgICAgICBwcmV2T3V0cHV0LFxuICAgICAgICAgICAgdGhpcy5jaGFpbkluZm8sXG4gICAgICAgICAgICB0aGlzLnBhcmFtc1xuICAgICAgICAgICkucGFyc2VQcmV2T3V0cHV0U3BlbmQoe1xuICAgICAgICAgICAgY29uZmxpY3Q6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4ocHNidElucHV0ID8gdGhpcy5wYXJzZVBzYnRJbnB1dChwc2J0SW5wdXQpIDogW10pLFxuICAgIF0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
1
+ import { Network } from '@bitgo-beta/utxo-lib';
2
2
  import { ChainInfo } from './TxParser';
3
3
  import { Parser, ParserNode } from './Parser';
4
- import { Network } from '@bitgo-beta/utxo-lib';
5
4
  export declare class OutputParser extends Parser {
6
5
  private network;
7
6
  private txid;
@@ -16,9 +15,10 @@ export declare class OutputParser extends Parser {
16
15
  parseOutputScript: boolean;
17
16
  parseError?: 'throw' | 'continue';
18
17
  });
19
- parseSpend(params: {
18
+ parsePrevOutputSpend(params: {
20
19
  conflict: boolean;
21
20
  }): ParserNode[];
21
+ parseOutputSpend(): ParserNode[];
22
22
  parseOutput(): ParserNode;
23
23
  }
24
24
  //# sourceMappingURL=OutputParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputParser.d.ts","sourceRoot":"","sources":["../../src/OutputParser.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,qBAAa,YAAa,SAAQ,MAAM;IAEpC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBALN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;QACd,iBAAiB,EAAE,OAAO,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACnC;IAKH,UAAU,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IAgBvD,WAAW,IAAI,UAAU;CAkB1B"}
1
+ {"version":3,"file":"OutputParser.d.ts","sourceRoot":"","sources":["../../src/OutputParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI9C,qBAAa,YAAa,SAAQ,MAAM;IAEpC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBALN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;QACd,iBAAiB,EAAE,OAAO,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACnC;IAKH,oBAAoB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IAgBjE,gBAAgB,IAAI,UAAU,EAAE;IAahC,WAAW,IAAI,UAAU;CAkB1B"}
@@ -15,7 +15,7 @@ class OutputParser extends Parser_1.Parser {
15
15
  this.chainInfo = chainInfo;
16
16
  this.params = params;
17
17
  }
18
- parseSpend(params) {
18
+ parsePrevOutputSpend(params) {
19
19
  if (!this.chainInfo.prevOutputSpends || !this.chainInfo.prevOutputSpends[this.outputIndex]) {
20
20
  // no spend data available
21
21
  return [];
@@ -30,6 +30,19 @@ class OutputParser extends Parser_1.Parser {
30
30
  }
31
31
  return [this.node('spent', `${spend.txid}:${spend.vin}`, params.conflict ? [this.node('conflict', true)] : [])];
32
32
  }
33
+ parseOutputSpend() {
34
+ if (!this.chainInfo.outputSpends || !this.chainInfo.outputSpends[this.outputIndex]) {
35
+ // no spend data available
36
+ return [];
37
+ }
38
+ const spend = this.chainInfo.outputSpends[this.outputIndex];
39
+ if (spend.txid === undefined) {
40
+ return [this.node('spent', false)];
41
+ }
42
+ else {
43
+ return [this.node('spent', `${spend.txid}:${spend.vin}`)];
44
+ }
45
+ }
33
46
  parseOutput() {
34
47
  let address;
35
48
  try {
@@ -39,14 +52,14 @@ class OutputParser extends Parser_1.Parser {
39
52
  // ignore
40
53
  }
41
54
  const addressParser = new AddressParser_1.AddressParser({ network: this.network, all: false, convert: false });
42
- return this.node(this.outputIndex, address !== null && address !== void 0 ? address : '(no address)', [
43
- this.node(`value`, format_1.formatSat(this.output.value)),
55
+ return this.node(this.outputIndex, address ?? '(no address)', [
56
+ this.node(`value`, (0, format_1.formatSat)(this.output.value)),
44
57
  ...(this.params.parseOutputScript || address === undefined
45
58
  ? addressParser.parseOutputScript(this.output.script)
46
59
  : []),
47
- ...this.parseSpend({ conflict: false }),
60
+ ...this.parseOutputSpend(),
48
61
  ]);
49
62
  }
50
63
  }
51
64
  exports.OutputParser = OutputParser;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL091dHB1dFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBZ0Q7QUFFaEQscUNBQThDO0FBQzlDLG1EQUFnRDtBQUNoRCxxQ0FBcUM7QUFHckMsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUN0QyxZQUNVLE9BQWdCLEVBQ2hCLElBQVksRUFDWixXQUFtQixFQUNuQixNQUF5QyxFQUN6QyxTQUFvQixFQUNwQixNQUdQO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBVk4sWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFDekMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUdiO0lBR0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUE2QjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzFGLDBCQUEwQjtZQUMxQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzVCLDREQUE0RDtZQUM1RCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJO1lBQ0YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixTQUFTO1NBQ1Y7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRS9GLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLGNBQWMsRUFBRTtZQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksT0FBTyxLQUFLLFNBQVM7Z0JBQ3hELENBQUMsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakRELG9DQWlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgQ2hhaW5JbmZvIH0gZnJvbSAnLi9UeFBhcnNlcic7XG5pbXBvcnQgeyBQYXJzZXIsIFBhcnNlck5vZGUgfSBmcm9tICcuL1BhcnNlcic7XG5pbXBvcnQgeyBBZGRyZXNzUGFyc2VyIH0gZnJvbSAnLi9BZGRyZXNzUGFyc2VyJztcbmltcG9ydCB7IGZvcm1hdFNhdCB9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBjbGFzcyBPdXRwdXRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5ldHdvcms6IE5ldHdvcmssXG4gICAgcHJpdmF0ZSB0eGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvdXRwdXRJbmRleDogbnVtYmVyLFxuICAgIHByaXZhdGUgb3V0cHV0OiB7IHNjcmlwdDogQnVmZmVyOyB2YWx1ZTogYmlnaW50IH0sXG4gICAgcHJpdmF0ZSBjaGFpbkluZm86IENoYWluSW5mbyxcbiAgICBwcml2YXRlIHBhcmFtczoge1xuICAgICAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gICAgICBwYXJzZUVycm9yPzogJ3Rocm93JyB8ICdjb250aW51ZSc7XG4gICAgfVxuICApIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICB9XG5cbiAgcGFyc2VTcGVuZChwYXJhbXM6IHsgY29uZmxpY3Q6IGJvb2xlYW4gfSk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKCF0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0U3BlbmRzIHx8ICF0aGlzLmNoYWluSW5mby5wcmV2T3V0cHV0U3BlbmRzW3RoaXMub3V0cHV0SW5kZXhdKSB7XG4gICAgICAvLyBubyBzcGVuZCBkYXRhIGF2YWlsYWJsZVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBzcGVuZCA9IHRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRTcGVuZHNbdGhpcy5vdXRwdXRJbmRleF07XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3NwZW50JywgZmFsc2UpXTtcbiAgICB9XG4gICAgaWYgKHNwZW5kLnR4aWQgPT09IHRoaXMudHhpZCkge1xuICAgICAgLy8gaWYgaW5wdXQgaXMgc3BlbnQgYnkgdGhpcyB0cmFuc2FjdGlvbiB3ZSBkb24ndCBkaXNwbGF5IGl0XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBbdGhpcy5ub2RlKCdzcGVudCcsIGAke3NwZW5kLnR4aWR9OiR7c3BlbmQudmlufWAsIHBhcmFtcy5jb25mbGljdCA/IFt0aGlzLm5vZGUoJ2NvbmZsaWN0JywgdHJ1ZSldIDogW10pXTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0KCk6IFBhcnNlck5vZGUge1xuICAgIGxldCBhZGRyZXNzO1xuICAgIHRyeSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQodGhpcy5vdXRwdXQuc2NyaXB0LCB0aGlzLm5ldHdvcmspO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGlnbm9yZVxuICAgIH1cblxuICAgIGNvbnN0IGFkZHJlc3NQYXJzZXIgPSBuZXcgQWRkcmVzc1BhcnNlcih7IG5ldHdvcms6IHRoaXMubmV0d29yaywgYWxsOiBmYWxzZSwgY29udmVydDogZmFsc2UgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMub3V0cHV0SW5kZXgsIGFkZHJlc3MgPz8gJyhubyBhZGRyZXNzKScsIFtcbiAgICAgIHRoaXMubm9kZShgdmFsdWVgLCBmb3JtYXRTYXQodGhpcy5vdXRwdXQudmFsdWUpKSxcbiAgICAgIC4uLih0aGlzLnBhcmFtcy5wYXJzZU91dHB1dFNjcmlwdCB8fCBhZGRyZXNzID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBhZGRyZXNzUGFyc2VyLnBhcnNlT3V0cHV0U2NyaXB0KHRoaXMub3V0cHV0LnNjcmlwdClcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi50aGlzLnBhcnNlU3BlbmQoeyBjb25mbGljdDogZmFsc2UgfSksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL091dHB1dFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBZ0Q7QUFJaEQscUNBQThDO0FBQzlDLG1EQUFnRDtBQUNoRCxxQ0FBcUM7QUFFckMsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUN0QyxZQUNVLE9BQWdCLEVBQ2hCLElBQVksRUFDWixXQUFtQixFQUNuQixNQUF5QyxFQUN6QyxTQUFvQixFQUNwQixNQUdQO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBVk4sWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFDekMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUdiO0lBR0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQTZCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMzRiwwQkFBMEI7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLDREQUE0RDtZQUM1RCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ25GLDBCQUEwQjtZQUMxQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRS9GLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUU7WUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBQSxrQkFBUyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLElBQUksT0FBTyxLQUFLLFNBQVM7Z0JBQ3hELENBQUMsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE5REQsb0NBOERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBDaGFpbkluZm8gfSBmcm9tICcuL1R4UGFyc2VyJztcbmltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCB7IEFkZHJlc3NQYXJzZXIgfSBmcm9tICcuL0FkZHJlc3NQYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0U2F0IH0gZnJvbSAnLi9mb3JtYXQnO1xuXG5leHBvcnQgY2xhc3MgT3V0cHV0UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZXR3b3JrOiBOZXR3b3JrLFxuICAgIHByaXZhdGUgdHhpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgICBwcml2YXRlIG91dHB1dDogeyBzY3JpcHQ6IEJ1ZmZlcjsgdmFsdWU6IGJpZ2ludCB9LFxuICAgIHByaXZhdGUgY2hhaW5JbmZvOiBDaGFpbkluZm8sXG4gICAgcHJpdmF0ZSBwYXJhbXM6IHtcbiAgICAgIHBhcnNlT3V0cHV0U2NyaXB0OiBib29sZWFuO1xuICAgICAgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnO1xuICAgIH1cbiAgKSB7XG4gICAgc3VwZXIocGFyYW1zKTtcbiAgfVxuXG4gIHBhcnNlUHJldk91dHB1dFNwZW5kKHBhcmFtczogeyBjb25mbGljdDogYm9vbGVhbiB9KTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAoIXRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRTcGVuZHMgfHwgIXRoaXMuY2hhaW5JbmZvLnByZXZPdXRwdXRTcGVuZHNbdGhpcy5vdXRwdXRJbmRleF0pIHtcbiAgICAgIC8vIG5vIHNwZW5kIGRhdGEgYXZhaWxhYmxlXG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHNwZW5kID0gdGhpcy5jaGFpbkluZm8ucHJldk91dHB1dFNwZW5kc1t0aGlzLm91dHB1dEluZGV4XTtcbiAgICBpZiAoc3BlbmQudHhpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnc3BlbnQnLCBmYWxzZSldO1xuICAgIH1cbiAgICBpZiAoc3BlbmQudHhpZCA9PT0gdGhpcy50eGlkKSB7XG4gICAgICAvLyBpZiBpbnB1dCBpcyBzcGVudCBieSB0aGlzIHRyYW5zYWN0aW9uIHdlIGRvbid0IGRpc3BsYXkgaXRcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3NwZW50JywgYCR7c3BlbmQudHhpZH06JHtzcGVuZC52aW59YCwgcGFyYW1zLmNvbmZsaWN0ID8gW3RoaXMubm9kZSgnY29uZmxpY3QnLCB0cnVlKV0gOiBbXSldO1xuICB9XG5cbiAgcGFyc2VPdXRwdXRTcGVuZCgpOiBQYXJzZXJOb2RlW10ge1xuICAgIGlmICghdGhpcy5jaGFpbkluZm8ub3V0cHV0U3BlbmRzIHx8ICF0aGlzLmNoYWluSW5mby5vdXRwdXRTcGVuZHNbdGhpcy5vdXRwdXRJbmRleF0pIHtcbiAgICAgIC8vIG5vIHNwZW5kIGRhdGEgYXZhaWxhYmxlXG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHNwZW5kID0gdGhpcy5jaGFpbkluZm8ub3V0cHV0U3BlbmRzW3RoaXMub3V0cHV0SW5kZXhdO1xuICAgIGlmIChzcGVuZC50eGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBbdGhpcy5ub2RlKCdzcGVudCcsIGZhbHNlKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbdGhpcy5ub2RlKCdzcGVudCcsIGAke3NwZW5kLnR4aWR9OiR7c3BlbmQudmlufWApXTtcbiAgICB9XG4gIH1cblxuICBwYXJzZU91dHB1dCgpOiBQYXJzZXJOb2RlIHtcbiAgICBsZXQgYWRkcmVzcztcbiAgICB0cnkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHRoaXMub3V0cHV0LnNjcmlwdCwgdGhpcy5uZXR3b3JrKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG5cbiAgICBjb25zdCBhZGRyZXNzUGFyc2VyID0gbmV3IEFkZHJlc3NQYXJzZXIoeyBuZXR3b3JrOiB0aGlzLm5ldHdvcmssIGFsbDogZmFsc2UsIGNvbnZlcnQ6IGZhbHNlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLm91dHB1dEluZGV4LCBhZGRyZXNzID8/ICcobm8gYWRkcmVzcyknLCBbXG4gICAgICB0aGlzLm5vZGUoYHZhbHVlYCwgZm9ybWF0U2F0KHRoaXMub3V0cHV0LnZhbHVlKSksXG4gICAgICAuLi4odGhpcy5wYXJhbXMucGFyc2VPdXRwdXRTY3JpcHQgfHwgYWRkcmVzcyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gYWRkcmVzc1BhcnNlci5wYXJzZU91dHB1dFNjcmlwdCh0aGlzLm91dHB1dC5zY3JpcHQpXG4gICAgICAgIDogW10pLFxuICAgICAgLi4udGhpcy5wYXJzZU91dHB1dFNwZW5kKCksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
2
- export declare type ParserNodeValue = number | bigint | string | Buffer | boolean | undefined | null;
1
+ export type ParserNodeValue = number | bigint | string | Buffer | Uint8Array | boolean | undefined | null;
3
2
  export declare function isParserNodeValue(v: unknown): v is ParserNodeValue;
4
- export declare type ParserNode = {
3
+ export type ParserNode = {
5
4
  type: 'node';
6
5
  label: string;
7
6
  value: ParserNodeValue | undefined;
@@ -13,6 +12,7 @@ export declare class Parser {
13
12
  parseError?: 'throw' | 'continue';
14
13
  });
15
14
  node(label: string | number, value: ParserNodeValue, nodes?: ParserNode[]): ParserNode;
15
+ nodeCatchError(label: string | number, buildValue: () => ParserNodeValue | undefined, buildNodes?: () => ParserNode[]): ParserNode;
16
16
  handleParseError(e: unknown): ParserNode;
17
17
  }
18
18
  //# sourceMappingURL=Parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../src/Parser.ts"],"names":[],"mappings":";AAAA,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAYlE;AAED,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,qBAAa,MAAM;IACjB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;gBACrB,MAAM,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAO;IAG9D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,GAAE,UAAU,EAAO,GAAG,UAAU;IAS1F,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU;CAMzC"}
1
+ {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../src/Parser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAE1G,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAYlE;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,qBAAa,MAAM;IACjB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;gBAErB,MAAM,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAO;IAI9D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,GAAE,UAAU,EAAO,GAAG,UAAU;IAY1F,cAAc,CACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,UAAU,EAAE,MAAM,eAAe,GAAG,SAAS,EAC7C,UAAU,GAAE,MAAM,UAAU,EAAa,GACxC,UAAU;IAQb,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU;CAMzC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Parser = exports.isParserNodeValue = void 0;
3
+ exports.Parser = void 0;
4
+ exports.isParserNodeValue = isParserNodeValue;
4
5
  function isParserNodeValue(v) {
5
6
  switch (typeof v) {
6
7
  case 'undefined':
@@ -10,17 +11,18 @@ function isParserNodeValue(v) {
10
11
  case 'bigint':
11
12
  return true;
12
13
  case 'object':
13
- return v === null || Buffer.isBuffer(v);
14
+ return v === null || Buffer.isBuffer(v) || v instanceof Uint8Array;
14
15
  }
15
16
  return false;
16
17
  }
17
- exports.isParserNodeValue = isParserNodeValue;
18
18
  class Parser {
19
19
  constructor(params = {}) {
20
- var _a;
21
- this.parseError = (_a = params.parseError) !== null && _a !== void 0 ? _a : 'continue';
20
+ this.parseError = params.parseError ?? 'continue';
22
21
  }
23
22
  node(label, value, nodes = []) {
23
+ if (!isParserNodeValue(value)) {
24
+ throw new Error(`invalid node value ${typeof value}`);
25
+ }
24
26
  return {
25
27
  type: 'node',
26
28
  label: String(label),
@@ -28,6 +30,14 @@ class Parser {
28
30
  nodes,
29
31
  };
30
32
  }
33
+ nodeCatchError(label, buildValue, buildNodes = () => []) {
34
+ try {
35
+ return this.node(label, buildValue?.(), buildNodes());
36
+ }
37
+ catch (e) {
38
+ return this.handleParseError(e);
39
+ }
40
+ }
31
41
  handleParseError(e) {
32
42
  if (this.parseError === 'throw') {
33
43
  throw e;
@@ -36,4 +46,4 @@ class Parser {
36
46
  }
37
47
  }
38
48
  exports.Parser = Parser;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixpQkFBaUIsQ0FBQyxDQUFVO0lBQzFDLFFBQVEsT0FBTyxDQUFDLEVBQUU7UUFDaEIsS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUSxDQUFDO1FBQ2QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxLQUFLLFFBQVE7WUFDWCxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVpELDhDQVlDO0FBU0QsTUFBYSxNQUFNO0lBRWpCLFlBQVksU0FBZ0QsRUFBRTs7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLFVBQVUsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQXNCLEVBQUUsS0FBc0IsRUFBRSxRQUFzQixFQUFFO1FBQzNFLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUs7WUFDTCxLQUFLO1NBQ04sQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFVO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUU7WUFDL0IsTUFBTSxDQUFDLENBQUM7U0FDVDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBcEJELHdCQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBhcnNlck5vZGVWYWx1ZSA9IG51bWJlciB8IGJpZ2ludCB8IHN0cmluZyB8IEJ1ZmZlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJzZXJOb2RlVmFsdWUodjogdW5rbm93bik6IHYgaXMgUGFyc2VyTm9kZVZhbHVlIHtcbiAgc3dpdGNoICh0eXBlb2Ygdikge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIHYgPT09IG51bGwgfHwgQnVmZmVyLmlzQnVmZmVyKHYpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VyTm9kZSA9IHtcbiAgdHlwZTogJ25vZGUnO1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogUGFyc2VyTm9kZVZhbHVlIHwgdW5kZWZpbmVkO1xuICBub2RlczogUGFyc2VyTm9kZVtdIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gIHBhcnNlRXJyb3I6ICd0aHJvdycgfCAnY29udGludWUnO1xuICBjb25zdHJ1Y3RvcihwYXJhbXM6IHsgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnIH0gPSB7fSkge1xuICAgIHRoaXMucGFyc2VFcnJvciA9IHBhcmFtcy5wYXJzZUVycm9yID8/ICdjb250aW51ZSc7XG4gIH1cbiAgbm9kZShsYWJlbDogc3RyaW5nIHwgbnVtYmVyLCB2YWx1ZTogUGFyc2VyTm9kZVZhbHVlLCBub2RlczogUGFyc2VyTm9kZVtdID0gW10pOiBQYXJzZXJOb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ25vZGUnLFxuICAgICAgbGFiZWw6IFN0cmluZyhsYWJlbCksXG4gICAgICB2YWx1ZSxcbiAgICAgIG5vZGVzLFxuICAgIH07XG4gIH1cblxuICBoYW5kbGVQYXJzZUVycm9yKGU6IHVua25vd24pOiBQYXJzZXJOb2RlIHtcbiAgICBpZiAodGhpcy5wYXJzZUVycm9yID09PSAndGhyb3cnKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2RlKCdlcnJvcicsIFN0cmluZyhlKSk7XG4gIH1cbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw4Q0FZQztBQVpELFNBQWdCLGlCQUFpQixDQUFDLENBQVU7SUFDMUMsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssV0FBVyxDQUFDO1FBQ2pCLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUTtZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLFVBQVUsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBU0QsTUFBYSxNQUFNO0lBR2pCLFlBQVksU0FBZ0QsRUFBRTtRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLENBQUMsS0FBc0IsRUFBRSxLQUFzQixFQUFFLFFBQXNCLEVBQUU7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLO1lBQ0wsS0FBSztTQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUNaLEtBQXNCLEVBQ3RCLFVBQTZDLEVBQzdDLGFBQWlDLEdBQUcsRUFBRSxDQUFDLEVBQUU7UUFFekMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQVU7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBckNELHdCQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBhcnNlck5vZGVWYWx1ZSA9IG51bWJlciB8IGJpZ2ludCB8IHN0cmluZyB8IEJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyc2VyTm9kZVZhbHVlKHY6IHVua25vd24pOiB2IGlzIFBhcnNlck5vZGVWYWx1ZSB7XG4gIHN3aXRjaCAodHlwZW9mIHYpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHJldHVybiB2ID09PSBudWxsIHx8IEJ1ZmZlci5pc0J1ZmZlcih2KSB8fCB2IGluc3RhbmNlb2YgVWludDhBcnJheTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlck5vZGUgPSB7XG4gIHR5cGU6ICdub2RlJztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IFBhcnNlck5vZGVWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgbm9kZXM6IFBhcnNlck5vZGVbXSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJzZXIge1xuICBwYXJzZUVycm9yOiAndGhyb3cnIHwgJ2NvbnRpbnVlJztcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IHsgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnIH0gPSB7fSkge1xuICAgIHRoaXMucGFyc2VFcnJvciA9IHBhcmFtcy5wYXJzZUVycm9yID8/ICdjb250aW51ZSc7XG4gIH1cblxuICBub2RlKGxhYmVsOiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBQYXJzZXJOb2RlVmFsdWUsIG5vZGVzOiBQYXJzZXJOb2RlW10gPSBbXSk6IFBhcnNlck5vZGUge1xuICAgIGlmICghaXNQYXJzZXJOb2RlVmFsdWUodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbm9kZSB2YWx1ZSAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGxhYmVsOiBTdHJpbmcobGFiZWwpLFxuICAgICAgdmFsdWUsXG4gICAgICBub2RlcyxcbiAgICB9O1xuICB9XG5cbiAgbm9kZUNhdGNoRXJyb3IoXG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcixcbiAgICBidWlsZFZhbHVlOiAoKSA9PiBQYXJzZXJOb2RlVmFsdWUgfCB1bmRlZmluZWQsXG4gICAgYnVpbGROb2RlczogKCkgPT4gUGFyc2VyTm9kZVtdID0gKCkgPT4gW11cbiAgKTogUGFyc2VyTm9kZSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUobGFiZWwsIGJ1aWxkVmFsdWU/LigpLCBidWlsZE5vZGVzKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUGFyc2VFcnJvcihlOiB1bmtub3duKTogUGFyc2VyTm9kZSB7XG4gICAgaWYgKHRoaXMucGFyc2VFcnJvciA9PT0gJ3Rocm93Jykge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm9kZSgnZXJyb3InLCBTdHJpbmcoZSkpO1xuICB9XG59XG4iXX0=
@@ -1,8 +1,7 @@
1
- /// <reference types="node" />
2
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
- export declare type ParserTx = utxolib.bitgo.UtxoTransaction<bigint> | utxolib.bitgo.UtxoPsbt;
4
- export declare type ParserTxInput = utxolib.TxInput | utxolib.PsbtTxInput;
5
- export declare type ParserTxOutput = utxolib.TxOutput<bigint> | utxolib.PsbtTxOutput;
2
+ export type ParserTx = utxolib.bitgo.UtxoTransaction<bigint> | utxolib.bitgo.UtxoPsbt;
3
+ export type ParserTxInput = utxolib.TxInput | utxolib.PsbtTxInput;
4
+ export type ParserTxOutput = utxolib.TxOutput<bigint> | utxolib.PsbtTxOutput;
6
5
  export declare function getPrevOut(prevOutput: utxolib.bitgo.PsbtInput, prevOutpoint: utxolib.PsbtTxInput | number, network: utxolib.Network): {
7
6
  value: bigint;
8
7
  script: Buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"ParserTx.d.ts","sourceRoot":"","sources":["../../src/ParserTx.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,oBAAY,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtF,oBAAY,aAAa,GACrB,OAAO,CAAC,OAAO,GACf,OAAO,CAAC,WAAW,CAAuD;AAC9E,oBAAY,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;AAE7E,wBAAgB,UAAU,CACxB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EACnC,YAAY,EAAE,OAAO,CAAC,WAAW,GAAG,MAAM,EAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,GAEtB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACD,SAAS,CAWZ;AAMD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,GAClD;IACD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;CACvB,CAwDA;AACD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAChC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAqBA"}
1
+ {"version":3,"file":"ParserTx.d.ts","sourceRoot":"","sources":["../../src/ParserTx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtF,MAAM,MAAM,aAAa,GACrB,OAAO,CAAC,OAAO,GACf,OAAO,CAAC,WAAW,CAAuD;AAC9E,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;AAE7E,wBAAgB,UAAU,CACxB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EACnC,YAAY,EAAE,OAAO,CAAC,WAAW,GAAG,MAAM,EAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,GAEtB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACD,SAAS,CAWZ;AAMD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,GAClD;IACD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;CACvB,CAwDA;AACD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAChC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAqBA"}