@witnet/sdk 1.0.0-beta.5 → 1.0.1

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 (40) hide show
  1. package/dist/package.json +3 -1
  2. package/dist/src/bin/helpers.d.ts +1 -0
  3. package/dist/src/bin/helpers.d.ts.map +1 -1
  4. package/dist/src/bin/helpers.js +11 -1
  5. package/dist/src/lib/crypto/interfaces.d.ts +7 -0
  6. package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
  7. package/dist/src/lib/crypto/interfaces.js +1 -1
  8. package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
  9. package/dist/src/lib/crypto/payloads.js +1 -12
  10. package/dist/src/lib/crypto/signer.d.ts +8 -1
  11. package/dist/src/lib/crypto/signer.d.ts.map +1 -1
  12. package/dist/src/lib/crypto/signer.js +23 -2
  13. package/dist/src/lib/crypto/types.d.ts +2 -2
  14. package/dist/src/lib/crypto/types.d.ts.map +1 -1
  15. package/dist/src/lib/crypto/types.js +4 -5
  16. package/dist/src/lib/crypto/utils.d.ts +2 -1
  17. package/dist/src/lib/crypto/utils.d.ts.map +1 -1
  18. package/dist/src/lib/crypto/utils.js +6 -1
  19. package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
  20. package/dist/src/lib/crypto/wallet.js +1 -4
  21. package/dist/src/lib/utils.d.ts +3 -2
  22. package/dist/src/lib/utils.d.ts.map +1 -1
  23. package/dist/src/lib/utils.js +16 -9
  24. package/dist/witnet/assets/index.d.ts +6 -6
  25. package/dist/witnet/assets/modals/index.d.ts +10 -11
  26. package/dist/witnet/assets/modals/index.js +2 -12
  27. package/dist/witnet/assets/modals/web3/ipfs.d.ts +5 -0
  28. package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +1 -0
  29. package/dist/witnet/assets/modals/web3/ipfs.js +16 -0
  30. package/dist/witnet/assets/modals/web3/wit.d.ts +1 -1
  31. package/dist/witnet/assets/modals/web3/wit.js +4 -4
  32. package/dist/witnet/assets/requests.js +1 -1
  33. package/package.json +3 -1
  34. package/src/bin/cli/radon.js +3 -3
  35. package/src/bin/cli/wallet.js +124 -30
  36. package/src/bin/helpers.js +12 -1
  37. package/witnet/assets/modals/index.js +1 -17
  38. package/witnet/assets/modals/web3/ipfs.js +19 -0
  39. package/witnet/assets/modals/web3/wit.js +3 -3
  40. package/witnet/assets/requests.js +1 -0
@@ -17,7 +17,6 @@ class TransactionPayload {
17
17
  get bytecode() {
18
18
  // make toProtobuf return Protobuf's deserialized message
19
19
  const obj = this.toProtobuf();
20
- // console.log("TransactionPayload<Specs>.bytecode() =>", obj)
21
20
  if (!obj)
22
21
  return undefined;
23
22
  const err = this._protoType.verify(obj);
@@ -81,8 +80,6 @@ class TransactionPayloadMultiSig extends TransactionPayload {
81
80
  }
82
81
  const prepared = this.prepared;
83
82
  if (!this.covered) {
84
- // console.log(ledger.constructor.name, "cacheInfo =>", ledger.pkh, ledger.cacheInfo)
85
- // console.log(await ledger.getUtxos())
86
83
  // consume utxos as to cover this.value, at least
87
84
  const utxos = await ledger.selectUtxos({
88
85
  value: types_1.Coins.fromPedros(this.value.pedros - this._covered),
@@ -93,22 +90,16 @@ class TransactionPayloadMultiSig extends TransactionPayload {
93
90
  ledger.consumeUtxos(...utxos);
94
91
  // try to cover fees only if this.value is covered first
95
92
  if (this._covered >= this.value.pedros) {
96
- // console.log(this._inputs)
97
- // console.log("remaining utxos =>", await ledger.getUtxos())
98
93
  if (this._target?.fees instanceof types_1.Coins) {
99
94
  this._fees = this._target.fees.pedros;
100
- // console.log(this._covered, this.value.pedros, this._fees, this._covered < this.value.pedros + this._fees)
101
95
  if (this._covered < this.value.pedros + this._fees) {
102
- // console.log("more utxos required...")
103
96
  const extras = await ledger.selectUtxos({
104
97
  value: types_1.Coins.fromPedros(this.value.pedros + this._fees - this._covered),
105
98
  });
106
99
  ledger.consumeUtxos(...extras);
107
- this._covered += extras.map(utxo => utxo.value).reduce((prev, curr) => prev + curr);
108
100
  this._inputs.push(...extras);
109
101
  }
110
102
  this._change = this._covered - (this.value.pedros + this._fees);
111
- // console.log(this._change)
112
103
  }
113
104
  else {
114
105
  const priority = this._target?.fees || types_1.TransactionPriority.Opulent;
@@ -141,8 +132,6 @@ class TransactionPayloadMultiSig extends TransactionPayload {
141
132
  }
142
133
  // prepare outputs, only if value and fees got fully covered for the first time:
143
134
  if (this._change >= 0 && !prepared) {
144
- // console.log('-'.repeat(80))
145
- // console.log(this._inputs)
146
135
  this.prepareOutputs({ value: this._change, pkh: ledger.changePkh });
147
136
  }
148
137
  return this._change;
@@ -167,4 +156,4 @@ class TransactionPayloadMultiSig extends TransactionPayload {
167
156
  }
168
157
  }
169
158
  exports.TransactionPayloadMultiSig = TransactionPayloadMultiSig;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by9wYXlsb2Fkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixvQ0FBc0M7QUFHdEMsbUNBQWdDO0FBQ2hDLG1DQUFnRjtBQUVoRixNQUFzQixrQkFBa0I7SUFTcEMsWUFBWSxhQUFxQixFQUFFLGFBQXFCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLHlEQUF5RDtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDN0IsOERBQThEO1FBQzlELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osK0NBQStDO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9D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QyxNQUFvRDtRQUN0RSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDZixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixTQUFTLEVBQUUsQ0FBQzthQUNmLENBQUMsQ0FBQTtRQUNOLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLE1BQWE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDM0IsQ0FBQztDQVdKO0FBbElELGdFQWtJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgYXMgUHJvdG9UeXBlLCBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrUHJpb3JpdGllcywgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi90eXBlc1wiXHJcbmltcG9ydCB7IHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCJcclxuXHJcbmltcG9ydCB7IElMZWRnZXIsIElKc29uUnBjUHJvdmlkZXIsIElUcmFuc2FjdGlvblBheWxvYWQsIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcbmltcG9ydCB7IENvaW5zLCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBUcmFuc2FjdGlvblByaW9yaXR5LCBVdHhvIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+IGltcGxlbWVudHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4ge1xyXG4gXHJcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZTogYmlnaW50O1xyXG4gICAgcHJvdGVjdGVkIF9jb3ZlcmVkOiBiaWdpbnQ7XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXM6IGJpZ2ludDtcclxuICAgIHByb3RlY3RlZCBfcHJpb3JpdGllcz86IE5ldHdvcmtQcmlvcml0aWVzO1xyXG4gICAgcHJvdGVjdGVkIF9wcm90b1R5cGU6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfdGFyZ2V0PzogU3BlY3M7XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9UeXBlID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLnZhbGlkYXRlVGFyZ2V0KGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIC8vIG1ha2UgdG9Qcm90b2J1ZiByZXR1cm4gUHJvdG9idWYncyBkZXNlcmlhbGl6ZWQgbWVzc2FnZVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+LmJ5dGVjb2RlKCkgPT5cIiwgb2JqKVxyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm4gdW5kZWZpbmVkXHJcblxyXG4gICAgICAgIGNvbnN0IGVyciA9IHRoaXMuX3Byb3RvVHlwZS52ZXJpZnkob2JqKVxyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGVycilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbm9iaiA9PlwiLCBKU09OLnN0cmluZ2lmeShvYmopKVxyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5fcHJvdG9UeXBlLmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbm1lc3NhZ2UgPT5cIiwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpXHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVjb2RlID0gdGhpcy5fcHJvdG9UeXBlLmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlxcbmJ5dGVjb2RlID0+XCIsIHRvSGV4U3RyaW5nKGJ5dGVjb2RlKSlcclxuICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlKCk6IENvaW5zIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlID4gMCA/IENvaW5zLmZyb21QZWRyb3ModGhpcy5fY2hhbmdlKSA6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY292ZXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhIXRoaXMuZmVlc1xyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fY292ZXJlZCA+PSB0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuZmVlcy5wZWRyb3NcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBmZWVzKCk6IENvaW5zIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmVlcyA+IDAgPyBDb2lucy5mcm9tUGVkcm9zKHRoaXMuX2ZlZXMpIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBoYXNoKCk6IEhhc2ggfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IF9ieXRlY29kZSA9IHRoaXMuYnl0ZWNvZGVcclxuICAgICAgICBpZiAoX2J5dGVjb2RlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KF9ieXRlY29kZSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW50b1JlY2VpcHQodGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4udGFyZ2V0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFic3RyYWN0IGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIpOiBQcm9taXNlPGJpZ2ludD47XHJcbiAgICBhYnN0cmFjdCBwcmVwYXJlT3V0cHV0cyhjaGFuZ2U/OiB7IHZhbHVlOiBiaWdpbnQsIHBraDogUHVibGljS2V5SGFzaFN0cmluZyB9LCBwYXJhbXM/OiBhbnkpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCByZXNldFRhcmdldCh0YXJnZXQ6IFNwZWNzKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9Qcm90b2J1ZigpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBTcGVjcyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBhYnN0cmFjdCBnZXQgb3V0cHV0cygpOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PjtcclxuICAgIGFic3RyYWN0IGdldCBtYXhXZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHByZXBhcmVkKCk6IGJvb2xlYW47XHJcbiAgICBhYnN0cmFjdCBnZXQgdmFsdWUoKTogQ29pbnM7XHJcbiAgICBhYnN0cmFjdCBnZXQgd2VpZ2h0KCk6IG51bWJlcjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2NsZWFuVGFyZ2V0RXh0cmFzKHBhcmFtcz86IGFueSk6IGFueTtcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfZXN0aW1hdGVOZXR3b3JrRmVlcyhwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgcHJpb3JpdHk/OiBUcmFuc2FjdGlvblByaW9yaXR5KTogUHJvbWlzZTxiaWdpbnQ+O1xyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+IFxyXG4gICAgZXh0ZW5kcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+XHJcbiAgICBpbXBsZW1lbnRzIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxTcGVjcz5cclxue1xyXG4gICAgcHJvdGVjdGVkIF9pbnB1dHM6IEFycmF5PFV0eG8+XHJcbiAgICBwcm90ZWN0ZWQgX291dHB1dHM6IEFycmF5PFZhbHVlVHJhbnNmZXJPdXRwdXQ+XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgaW5pdGlhbFRhcmdldClcclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaW5wdXRzKCk6IEFycmF5PFV0eG8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRzXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBvdXRwdXRzKCk6IEFycmF5PFZhbHVlVHJhbnNmZXJPdXRwdXQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0c1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcHJlcGFyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5faW5wdXRzLmxlbmd0aCA+IDAgXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9vdXRwdXRzLmxlbmd0aCA+IDBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gaW4tZmxpZ2h0IHBhcmFtcy5gKVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLnByZXBhcmVkXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvdmVyZWQpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobGVkZ2VyLmNvbnN0cnVjdG9yLm5hbWUsIFwiY2FjaGVJbmZvID0+XCIsIGxlZGdlci5wa2gsIGxlZGdlci5jYWNoZUluZm8pXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGF3YWl0IGxlZGdlci5nZXRVdHhvcygpKVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gY29uc3VtZSB1dHhvcyBhcyB0byBjb3ZlciB0aGlzLnZhbHVlLCBhdCBsZWFzdFxyXG4gICAgICAgICAgICBjb25zdCB1dHhvcyA9IGF3YWl0IGxlZGdlci5zZWxlY3RVdHhvcyh7IFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModGhpcy52YWx1ZS5wZWRyb3MgLSB0aGlzLl9jb3ZlcmVkKSwgXHJcbiAgICAgICAgICAgICAgICByZWxvYWQsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuX2NvdmVyZWQgKz0gdXR4b3MubWFwKHV0eG8gPT4gdXR4by52YWx1ZSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMG4pXHJcbiAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICBsZWRnZXIuY29uc3VtZVV0eG9zKC4uLnV0eG9zKVxyXG5cclxuICAgICAgICAgICAgLy8gdHJ5IHRvIGNvdmVyIGZlZXMgb25seSBpZiB0aGlzLnZhbHVlIGlzIGNvdmVyZWQgZmlyc3RcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvdmVyZWQgPj0gdGhpcy52YWx1ZS5wZWRyb3MpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuX2lucHV0cylcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwicmVtYWluaW5nIHV0eG9zID0+XCIsIGF3YWl0IGxlZGdlci5nZXRVdHhvcygpKVxyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl90YXJnZXQgYXMgYW55KT8uZmVlcyBpbnN0YW5jZW9mIENvaW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLl9jb3ZlcmVkLCB0aGlzLnZhbHVlLnBlZHJvcywgdGhpcy5fZmVlcywgdGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm1vcmUgdXR4b3MgcmVxdWlyZWQuLi5cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0cmFzID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMgIC0gdGhpcy5fY292ZXJlZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4uZXh0cmFzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkICs9IGV4dHJhcy5tYXAodXR4byA9PiB1dHhvLnZhbHVlKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZSA9IHRoaXMuX2NvdmVyZWQgLSAodGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuX2NoYW5nZSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSk/LmZlZXMgYXMgVHJhbnNhY3Rpb25Qcmlvcml0eSB8fCBUcmFuc2FjdGlvblByaW9yaXR5Lk9wdWxlbnRcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2ZlZXMgPCBlc3RpbWF0ZWRGZWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSBlc3RpbWF0ZWRGZWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbW9yZSB1dHhvcyBvbmx5IGlmIHRoZSBvbmVzIHNlbGVjdGVkIGZvciBjb3ZlcmluZyB0aGUgdmFsdWUgYW5kIHRoZSBlc3RpbWF0ZSBmZWVzIGRvbid0IHN1ZmZpY2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb3ZlcmVkIDwgdGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSBhd2FpdCBsZWRnZXIuc2VsZWN0VXR4b3MoeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMgLSB0aGlzLl9jb3ZlcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4uZXh0cmFzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY292ZXJlZCArPSBleHRyYXMubWFwKHV0eG8gPT4gdXR4by52YWx1ZSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VycilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2UgPSB0aGlzLl9jb3ZlcmVkIC0gKHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5nZSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc3VmZmljaWVudCBmdW5kcyAuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVPdXRwdXRzKHsgdmFsdWU6IHRoaXMuX2NoYW5nZSwgcGtoOiBsZWRnZXIuY2hhbmdlUGtoIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRlIHVudGlsIGFjdHVhbCBmZWVzIG1hdGNoIGVzdGltYXRlZCBmZWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRGZWVzID0gYXdhaXQgdGhpcy5fZXN0aW1hdGVOZXR3b3JrRmVlcyhsZWRnZXIucHJvdmlkZXIsIHByaW9yaXR5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHByZXBhcmUgb3V0cHV0cywgb25seSBpZiB2YWx1ZSBhbmQgZmVlcyBnb3QgZnVsbHkgY292ZXJlZCBmb3IgdGhlIGZpcnN0IHRpbWU6XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5nZSA+PSAwICYmICFwcmVwYXJlZCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnLScucmVwZWF0KDgwKSlcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5faW5wdXRzKVxyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVPdXRwdXRzKHsgdmFsdWU6IHRoaXMuX2NoYW5nZSwgcGtoOiBsZWRnZXIuY2hhbmdlUGtoIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGFuZ2VcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJlcGFyZU91dHB1dHMoY2hhbmdlPzogeyB2YWx1ZTogYmlnaW50LCBwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcgfSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBraDogY2hhbmdlLnBraCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFRhcmdldCh0YXJnZXQ6IFNwZWNzKTogYW55IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2UgPSAwblxyXG4gICAgICAgIHRoaXMuX2NvdmVyZWQgPSAwblxyXG4gICAgICAgIHRoaXMuX2ZlZXMgPSAwblxyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuX3ByaW9yaXRpZXNcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCB0b0pTT04oaHVtYW5pemU6IGJvb2xlYW4pOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB0b1Byb3RvYnVmKCk6IGFueTtcclxuICAgIGFic3RyYWN0IHZhbGlkYXRlVGFyZ2V0KHRhcmdldD86IGFueSk6IFNwZWNzIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGFic3RyYWN0IGdldCBtYXhXZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHZhbHVlKCk6IENvaW5zO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHdlaWdodCgpOiBudW1iZXI7XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfY2xlYW5UYXJnZXRFeHRyYXMocGFyYW1zPzogYW55KTogYW55O1xyXG59XHJcbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by9wYXlsb2Fkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixvQ0FBc0M7QUFHdEMsbUNBQWdDO0FBQ2hDLG1DQUFnRjtBQUVoRixNQUFzQixrQkFBa0I7SUFTcEMsWUFBWSxhQUFxQixFQUFFLGFBQXFCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLHlEQUF5RDtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFN0IsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUUxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSiwrQ0FBK0M7WUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0MsdURBQXVEO1lBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3pELHNEQUFzRDtZQUN0RCxPQUFPLFFBQVEsQ0FBQTtRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDeEUsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sQ0FDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7ZUFDSixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUMvRCxDQUFBO0lBQ0wsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDcEUsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDL0IsSUFBSSxTQUFTLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFBLG1CQUFXLEVBQUMsSUFBQSxjQUFNLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sU0FBUyxDQUFBO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLE1BQWE7UUFDNUIsT0FBTztZQUNILEdBQUcsTUFBTTtTQUNaLENBQUE7SUFDTCxDQUFDO0NBaUJKO0FBakZELGdEQWlGQztBQUVELE1BQXNCLDBCQUNsQixTQUFRLGtCQUF5QjtJQU1qQyxZQUFZLGFBQXFCLEVBQUUsYUFBcUI7UUFDcEQsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDeEIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDbEMsQ0FBQTtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWUsRUFBRSxNQUFnQjtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksd0NBQXdDLENBQUMsQ0FBQTtRQUNyRixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWhCLGlEQUFpRDtZQUNqRCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ25DLEtBQUssRUFBRSxhQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzFELE1BQU07YUFDVCxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtZQUU3Qix3REFBd0Q7WUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JDLElBQUssSUFBSSxDQUFDLE9BQWUsRUFBRSxJQUFJLFlBQVksYUFBSyxFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUksSUFBSSxDQUFDLE9BQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUMvQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7NEJBQ3BDLEtBQUssRUFBRSxhQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQzt5QkFDM0UsQ0FBQyxDQUFBO3dCQUNGLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTt3QkFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTtvQkFDaEMsQ0FBQztvQkFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ25FLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLFFBQVEsR0FBSSxJQUFJLENBQUMsT0FBZSxFQUFFLElBQTJCLElBQUksMkJBQW1CLENBQUMsT0FBTyxDQUFBO29CQUNsRyxJQUFJLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUMvRSxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxFQUFFLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFBO3dCQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTt3QkFDbEIsdUdBQXVHO3dCQUN2RyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0NBQ3BDLEtBQUssRUFBRSxhQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzs2QkFDMUUsQ0FBQyxDQUFBOzRCQUNGLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTs0QkFDOUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQTs0QkFDbkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTt3QkFDaEMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7d0JBQy9ELElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDbkIseUJBQXlCOzRCQUN6QixNQUFLO3dCQUNULENBQUM7NkJBQU0sQ0FBQzs0QkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBOzRCQUNuRSxpREFBaUQ7NEJBQ2pELGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO3dCQUM5RSxDQUFDO29CQUNMLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFvRDtRQUN0RSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDZixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixTQUFTLEVBQUUsQ0FBQzthQUNmLENBQUMsQ0FBQTtRQUNOLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLE1BQWE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDM0IsQ0FBQztDQVdKO0FBeEhELGdFQXdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgYXMgUHJvdG9UeXBlLCBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrUHJpb3JpdGllcywgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi90eXBlc1wiXHJcbmltcG9ydCB7IHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCJcclxuXHJcbmltcG9ydCB7IElMZWRnZXIsIElKc29uUnBjUHJvdmlkZXIsIElUcmFuc2FjdGlvblBheWxvYWQsIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcbmltcG9ydCB7IENvaW5zLCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBUcmFuc2FjdGlvblByaW9yaXR5LCBVdHhvIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+IGltcGxlbWVudHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4ge1xyXG4gXHJcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZTogYmlnaW50O1xyXG4gICAgcHJvdGVjdGVkIF9jb3ZlcmVkOiBiaWdpbnQ7XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXM6IGJpZ2ludDtcclxuICAgIHByb3RlY3RlZCBfcHJpb3JpdGllcz86IE5ldHdvcmtQcmlvcml0aWVzO1xyXG4gICAgcHJvdGVjdGVkIF9wcm90b1R5cGU6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfdGFyZ2V0PzogU3BlY3M7XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHByb3RvVHlwZU5hbWU6IHN0cmluZywgaW5pdGlhbFRhcmdldD86IFNwZWNzKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9UeXBlID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLnZhbGlkYXRlVGFyZ2V0KGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIC8vIG1ha2UgdG9Qcm90b2J1ZiByZXR1cm4gUHJvdG9idWYncyBkZXNlcmlhbGl6ZWQgbWVzc2FnZVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFvYmopIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9wcm90b1R5cGUudmVyaWZ5KG9iailcclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihlcnIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5vYmogPT5cIiwgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvVHlwZS5mcm9tT2JqZWN0KG9iailcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5tZXNzYWdlID0+XCIsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKVxyXG4gICAgICAgICAgICBjb25zdCBieXRlY29kZSA9IHRoaXMuX3Byb3RvVHlwZS5lbmNvZGUobWVzc2FnZSkuZmluaXNoKClcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5ieXRlY29kZSA9PlwiLCB0b0hleFN0cmluZyhieXRlY29kZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBieXRlY29kZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNoYW5nZSgpOiBDb2lucyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZSA+IDAgPyBDb2lucy5mcm9tUGVkcm9zKHRoaXMuX2NoYW5nZSkgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNvdmVyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgISF0aGlzLmZlZXNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2NvdmVyZWQgPj0gdGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLmZlZXMucGVkcm9zXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZmVlcygpOiBDb2lucyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZlZXMgPiAwID8gQ29pbnMuZnJvbVBlZHJvcyh0aGlzLl9mZWVzKSA6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaGFzaCgpOiBIYXNoIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBfYnl0ZWNvZGUgPSB0aGlzLmJ5dGVjb2RlXHJcbiAgICAgICAgaWYgKF9ieXRlY29kZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHNoYTI1NihfYnl0ZWNvZGUpKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGludG9SZWNlaXB0KHRhcmdldDogU3BlY3MpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnRhcmdldFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyKTogUHJvbWlzZTxiaWdpbnQ+O1xyXG4gICAgYWJzdHJhY3QgcHJlcGFyZU91dHB1dHMoY2hhbmdlPzogeyB2YWx1ZTogYmlnaW50LCBwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcgfSwgcGFyYW1zPzogYW55KTogYW55O1xyXG4gICAgYWJzdHJhY3QgcmVzZXRUYXJnZXQodGFyZ2V0OiBTcGVjcyk6IGFueTtcclxuICAgIGFic3RyYWN0IHRvSlNPTihodW1hbml6ZTogYm9vbGVhbik6IGFueTtcclxuICAgIGFic3RyYWN0IHRvUHJvdG9idWYoKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdmFsaWRhdGVUYXJnZXQodGFyZ2V0PzogYW55KTogU3BlY3MgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgYWJzdHJhY3QgZ2V0IG91dHB1dHMoKTogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD47XHJcbiAgICBhYnN0cmFjdCBnZXQgbWF4V2VpZ2h0KCk6IG51bWJlcjtcclxuICAgIGFic3RyYWN0IGdldCBwcmVwYXJlZCgpOiBib29sZWFuO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHZhbHVlKCk6IENvaW5zO1xyXG4gICAgYWJzdHJhY3QgZ2V0IHdlaWdodCgpOiBudW1iZXI7XHJcblxyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9jbGVhblRhcmdldEV4dHJhcyhwYXJhbXM/OiBhbnkpOiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2VzdGltYXRlTmV0d29ya0ZlZXMocHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXIsIHByaW9yaXR5PzogVHJhbnNhY3Rpb25Qcmlvcml0eSk6IFByb21pc2U8YmlnaW50PjtcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPiBcclxuICAgIGV4dGVuZHMgVHJhbnNhY3Rpb25QYXlsb2FkPFNwZWNzPlxyXG4gICAgaW1wbGVtZW50cyBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+XHJcbntcclxuICAgIHByb3RlY3RlZCBfaW5wdXRzOiBBcnJheTxVdHhvPlxyXG4gICAgcHJvdGVjdGVkIF9vdXRwdXRzOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PlxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90b1R5cGVOYW1lOiBzdHJpbmcsIGluaXRpYWxUYXJnZXQ/OiBTcGVjcykge1xyXG4gICAgICAgIHN1cGVyKHByb3RvVHlwZU5hbWUsIGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5faW5wdXRzID0gW11cclxuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlucHV0cygpOiBBcnJheTxVdHhvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0c1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX291dHB1dHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHByZXBhcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwIFxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5fb3V0cHV0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyLCByZWxvYWQ/OiBib29sZWFuKTogUHJvbWlzZTxiaWdpbnQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX3RhcmdldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IG5vIGluLWZsaWdodCBwYXJhbXMuYClcclxuICAgICAgICB9IFxyXG4gICAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5wcmVwYXJlZFxyXG4gICAgICAgIGlmICghdGhpcy5jb3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBjb25zdW1lIHV0eG9zIGFzIHRvIGNvdmVyIHRoaXMudmFsdWUsIGF0IGxlYXN0XHJcbiAgICAgICAgICAgIGNvbnN0IHV0eG9zID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogQ29pbnMuZnJvbVBlZHJvcyh0aGlzLnZhbHVlLnBlZHJvcyAtIHRoaXMuX2NvdmVyZWQpLCBcclxuICAgICAgICAgICAgICAgIHJlbG9hZCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5fY292ZXJlZCArPSB1dHhvcy5tYXAodXR4byA9PiB1dHhvLnZhbHVlKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwbilcclxuICAgICAgICAgICAgdGhpcy5faW5wdXRzLnB1c2goLi4udXR4b3MpXHJcbiAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4udXR4b3MpXHJcblxyXG4gICAgICAgICAgICAvLyB0cnkgdG8gY292ZXIgZmVlcyBvbmx5IGlmIHRoaXMudmFsdWUgaXMgY292ZXJlZCBmaXJzdFxyXG4gICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA+PSB0aGlzLnZhbHVlLnBlZHJvcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl90YXJnZXQgYXMgYW55KT8uZmVlcyBpbnN0YW5jZW9mIENvaW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSBhd2FpdCBsZWRnZXIuc2VsZWN0VXR4b3MoeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDb2lucy5mcm9tUGVkcm9zKHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcyAgLSB0aGlzLl9jb3ZlcmVkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVkZ2VyLmNvbnN1bWVVdHhvcyguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cy5wdXNoKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlID0gdGhpcy5fY292ZXJlZCAtICh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGFzIFRyYW5zYWN0aW9uUHJpb3JpdHkgfHwgVHJhbnNhY3Rpb25Qcmlvcml0eS5PcHVsZW50XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLl9mZWVzIDwgZXN0aW1hdGVkRmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mZWVzID0gZXN0aW1hdGVkRmVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1vcmUgdXR4b3Mgb25seSBpZiB0aGUgb25lcyBzZWxlY3RlZCBmb3IgY292ZXJpbmcgdGhlIHZhbHVlIGFuZCB0aGUgZXN0aW1hdGUgZmVlcyBkb24ndCBzdWZmaWNlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY292ZXJlZCA8IHRoaXMudmFsdWUucGVkcm9zICsgdGhpcy5fZmVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0cmFzID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModGhpcy52YWx1ZS5wZWRyb3MgKyB0aGlzLl9mZWVzIC0gdGhpcy5fY292ZXJlZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWRnZXIuY29uc3VtZVV0eG9zKC4uLmV4dHJhcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvdmVyZWQgKz0gZXh0cmFzLm1hcCh1dHhvID0+IHV0eG8udmFsdWUpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi5leHRyYXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlID0gdGhpcy5fY292ZXJlZCAtICh0aGlzLnZhbHVlLnBlZHJvcyArIHRoaXMuX2ZlZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnN1ZmZpY2llbnQgZnVuZHMgLi4uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlT3V0cHV0cyh7IHZhbHVlOiB0aGlzLl9jaGFuZ2UsIHBraDogbGVkZ2VyLmNoYW5nZVBraCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0ZSB1bnRpbCBhY3R1YWwgZmVlcyBtYXRjaCBlc3RpbWF0ZWQgZmVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwcmVwYXJlIG91dHB1dHMsIG9ubHkgaWYgdmFsdWUgYW5kIGZlZXMgZ290IGZ1bGx5IGNvdmVyZWQgZm9yIHRoZSBmaXJzdCB0aW1lOlxyXG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPj0gMCAmJiAhcHJlcGFyZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlT3V0cHV0cyh7IHZhbHVlOiB0aGlzLl9jaGFuZ2UsIHBraDogbGVkZ2VyLmNoYW5nZVBraCB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHByZXBhcmVPdXRwdXRzKGNoYW5nZT86IHsgdmFsdWU6IGJpZ2ludCwgcGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nIH0pOiBhbnkge1xyXG4gICAgICAgIGlmIChjaGFuZ2U/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwa2g6IGNoYW5nZS5wa2gsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdGltZV9sb2NrOiAwLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRUYXJnZXQodGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldFxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9wcmlvcml0aWVzXHJcbiAgICB9XHJcblxyXG4gICAgYWJzdHJhY3QgdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgYWJzdHJhY3QgdG9Qcm90b2J1ZigpOiBhbnk7XHJcbiAgICBhYnN0cmFjdCB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBTcGVjcyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBhYnN0cmFjdCBnZXQgbWF4V2VpZ2h0KCk6IG51bWJlcjtcclxuICAgIGFic3RyYWN0IGdldCB2YWx1ZSgpOiBDb2lucztcclxuICAgIGFic3RyYWN0IGdldCB3ZWlnaHQoKTogbnVtYmVyO1xyXG4gICAgXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2NsZWFuVGFyZ2V0RXh0cmFzKHBhcmFtcz86IGFueSk6IGFueTtcclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Balance, Network, QueryStakesOrder, StakeEntry } from "../types";
1
+ import { Balance, HexString, Network, QueryStakesOrder, StakeEntry } from "../types";
2
2
  import { IBIP32, IJsonRpcProvider, ISigner } from "./interfaces";
3
3
  import { Coins, KeyedSignature, PublicKey, PublicKeyHashString, Utxo, UtxoCacheInfo, UtxoSelectionStrategy } from "./types";
4
4
  export declare class Signer implements ISigner {
@@ -27,7 +27,14 @@ export declare class Signer implements ISigner {
27
27
  reload?: boolean;
28
28
  strategy?: UtxoSelectionStrategy;
29
29
  }): Promise<Array<Utxo>>;
30
+ authorizeEvmAddress(evmAddress: HexString): any;
30
31
  getStakeEntryNonce(validator: PublicKeyHashString): Promise<number>;
31
32
  signHash(hash: any): KeyedSignature;
33
+ signMessage(text: string): {
34
+ address: string;
35
+ message: string;
36
+ publicKey: HexString;
37
+ signature: HexString;
38
+ };
32
39
  }
33
40
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/signer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG3H,qBAAa,MAAO,YAAW,OAAO;IAElC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAK;IACjC,OAAO,CAAC,YAAY,CAAU;IAE9B,SAAgB,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,EAAE,qBAAqB,CAAA;gBAGlC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,CAAC,EAAE,qBAAqB;IAcpC,IAAW,SAAS,IAAI,aAAa,CAepC;IAED,IAAW,SAAS,IAAI,mBAAmB,CAE1C;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,GAAG,IAAI,mBAAmB,CAEpC;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAEM,QAAQ,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KAAE;IAqBjF,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAc1C,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAOzE,SAAS,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,OAAO,GAAG,SAAS;IAInD,QAAQ,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAS9C,WAAW,CAAC,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;KACnC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IASX,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;CAiC7C"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/signer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAwB,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGjJ,qBAAa,MAAO,YAAW,OAAO;IAElC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAK;IACjC,OAAO,CAAC,YAAY,CAAU;IAE9B,SAAgB,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,EAAE,qBAAqB,CAAA;gBAGlC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,CAAC,EAAE,qBAAqB;IAcpC,IAAW,SAAS,IAAI,aAAa,CAepC;IAED,IAAW,SAAS,IAAI,mBAAmB,CAE1C;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,GAAG,IAAI,mBAAmB,CAEpC;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAEM,QAAQ,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KAAE;IAqBjF,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAa1C,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAOzE,SAAS,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,OAAO,GAAG,SAAS;IAInD,QAAQ,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAS9C,WAAW,CAAC,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,qBAAqB,CAAA;KACnC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IASjB,mBAAmB,CAAC,UAAU,EAAE,SAAS,GAAG,GAAG;IAWzC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAkCnC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,EAAE,SAAS,CAAA;KACvB;CAUJ"}
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Signer = void 0;
37
+ const ethers = require('ethers');
38
+ const keccak256 = require('keccak256');
37
39
  const secp256k1 = require('secp256k1');
38
40
  const utils = __importStar(require("../utils"));
39
41
  const types_1 = require("./types");
@@ -114,7 +116,6 @@ class Signer {
114
116
  return true;
115
117
  }
116
118
  });
117
- // console.log("Signer.consumeUtxos: remaining:", utxos)
118
119
  return utxos;
119
120
  }
120
121
  async getBalance() {
@@ -144,6 +145,16 @@ class Signer {
144
145
  }
145
146
  // ================================================================================================================
146
147
  // --- ISigner ----------------------------------------------------------------------------------------------------
148
+ authorizeEvmAddress(evmAddress) {
149
+ const addr = utils.fromHexString(evmAddress);
150
+ const hash = keccak256(Buffer.from(addr));
151
+ if (this.node.privateKey) {
152
+ const signingKey = new ethers.utils.SigningKey(this.node.privateKey);
153
+ const signature = signingKey.signDigest(hash);
154
+ const sig = `0x${signature.r.slice(2)}${signature.s.slice(2)}${signature.v.toString(16)}`;
155
+ return sig;
156
+ }
157
+ }
147
158
  async getStakeEntryNonce(validator) {
148
159
  return this.provider
149
160
  .stakes({ filter: {
@@ -189,6 +200,16 @@ class Signer {
189
200
  throw Error(`Signer: invalid BIP32 node: no private key`);
190
201
  }
191
202
  }
203
+ signMessage(text) {
204
+ const digest = utils.digestMessage(text);
205
+ const keyedSignature = this.signHash(digest);
206
+ return {
207
+ address: this.pkh,
208
+ message: text,
209
+ publicKey: types_1.PublicKey.fromProtobuf(keyedSignature.public_key).toHexString(),
210
+ signature: types_1.RecoverableSignature.fromKeyedSignature(keyedSignature, digest).toHexString(),
211
+ };
212
+ }
192
213
  }
193
214
  exports.Signer = Signer;
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN0QyxnREFBaUM7QUFJakMsbUNBQTJIO0FBQzNILG1DQUFxQztBQUVyQyxNQUFhLE1BQU07SUFTZixZQUNJLElBQVksRUFDWixRQUEwQixFQUMxQixRQUFnQztRQVQxQixVQUFLLEdBQWdCLEVBQUUsQ0FBQTtRQVc3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSw2QkFBcUIsQ0FBQyxPQUFPLENBQUE7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUM3QixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILG1IQUFtSDtJQUVuSCxJQUFXLFNBQVM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDekMsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFBO1FBQzNCLElBQUksUUFBUSxHQUFXLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxD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QU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLDBCQUEwQixNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQTtRQUM1RixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDbkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUNyRSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFDaEUsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNoRCxPQUFPO2dCQUNILFVBQVUsRUFBRTtvQkFDUixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO29CQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztpQkFDMUM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLFNBQVMsRUFBRTt3QkFDUCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQ3ZCO2lCQUNKO2FBQ0osQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtRQUM3RCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBNUtELHdCQTRLQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNlY3AyNTZrMSA9IHJlcXVpcmUoJ3NlY3AyNTZrMScpXHJcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuLi91dGlsc1wiXHJcblxyXG5pbXBvcnQgeyBCYWxhbmNlLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgSUJJUDMyLCBJSnNvblJwY1Byb3ZpZGVyLCBJU2lnbmVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IENvaW5zLCBLZXllZFNpZ25hdHVyZSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBVdHhvLCBVdHhvQ2FjaGVJbmZvLCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiLi90eXBlc1wiXHJcbmltcG9ydCB7IHNlbGVjdFV0eG9zIH0gZnJvbSBcIi4vdXRpbHNcIlxyXG5cclxuZXhwb3J0IGNsYXNzIFNpZ25lciBpbXBsZW1lbnRzIElTaWduZXIge1xyXG4gICAgXHJcbiAgICBwcm90ZWN0ZWQgbm9kZTogSUJJUDMyO1xyXG4gICAgcHJvdGVjdGVkIHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXHJcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZDogYm9vbGVhbjtcclxuICAgIFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyXHJcbiAgICBwdWJsaWMgc3RyYXRlZ3k6IFV0eG9TZWxlY3Rpb25TdHJhdGVneVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIG5vZGU6IElCSVAzMiwgXHJcbiAgICAgICAgcHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXIsIFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZVxyXG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBwcm92aWRlclxyXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneSB8fCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kuU2xpbUZpdFxyXG4gICAgICAgIGlmICghcHJvdmlkZXIubmV0d29yaykge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgU2lnbmVyOiBpbnRlcm5hbCBlcnJvcjogdW5pbnRpYWxpemVkIHByb3ZpZGVyLmApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvLyAtLS0gSUxlZGdlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgcHVibGljIGdldCBjYWNoZUluZm8oKTogVXR4b0NhY2hlSW5mbyB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMClcclxuICAgICAgICBsZXQgZXhwZW5kYWJsZTogYmlnaW50ID0gMG5cclxuICAgICAgICBsZXQgdGltZWxvY2s6IG51bWJlciA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXHJcbiAgICAgICAgdGhpcy51dHhvcy5tYXAodXR4byA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1dHhvLnRpbWVsb2NrID4gbm93KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA8IHRpbWVsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2sgPSB1dHhvLnRpbWVsb2NrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleHBlbmRhYmxlICs9IHV0eG8udmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKHRpbWVsb2NrID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgdGltZWxvY2sgPSAwO1xyXG4gICAgICAgIHJldHVybiB7IGV4cGVuZGFibGUsIHRpbWVsb2NrLCBzaXplOiB0aGlzLnV0eG9zLmxlbmd0aCB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBjaGFuZ2VQa2goKTogUHVibGljS2V5SGFzaFN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGtoXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBuZXR3b3JrKCk6IE5ldHdvcmsge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBraCgpOiBQdWJsaWNLZXlIYXNoU3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wdWJsaWNLZXkuaGFzaCgpLnRvQmVjaDMyKHRoaXMubmV0d29yaylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHB1YmxpY0tleSgpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkodGhpcy5ub2RlLnB1YmxpY0tleSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogeyBleGNsdWRlZDogQXJyYXk8VXR4bz4sIGluY2x1ZGVkOiBBcnJheTxVdHhvPiB9IHtcclxuICAgICAgICBjb25zdCBleGNsdWRlZDogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUG9pbnRlcnMgPSBuZXcgU2V0KHRoaXMudXR4b3MubWFwKGNhY2hlZCA9PiBjYWNoZWQub3V0cHV0X3BvaW50ZXIpKTtcclxuICAgICAgICBjb25zdCBpbmNsdWRlZDogQXJyYXk8VXR4bz4gPSB1dHhvcy5maWx0ZXIodXR4byA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1dHhvLnNpZ25lciA9PT0gdGhpcy5wa2gpIHtcclxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGFkZGluZyBkdXBsaWNhdGVzXHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUG9pbnRlcnMuaGFzKHV0eG8ub3V0cHV0X3BvaW50ZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQb2ludGVycy5hZGQodXR4by5vdXRwdXRfcG9pbnRlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVkLnB1c2godXR4bylcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy51dHhvcy5wdXNoKC4uLmluY2x1ZGVkKVxyXG4gICAgICAgIHJldHVybiB7IGV4Y2x1ZGVkLCBpbmNsdWRlZCB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbnN1bWVVdHhvcyguLi51dHhvczogQXJyYXk8VXR4bz4pOiBBcnJheTxVdHhvPiB7XHJcbiAgICAgICAgdGhpcy51dHhvcyA9IHRoaXMudXR4b3MuZmlsdGVyKGNhY2hlZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluY29taW5nSW5kZXggPSB1dHhvcy5maW5kSW5kZXgoaW5jb21pbmcgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyID09PSBpbmNvbWluZy5vdXRwdXRfcG9pbnRlcik7XHJcbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0luZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHV0eG9zLnNwbGljZShpbmNvbWluZ0luZGV4LCAxKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNpZ25lci5jb25zdW1lVXR4b3M6IHJlbWFpbmluZzpcIiwgdXR4b3MpXHJcbiAgICAgICAgcmV0dXJuIHV0eG9zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxCYWxhbmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuc3Rha2VzKHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7IHdpdGhkcmF3ZXI6IHRoaXMucGtoIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpZ25lcihwa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSVNpZ25lciB8IHVuZGVmaW5lZCB7IFxyXG4gICAgICAgIHJldHVybiAoIXBraCB8fCBwa2ggPT09IHRoaXMucGtoKSA/IHRoaXMgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VXR4b3MocmVsb2FkID0gZmFsc2UpOiBQcm9taXNlPEFycmF5PFV0eG8+PiB7XHJcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMudXR4b3MgPSAoYXdhaXQgdGhpcy5wcm92aWRlci5nZXRVdHhvcyh0aGlzLnBraCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXR4b3NcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VsZWN0VXR4b3Moc3BlY3M/OiB7XHJcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcclxuICAgICAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5XHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRVdHhvcyhzcGVjcz8ucmVsb2FkKVxyXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8vIC0tLSBJU2lnbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIFxyXG4gICAgcHVibGljIGFzeW5jIGdldFN0YWtlRW50cnlOb25jZSh2YWxpZGF0b3I6IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zdGFrZXMoeyBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcixcclxuICAgICAgICAgICAgICAgIHdpdGhkcmF3ZXI6IHRoaXMucGtoXHJcbiAgICAgICAgICAgIH19KS50aGVuKChbZW50cnldKSA9PiBlbnRyeS52YWx1ZS5ub25jZSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2lnbkhhc2goaGFzaDogYW55KTogS2V5ZWRTaWduYXR1cmUge1xyXG4gICAgICAgIGxldCBidWZmZXI6IEJ1ZmZlcjtcclxuICAgICAgICBpZiAoaGFzaCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20oaGFzaClcclxuICAgICAgICB9IGVsc2UgaWYgKGhhc2ggaW5zdGFuY2VvZiBCdWZmZXIpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gaGFzaFxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhhc2ggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHV0aWxzLmZyb21IZXhTdHJpbmcoaGFzaCkpICAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdW5zdXBwb3J0ZWQgaGFzaCB2YWx1ZTogJHtoYXNofWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci5sZW5ndGggIT09IDMyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIGhhc2ggbGVuZ3RoOiAke2J1ZmZlci5sZW5ndGh9ICE9IDMyYClcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wcml2YXRlS2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IFVpbnQ4QXJyYXkuZnJvbShidWZmZXIpXHJcbiAgICAgICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20odGhpcy5ub2RlLnByaXZhdGVLZXkpKVxyXG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzZWNwMjU2azEuZWNkc2FTaWduKG1zZywgcHJpdmF0ZUtleSkuc2lnbmF0dXJlXHJcbiAgICAgICAgICAgIGNvbnN0IGRlciA9IHNlY3AyNTZrMS5zaWduYXR1cmVFeHBvcnQoc2lnbmF0dXJlKVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHVibGljX2tleToge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHVibGljS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgYnl0ZXM6IEFycmF5LmZyb20odGhpcy5wdWJsaWNLZXkuYnl0ZXMpLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZToge1xyXG4gICAgICAgICAgICAgICAgICAgIFNlY3AyNTZrMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXI6IEFycmF5LmZyb20oZGVyKSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgU2lnbmVyOiBpbnZhbGlkIEJJUDMyIG5vZGU6IG5vIHByaXZhdGUga2V5YClcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXRDLGdEQUFpQztBQUlqQyxtQ0FBaUo7QUFDakosbUNBQXFDO0FBRXJDLE1BQWEsTUFBTTtJQVNmLFlBQ0ksSUFBWSxFQUNaLFFBQTBCLEVBQzFCLFFBQWdDO1FBVDFCLFVBQUssR0FBZ0IsRUFBRSxDQUFBO1FBVzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLDZCQUFxQixDQUFDLE9BQU8sQ0FBQTtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsbUhBQW1IO0lBRW5ILElBQVcsU0FBUztRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUE7UUFDM0IsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQzlDLElBQUksQ0FBQyxLQUFLLENB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b250ZW50IjpbImNvbnN0IGV0aGVycyA9IHJlcXVpcmUoJ2V0aGVycycpXHJcbmNvbnN0IGtlY2NhazI1NiA9IHJlcXVpcmUoJ2tlY2NhazI1NicpXHJcbmNvbnN0IHNlY3AyNTZrMSA9IHJlcXVpcmUoJ3NlY3AyNTZrMScpXHJcblxyXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi4vdXRpbHNcIlxyXG5cclxuaW1wb3J0IHsgQmFsYW5jZSwgSGV4U3RyaW5nLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgSUJJUDMyLCBJSnNvblJwY1Byb3ZpZGVyLCBJU2lnbmVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IENvaW5zLCBLZXllZFNpZ25hdHVyZSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBSZWNvdmVyYWJsZVNpZ25hdHVyZSwgVXR4bywgVXR4b0NhY2hlSW5mbywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBzZWxlY3RVdHhvcyB9IGZyb20gXCIuL3V0aWxzXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduZXIgaW1wbGVtZW50cyBJU2lnbmVyIHtcclxuICAgIFxyXG4gICAgcHJvdGVjdGVkIG5vZGU6IElCSVAzMjtcclxuICAgIHByb3RlY3RlZCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XHJcbiAgICBcclxuICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlclxyXG4gICAgcHVibGljIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBub2RlOiBJQklQMzIsIFxyXG4gICAgICAgIHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyLCBcclxuICAgICAgICBzdHJhdGVneT86IFV0eG9TZWxlY3Rpb25TdHJhdGVneSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGVcclxuICAgICAgICB0aGlzLnByb3ZpZGVyID0gcHJvdmlkZXJcclxuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gc3RyYXRlZ3kgfHwgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlNsaW1GaXRcclxuICAgICAgICBpZiAoIXByb3ZpZGVyLm5ldHdvcmspIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW50ZXJuYWwgZXJyb3I6IHVuaW50aWFsaXplZCBwcm92aWRlci5gKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLy8gLS0tIElMZWRnZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2FjaGVJbmZvKCk6IFV0eG9DYWNoZUluZm8ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApXHJcbiAgICAgICAgbGV0IGV4cGVuZGFibGU6IGJpZ2ludCA9IDBuXHJcbiAgICAgICAgbGV0IHRpbWVsb2NrOiBudW1iZXIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxyXG4gICAgICAgIHRoaXMudXR4b3MubWFwKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA+IG5vdykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHV0eG8udGltZWxvY2sgPCB0aW1lbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVsb2NrID0gdXR4by50aW1lbG9ja1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwZW5kYWJsZSArPSB1dHhvLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh0aW1lbG9jayA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHRpbWVsb2NrID0gMDtcclxuICAgICAgICByZXR1cm4geyBleHBlbmRhYmxlLCB0aW1lbG9jaywgc2l6ZTogdGhpcy51dHhvcy5sZW5ndGggfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlUGtoKCk6IFB1YmxpY0tleUhhc2hTdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBraFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgbmV0d29yaygpOiBOZXR3b3JrIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5uZXR3b3JrIHx8IFwibWFpbm5ldFwiXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwa2goKTogUHVibGljS2V5SGFzaFN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHVibGljS2V5Lmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwdWJsaWNLZXkoKTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5LmZyb21VaW50OEFycmF5KHRoaXMubm9kZS5wdWJsaWNLZXkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFV0eG9zKC4uLnV0eG9zOiBBcnJheTxVdHhvPik6IHsgZXhjbHVkZWQ6IEFycmF5PFV0eG8+LCBpbmNsdWRlZDogQXJyYXk8VXR4bz4gfSB7XHJcbiAgICAgICAgY29uc3QgZXhjbHVkZWQ6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICBjb25zdCBleGlzdGluZ1BvaW50ZXJzID0gbmV3IFNldCh0aGlzLnV0eG9zLm1hcChjYWNoZWQgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyKSk7XHJcbiAgICAgICAgY29uc3QgaW5jbHVkZWQ6IEFycmF5PFV0eG8+ID0gdXR4b3MuZmlsdGVyKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by5zaWduZXIgPT09IHRoaXMucGtoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCBhZGRpbmcgZHVwbGljYXRlc1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1BvaW50ZXJzLmhhcyh1dHhvLm91dHB1dF9wb2ludGVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUG9pbnRlcnMuYWRkKHV0eG8ub3V0cHV0X3BvaW50ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleGNsdWRlZC5wdXNoKHV0eG8pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudXR4b3MucHVzaCguLi5pbmNsdWRlZClcclxuICAgICAgICByZXR1cm4geyBleGNsdWRlZCwgaW5jbHVkZWQgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdW1lVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogQXJyYXk8VXR4bz4ge1xyXG4gICAgICAgIHRoaXMudXR4b3MgPSB0aGlzLnV0eG9zLmZpbHRlcihjYWNoZWQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0luZGV4ID0gdXR4b3MuZmluZEluZGV4KGluY29taW5nID0+IGNhY2hlZC5vdXRwdXRfcG9pbnRlciA9PT0gaW5jb21pbmcub3V0cHV0X3BvaW50ZXIpO1xyXG4gICAgICAgICAgICBpZiAoaW5jb21pbmdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB1dHhvcy5zcGxpY2UoaW5jb21pbmdJbmRleCwgMSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIHV0eG9zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxCYWxhbmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuc3Rha2VzKHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7IHdpdGhkcmF3ZXI6IHRoaXMucGtoIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpZ25lcihwa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSVNpZ25lciB8IHVuZGVmaW5lZCB7IFxyXG4gICAgICAgIHJldHVybiAoIXBraCB8fCBwa2ggPT09IHRoaXMucGtoKSA/IHRoaXMgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VXR4b3MocmVsb2FkID0gZmFsc2UpOiBQcm9taXNlPEFycmF5PFV0eG8+PiB7XHJcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMudXR4b3MgPSAoYXdhaXQgdGhpcy5wcm92aWRlci5nZXRVdHhvcyh0aGlzLnBraCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXR4b3NcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VsZWN0VXR4b3Moc3BlY3M/OiB7XHJcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcclxuICAgICAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5XHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRVdHhvcyhzcGVjcz8ucmVsb2FkKVxyXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8vIC0tLSBJU2lnbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBwdWJsaWMgYXV0aG9yaXplRXZtQWRkcmVzcyhldm1BZGRyZXNzOiBIZXhTdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGFkZHIgPSB1dGlscy5mcm9tSGV4U3RyaW5nKGV2bUFkZHJlc3MpXHJcbiAgICAgICAgY29uc3QgaGFzaCA9IGtlY2NhazI1NihCdWZmZXIuZnJvbShhZGRyKSlcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnByaXZhdGVLZXkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmluZ0tleSA9IG5ldyBldGhlcnMudXRpbHMuU2lnbmluZ0tleSh0aGlzLm5vZGUucHJpdmF0ZUtleSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbmluZ0tleS5zaWduRGlnZXN0KGhhc2gpXHJcbiAgICAgICAgICAgIGNvbnN0IHNpZyA9IGAweCR7c2lnbmF0dXJlLnIuc2xpY2UoMil9JHtzaWduYXR1cmUucy5zbGljZSgyKX0ke3NpZ25hdHVyZS52LnRvU3RyaW5nKDE2KX1gXHJcbiAgICAgICAgICAgIHJldHVybiBzaWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyBhc3luYyBnZXRTdGFrZUVudHJ5Tm9uY2UodmFsaWRhdG9yOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlclxyXG4gICAgICAgICAgICAuc3Rha2VzKHsgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3IsXHJcbiAgICAgICAgICAgICAgICB3aXRoZHJhd2VyOiB0aGlzLnBraFxyXG4gICAgICAgICAgICB9fSkudGhlbigoW2VudHJ5XSkgPT4gZW50cnkudmFsdWUubm9uY2UpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpZ25IYXNoKGhhc2g6IGFueSk6IEtleWVkU2lnbmF0dXJlIHtcclxuICAgICAgICBsZXQgYnVmZmVyOiBCdWZmZXI7XHJcbiAgICAgICAgaWYgKGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGhhc2gpXHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNoIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IGhhc2hcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBidWZmZXIgPSBCdWZmZXIuZnJvbSh1dGlscy5mcm9tSGV4U3RyaW5nKGhhc2gpKSAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHVuc3VwcG9ydGVkIGhhc2ggdmFsdWU6ICR7aGFzaH1gKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXIubGVuZ3RoICE9PSAzMikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW52YWxpZCBoYXNoIGxlbmd0aDogJHtidWZmZXIubGVuZ3RofSAhPSAzMmApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucHJpdmF0ZUtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBVaW50OEFycmF5LmZyb20oYnVmZmVyKVxyXG4gICAgICAgICAgICBjb25zdCBwcml2YXRlS2V5ID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHRoaXMubm9kZS5wcml2YXRlS2V5KSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2VjcDI1NmsxLmVjZHNhU2lnbihtc2csIHByaXZhdGVLZXkpLnNpZ25hdHVyZVxyXG4gICAgICAgICAgICBjb25zdCBkZXIgPSBzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHNpZ25hdHVyZSlcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkOiB0aGlzLnB1YmxpY0tleS5jb21wcmVzc2VkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHVibGljS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmU6IHtcclxuICAgICAgICAgICAgICAgICAgICBTZWNwMjU2azE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVyOiBBcnJheS5mcm9tKGRlciksXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW52YWxpZCBCSVAzMiBub2RlOiBubyBwcml2YXRlIGtleWApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaWduTWVzc2FnZSh0ZXh0OiBzdHJpbmcpOiB7XHJcbiAgICAgICAgYWRkcmVzczogc3RyaW5nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWNLZXk6IEhleFN0cmluZyxcclxuICAgICAgICBzaWduYXR1cmU6IEhleFN0cmluZ1xyXG4gICAgfSB7XHJcbiAgICAgICAgY29uc3QgZGlnZXN0ID0gdXRpbHMuZGlnZXN0TWVzc2FnZSh0ZXh0KVxyXG4gICAgICAgIGNvbnN0IGtleWVkU2lnbmF0dXJlID0gdGhpcy5zaWduSGFzaChkaWdlc3QpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5wa2gsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQsXHJcbiAgICAgICAgICAgIHB1YmxpY0tleTogUHVibGljS2V5LmZyb21Qcm90b2J1ZihrZXllZFNpZ25hdHVyZS5wdWJsaWNfa2V5KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgICAgICBzaWduYXR1cmU6IFJlY292ZXJhYmxlU2lnbmF0dXJlLmZyb21LZXllZFNpZ25hdHVyZShrZXllZFNpZ25hdHVyZSwgZGlnZXN0KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -109,7 +109,7 @@ export declare class PublicKey implements Key {
109
109
  constructor(compressed: number, bytes: Uint8Array);
110
110
  equals(pubKey: PublicKey): boolean;
111
111
  hash(): PublicKeyHash;
112
- toString(): string;
112
+ toHexString(): string;
113
113
  toUint8Array(): Uint8Array;
114
114
  }
115
115
  export declare class PublicKeyHash {
@@ -137,7 +137,7 @@ export declare class RecoverableSignature extends Signature {
137
137
  readonly pubKey: PublicKey;
138
138
  readonly recoveryId: number;
139
139
  constructor(pubKey: PublicKey, bytes: Uint8Array, msg: Uint8Array);
140
- toHexString(): string;
140
+ toHexString(prefix0x?: boolean): string;
141
141
  toKeyedSignature(): any;
142
142
  toProtobuf(): any;
143
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/types.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,6 @@ class Coins {
42
42
  throw new TypeError(`${this.constructor.name}: internal error: too many coins: ${quotient.toString()} > ${Number.MAX_SAFE_INTEGER}`);
43
43
  }
44
44
  const rest = Number(BigInt(this.coins) - quotient * 1000000000n) / 1000000000;
45
- // console.log("wits() =>", this.coins.toString(), quotient.toString(), rest, Number(quotient) + rest)
46
45
  return Number(quotient) + rest;
47
46
  }
48
47
  toString(decimals = 9) {
@@ -105,7 +104,7 @@ class PublicKey {
105
104
  hash() {
106
105
  return PublicKeyHash.fromPublicKey(this);
107
106
  }
108
- toString() {
107
+ toHexString() {
109
108
  return (0, helpers_1.toHexString)([this.compressed, ...this.bytes]);
110
109
  }
111
110
  toUint8Array() {
@@ -216,8 +215,8 @@ class RecoverableSignature extends Signature {
216
215
  this.pubKey = pubKey;
217
216
  this.recoveryId = recoveryId;
218
217
  }
219
- toHexString() {
220
- return (0, helpers_1.toHexString)([this.recoveryId, ...this.bytes]);
218
+ toHexString(prefix0x = false) {
219
+ return (0, helpers_1.toHexString)([this.recoveryId, ...this.bytes], prefix0x);
221
220
  }
222
221
  toKeyedSignature() {
223
222
  return {
@@ -270,4 +269,4 @@ exports.TransmissionError = TransmissionError;
270
269
  function matchingUint8Arrays(a, b) {
271
270
  return a.length === b.length && a.every((value, index) => value === b[index]);
272
271
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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QU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBQ0QsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxPQUFnQjtRQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7Q0FDSjtBQUpELG9DQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBRTlDLFlBQWEsS0FBYSxFQUFFLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFORCxvQ0FNQztBQUdELE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUd4QyxZQUFZLFFBQXNCLEVBQUUsS0FBVztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFURCw4Q0FTQztBQUdELHVIQUF1SDtBQUN2SCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKCdzZWNwMjU2azEnKVxyXG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXHJcbmltcG9ydCB7IEJhbGFuY2UsIEVwb2NoLCBIYXNoLCBIZXhTdHJpbmcsIFV0eG9NZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiXHJcblxyXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCBpc0hleFN0cmluZywgdG9IZXhTdHJpbmcsIHdob2xlX3dpdHMgfSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcblxyXG5leHBvcnQgY2xhc3MgQ29pbnMge1xyXG4gICAgcHJvdGVjdGVkIGNvaW5zOiBiaWdpbnQ7XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21CYWxhbmNlKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3MoXHJcbiAgICAgICAgICAgIGJhbGFuY2UubG9ja2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2Uuc3Rha2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2UudW5sb2NrZWRcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21OYW5vd2l0cyhuYW5vd2l0czogYmlnaW50KTogQ29pbnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMobmFub3dpdHMpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21QZWRyb3MocGVkcm9zOiBiaWdpbnQpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucyhwZWRyb3MpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21XaXRzKHdpdHM6IG51bWJlcik6IENvaW5zIHtcclxuICAgICAgICBpZiAod2l0cyA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogdG9vIG1hbnkgd2l0czogJHt3aXRzfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMoXHJcbiAgICAgICAgICAgIEJpZ0ludChNYXRoLmZsb29yKHdpdHMpKSAqIDEwbiAqKiA5blxyXG4gICAgICAgICAgICAgICAgKyBCaWdJbnQoTWF0aC5mbG9vcigod2l0cyAtIE1hdGguZmxvb3Iod2l0cykpICogMTAwMDAwMDAwMCkpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyB6ZXJvKCk6IENvaW5zIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKDBuKVxyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IgKHBlZHJvczogYmlnaW50KSB7XHJcbiAgICAgICAgdGhpcy5jb2lucyA9IHBlZHJvc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBwZWRyb3MoKTogYmlnaW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBuYW5vd2l0cygpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvaW5zXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHdpdHMoKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBxdW90aWVudCA9IEJpZ0ludCh0aGlzLmNvaW5zKSAvIDEwMDAwMDAwMDBuXHJcbiAgICAgICAgaWYgKE51bWJlcihxdW90aWVudCkgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IGNvaW5zOiAke3F1b3RpZW50LnRvU3RyaW5nKCl9ID4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn1gXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzdCA9IE51bWJlcihCaWdJbnQodGhpcy5jb2lucykgLSBxdW90aWVudCAqIDEwMDAwMDAwMDBuKSAvIDEwMDAwMDAwMDBcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIndpdHMoKSA9PlwiLCB0aGlzLmNvaW5zLnRvU3RyaW5nKCksIHF1b3RpZW50LnRvU3RyaW5nKCksIHJlc3QsIE51bWJlcihxdW90aWVudCkgKyByZXN0KVxyXG4gICAgICAgIHJldHVybiBOdW1iZXIocXVvdGllbnQpICsgcmVzdFxyXG4gICAgfVxyXG4gICAgcHVibGljIHRvU3RyaW5nKGRlY2ltYWxzID0gOSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHdob2xlX3dpdHModGhpcy5jb2lucywgZGVjaW1hbHMpXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEtleVBhdGggPSBBcnJheTxudW1iZXI+XHJcblxyXG5leHBvcnQgdHlwZSBLZXllZFNpZ25hdHVyZSA9IHtcclxuICAgIHNpZ25hdHVyZTogeyBTZWNwMjU2azE6IHsgZGVyOiBBcnJheTxudW1iZXI+IH19LFxyXG4gICAgcHVibGljX2tleToge1xyXG4gICAgICAgIGJ5dGVzOiBBcnJheTxudW1iZXI+O1xyXG4gICAgICAgIGNvbXByZXNzZWQ6IG51bWJlcixcclxuICAgIH0sXHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBQdWJsaWNLZXlIYXNoU3RyaW5nID0gSGV4U3RyaW5nXHJcblxyXG5pbnRlcmZhY2UgS2V5IHtcclxuICAgIGJ5dGVzOiBVaW50OEFycmF5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVLZXkgZXh0ZW5kcyBLZXkge1xyXG4gICAgdHlwZTogXCJwcml2YXRlXCI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljS2V5IGV4dGVuZHMgS2V5IHtcclxuICAgIHR5cGU6IFwicHVibGljXCI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uQ2FsbGJhY2sgPSAocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBlcnJvcj86IGFueSkgPT4gYW55XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblBhcmFtcyA9IHtcclxuICAgIGRlYWRsaW5lPzogRXBvY2gsXHJcbiAgICBmZWVzPzogVHJhbnNhY3Rpb25Qcmlvcml0eSB8IENvaW5zLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBUcmFuc2FjdGlvblByaW9yaXR5IHtcclxuICAgIFN0aW5reSA9IFwic3Rpbmt5XCIsXHJcbiAgICBMb3cgPSBcImxvd1wiLFxyXG4gICAgTWVkaXVtID0gXCJtZWRpdW1cIixcclxuICAgIEhpZ2ggPSBcImhpZ2hcIixcclxuICAgIE9wdWxlbnQgPSBcIm9wdWxlbnRcIixcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25SZWNlaXB0ID0ge1xyXG4gICAgYXV0aG9yaXphdGlvbj86IEhleFN0cmluZztcclxuICAgIGJsb2NrRXBvY2g/OiBFcG9jaCxcclxuICAgIGJsb2NrSGFzaD86IEhhc2gsXHJcbiAgICBibG9ja01pbmVyPzogUHVibGljS2V5SGFzaFN0cmluZyxcclxuICAgIGJsb2NrVGltZXN0YW1wPzogbnVtYmVyLFxyXG4gICAgY29uZmlybWF0aW9ucz86IG51bWJlcjtcclxuICAgIGNoYW5nZT86IENvaW5zO1xyXG4gICAgZHJvSGFzaD86IEhhc2g7XHJcbiAgICBlcnJvcj86IEVycm9yLFxyXG4gICAgZmVlczogQ29pbnM7XHJcbiAgICBmcm9tPzogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCBQdWJsaWNLZXlIYXNoU3RyaW5nO1xyXG4gICAgaGFzaDogSGFzaDtcclxuICAgIG91dHB1dExvY2s/OiBudW1iZXI7XHJcbiAgICByYWRBcmdzPzogYW55O1xyXG4gICAgcmFkSGFzaD86IEhleFN0cmluZztcclxuICAgIHJlY2lwaWVudHM/OiBBcnJheTxbUHVibGljS2V5SGFzaFN0cmluZywgQ29pbnNdPjtcclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG4gICAgdGltZXN0YW1wOiBudW1iZXI7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICB0eD86IGFueTtcclxuICAgIHZhbGlkYXRvcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICB2YWx1ZT86IENvaW5zO1xyXG4gICAgd2VpZ2h0OiBudW1iZXI7XHJcbiAgICB3aXRoZHJhd2VyPzogUHVibGljS2V5SGFzaFN0cmluZztcclxuICAgIHdpdG5lc3Nlcz86IG51bWJlciB8IFJlY29yZDxQdWJsaWNLZXlIYXNoU3RyaW5nLCBDb2lucz47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uU3RhdHVzID0gXCJzaWduZWRcIiB8IFwicGVuZGluZ1wiIHwgXCJyZWxheWVkXCIgfCBcInJlbW92ZWRcIiB8IFwibWluZWRcIiB8IFwiY29uZmlybWVkXCIgfCBcImZpbmFsaXplZFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNtaXNzaW9uID0ge1xyXG4gICAgYnl0ZWNvZGU/OiBVaW50OEFycmF5LFxyXG4gICAgaGFzaD86IEhhc2g7XHJcbiAgICBtZXNzYWdlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFV0eG8gPSBVdHhvTWV0YWRhdGEgJiB7IHNpZ25lcjogUHVibGljS2V5SGFzaFN0cmluZyB9XHJcblxyXG5leHBvcnQgdHlwZSBVdHhvQ2FjaGVJbmZvID0ge1xyXG4gICAgLy8gdG90YWwgYW1vdW50IG9mIGV4cGVuZGFibGUgZnVuZHMgd2l0aCBjdXJyZW50bHkgY2FjaGVkIFVUWE9zXHJcbiAgICBleHBlbmRhYmxlOiBiaWdpbnQsIFxyXG4gICAgLy8gbnVtYmVyIG9mIGNhY2hlZCBVVFhPc1xyXG4gICAgc2l6ZTogbnVtYmVyLCBcclxuICAgIC8vIGVhcmxpZXN0IG9mIGFsbCB0aW1lbG9ja3MgaW4gdGhlIGNhY2jDqVxyXG4gICAgdGltZWxvY2s6IG51bWJlcixcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVXR4b1BvaW50ZXIgPSB7XHJcbiAgICAvLyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyXHJcbiAgICB0cmFuc2FjdGlvbl9pZDogSGFzaDtcclxuICAgIC8vIG91dHB1dCBpbmRleCB3aXRoaW4gcmVmZXJyZWQgdHJhbnNhY3Rpb25cclxuICAgIG91dHB1dF9pbmRleDogbnVtYmVyO1xyXG59O1xyXG5cclxuZXhwb3J0IGVudW0gVXR4b1NlbGVjdGlvblN0cmF0ZWd5IHtcclxuICAgIEJpZ0ZpcnN0ID0gXCJiaWctZmlyc3RcIixcclxuICAgIFJhbmRvbSA9IFwicmFuZG9tXCIsXHJcbiAgICBTbGltRml0ID0gXCJzbGltLWZpdFwiLFxyXG4gICAgU21hbGxGaXJzdCA9IFwic21hbGwtZmlyc3RcIixcclxufVxyXG5cclxuXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbi8vLyBFWFBPUlRFRCBDTEFTU0VTIFxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFB1YmxpY0tleSBpbXBsZW1lbnRzIEtleSB7XHJcbiAgICBcclxuICAgIHB1YmxpYyByZWFkb25seSBjb21wcmVzc2VkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnl0ZXM6IFVpbnQ4QXJyYXk7XHJcblxyXG4gICAgc3RhdGljIGZyb21Qcm90b2J1Zihwcm90b2J1ZjogeyBjb21wcmVzc2VkOiBudW1iZXIsIGJ5dGVzOiBBcnJheTxudW1iZXI+IH0pOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KHByb3RvYnVmLmNvbXByZXNzZWQsIFVpbnQ4QXJyYXkuZnJvbShwcm90b2J1Zi5ieXRlcykpXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21VaW50OEFycmF5KHVpbnQ4QXJyYXk6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KFxyXG4gICAgICAgICAgICB1aW50OEFycmF5WzBdLFxyXG4gICAgICAgICAgICB1aW50OEFycmF5LnNsaWNlKDEpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlY292ZXJGcm9tKHJlY292ZXJhYmxlOiBhbnksIG1zZzogVWludDhBcnJheSk6IFB1YmxpY0tleSB7XHJcbiAgICAgICAgbGV0IGJ5dGVzXHJcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xyXG4gICAgICAgICAgICBieXRlcyA9IGZyb21IZXhTdHJpbmcocmVjb3ZlcmFibGUpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFB1YmxpY0tleTogdW5zdXBwb3J0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIGZvcm1hdDogJHtyZWNvdmVyYWJsZX1gKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSA2NSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXk6IGV4cGVjdGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSB3aXRoIGxlbmd0aCA2NTogJHt0b0hleFN0cmluZyhieXRlcyl9YClcclxuICAgICAgICB9IFxyXG4gICAgICAgIGNvbnN0IFsgcmVjb3ZlcnlJZCwgc2lnbmF0dXJlIF0gPSBbIGJ5dGVzWzBdLCBieXRlcy5zbGljZSgxKSBdXHJcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleS5mcm9tVWludDhBcnJheShzZWNwMjU2azEuZWNkc2FSZWNvdmVyKHNpZ25hdHVyZSwgcmVjb3ZlcnlJZCwgbXNnKSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb21wcmVzc2VkOiBudW1iZXIsIGJ5dGVzOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5jb21wcmVzc2VkID0gY29tcHJlc3NlZFxyXG4gICAgICAgIHRoaXMuYnl0ZXMgPSBieXRlc1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlcXVhbHMocHViS2V5OiBQdWJsaWNLZXkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcHViS2V5LmNvbXByZXNzZWQgPT09IHRoaXMuY29tcHJlc3NlZCAmJiBtYXRjaGluZ1VpbnQ4QXJyYXlzKHB1YktleS5ieXRlcywgcHViS2V5LmJ5dGVzKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYXNoKCk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21QdWJsaWNLZXkodGhpcylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMuY29tcHJlc3NlZCwgLi4udGhpcy5ieXRlc10pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvVWludDhBcnJheSgpOiBVaW50OEFycmF5IHtcclxuICAgICAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXlIYXNoIHtcclxuXHJcbiAgICBzdGF0aWMgZnJvbUhhc2goaGFzaDogVWludDhBcnJheSk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIudG9Xb3JkcyhoYXNoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21IZXhTdHJpbmcoaGFzaDogSGV4U3RyaW5nKTogUHVibGljS2V5SGFzaCB7XHJcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleUhhc2guZnJvbUhhc2goZnJvbUhleFN0cmluZyhoYXNoKSlcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIGZyb21QdWJsaWNLZXkocGs6IFB1YmxpY0tleSk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21IYXNoKFxyXG4gICAgICAgICAgICBzaGEyNTYoXHJcbiAgICAgICAgICAgICAgICBCdWZmZXIuZnJvbShbcGsuY29tcHJlc3NlZCwgLi4ucGsuYnl0ZXNdKVxyXG4gICAgICAgICAgICApLnN1YmFycmF5KDAsIDIwKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBmcm9tQmVjaDMyKHBraDogc3RyaW5nKTogUHVibGljS2V5SGFzaCB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGtoID0gcGtoLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgaWYgKHBraC5zdGFydHNXaXRoKCd3aXQnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi5kZWNvZGUocGtoLCA2Nikud29yZHMpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGtoLnN0YXJ0c1dpdGgoJ3R3aXQnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi5kZWNvZGUocGtoLCA2Nykud29yZHMpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFB1YmxpY0tleUhhc2g6IGludmFsaWQgYmVjaDMyIHN0cmluZzogJHtwa2h9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB3b3JkczogbnVtYmVyW107XHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yKHdvcmRzOiBudW1iZXJbXSkge1xyXG4gICAgICAgIHRoaXMud29yZHMgPSB3b3Jkc1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0JlY2gzMihuZXR3b3JrID0gXCJtYWlubmV0XCIpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBuZXR3b3JrID09PSBcIm1haW5uZXRcIiA/IGJlY2gzMi5lbmNvZGUoJ3dpdCcsIHRoaXMud29yZHMsIDY2KSA6IGJlY2gzMi5lbmNvZGUoJ3R3aXQnLCB0aGlzLndvcmRzLCA2Nyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvQnl0ZXMyMCgpOiBVaW50OEFycmF5IHtcclxuICAgICAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKGJlY2gzMi5mcm9tV29yZHModGhpcy53b3Jkcykuc2xpY2UoMCwgMjApKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0J5dGVzMzIoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbXHJcbiAgICAgICAgICAgIC4uLmJlY2gzMi5mcm9tV29yZHModGhpcy53b3Jkcykuc2xpY2UoMCwgMjApLFxyXG4gICAgICAgICAgICAuLi5uZXcgQXJyYXkoMTIpLmZpbGwoMCksXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMudG9CeXRlczIwKCkpXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlIHtcclxuXHJcbiAgICBzdGF0aWMgZnJvbUhleFN0cmluZyhoZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoZnJvbUhleFN0cmluZyhoZXgpKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBieXRlczogVWludDhBcnJheTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciAoYnl0ZXM6IFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcclxuICAgIH1cclxuICAgIFxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuYnl0ZXMpXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgUmVjb3ZlcmFibGVTaWduYXR1cmUgZXh0ZW5kcyBTaWduYXR1cmUge1xyXG5cclxuICAgIHN0YXRpYyBmcm9tKHJlY292ZXJhYmxlOiBhbnksIG1zZzogVWludDhBcnJheSk6IFJlY292ZXJhYmxlU2lnbmF0dXJlIHtcclxuICAgICAgICBsZXQgYnl0ZXNcclxuICAgICAgICBpZiAoaXNIZXhTdHJpbmcocmVjb3ZlcmFibGUpKSB7XHJcbiAgICAgICAgICAgIGJ5dGVzID0gZnJvbUhleFN0cmluZyhyZWNvdmVyYWJsZSkuc2xpY2UoMSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIGJ5dGVzID0gVWludDhBcnJheS5mcm9tKHJlY292ZXJhYmxlLmJ1ZmZlcikuc2xpY2UoMSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xyXG4gICAgICAgICAgICBieXRlcyA9IHJlY292ZXJhYmxlLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXR1cmU6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXRyZTogZXhwZWN0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIHdpdGggbGVuZ3RoIDY1OiAke3RvSGV4U3RyaW5nKGJ5dGVzKX1gKVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWNvdmVyYWJsZVNpZ25hdHVyZShQdWJsaWNLZXkucmVjb3ZlckZyb20ocmVjb3ZlcmFibGUsIG1zZyksIGJ5dGVzLCBtc2cpXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21LZXllZFNpZ25hdHVyZShrczogS2V5ZWRTaWduYXR1cmUsIG1zZzogVWludDhBcnJheSk6IFJlY292ZXJhYmxlU2lnbmF0dXJlIHtcclxuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJhYmxlU2lnbmF0dXJlKFxyXG4gICAgICAgICAgICBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKGtzLnB1YmxpY19rZXkpLFxyXG4gICAgICAgICAgICBzZWNwMjU2azEuc2lnbmF0dXJlSW1wb3J0KFVpbnQ4QXJyYXkuZnJvbShrcy5zaWduYXR1cmUuU2VjcDI1NmsxLmRlcikpLFxyXG4gICAgICAgICAgICBtc2dcclxuICAgICAgICApICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IFVpbnQ4QXJyYXlcclxuICAgIHB1YmxpYyByZWFkb25seSBwdWJLZXk6IFB1YmxpY0tleVxyXG4gICAgcHVibGljIHJlYWRvbmx5IHJlY292ZXJ5SWQ6IG51bWJlclxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3RvciAocHViS2V5OiBQdWJsaWNLZXksIGJ5dGVzOiBVaW50OEFycmF5LCBtc2c6IFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICBzdXBlcihieXRlcylcclxuICAgICAgICBjb25zdCBwdWJLZXlSYXcgPSBwdWJLZXkudG9VaW50OEFycmF5KClcclxuICAgICAgICBsZXQgcmVjb3ZlcnlJZDogbnVtYmVyO1xyXG4gICAgICAgIGZvciAocmVjb3ZlcnlJZCA9IDA7IHJlY292ZXJ5SWQgPCA0OyByZWNvdmVyeUlkICsrKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvdmVyZWQgXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgcmVjb3ZlcmVkID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihieXRlcywgcmVjb3ZlcnlJZCwgbXNnKVxyXG4gICAgICAgICAgICAgIGlmIChtYXRjaGluZ1VpbnQ4QXJyYXlzKHJlY292ZXJlZCwgcHViS2V5UmF3KSkgYnJlYWs7XHJcbiAgICAgICAgICAgIH0gY2F0Y2gge31cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbXNnXHJcbiAgICAgICAgdGhpcy5wdWJLZXkgPSBwdWJLZXlcclxuICAgICAgICB0aGlzLnJlY292ZXJ5SWQgPSByZWNvdmVyeUlkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLnJlY292ZXJ5SWQsIC4uLnRoaXMuYnl0ZXNdKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiB7IFNlY3AyNTZrMTogeyBkZXI6IEFycmF5LmZyb20oc2VjcDI1NmsxLnNpZ25hdHVyZUV4cG9ydCh0aGlzLmJ5dGVzKSkgfX0sXHJcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHViS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHViS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcclxuICAgICAgICAgICAgcHVibGljS2V5OiB7IHB1YmxpY0tleTogQXJyYXkuZnJvbShbIHRoaXMucHViS2V5LmNvbXByZXNzZWQsIC4uLnRoaXMucHViS2V5LmJ5dGVzIF0pIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSByZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHRcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICAgICAgdGhpcy5yZWNlaXB0ID0gcmVjZWlwdFxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNZW1wb29sRXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIHJlYWRvbmx5IG1zZWNzOiBudW1iZXI7XHJcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocmVjZWlwdCwgbWVzc2FnZSlcclxuICAgICAgICB0aGlzLm1zZWNzID0gbXNlY3NcclxuICAgIH1cclxufVxyXG4gICAgXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNtaXNzaW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSBlcnJvcj86IGFueTtcclxuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XHJcbiAgICBjb25zdHJ1Y3RvcihpbkZsaWdodDogVHJhbnNtaXNzaW9uLCBlcnJvcj86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKEpTT04uc3RyaW5naWZ5KGVycm9yKSlcclxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXHJcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgdGhpcy5pbkZsaWdodCA9IGluRmxpZ2h0XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8gLS0tIEludGVybmFsIGZ1bmN0aW9ucyBcclxuXHJcbmZ1bmN0aW9uIG1hdGNoaW5nVWludDhBcnJheXMoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSkge1xyXG4gICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBiW2luZGV4XSlcclxufVxyXG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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O1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBQ0QsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxPQUFnQjtRQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7Q0FDSjtBQUpELG9DQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBRTlDLFlBQWEsS0FBYSxFQUFFLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFORCxvQ0FNQztBQUdELE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUd4QyxZQUFZLFFBQXNCLEVBQUUsS0FBVztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFURCw4Q0FTQztBQUdELHVIQUF1SDtBQUN2SCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKCdzZWNwMjU2azEnKVxyXG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXHJcbmltcG9ydCB7IEJhbGFuY2UsIEVwb2NoLCBIYXNoLCBIZXhTdHJpbmcsIFV0eG9NZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiXHJcblxyXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCBpc0hleFN0cmluZywgdG9IZXhTdHJpbmcsIHdob2xlX3dpdHMgfSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcblxyXG5leHBvcnQgY2xhc3MgQ29pbnMge1xyXG4gICAgcHJvdGVjdGVkIGNvaW5zOiBiaWdpbnQ7XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21CYWxhbmNlKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3MoXHJcbiAgICAgICAgICAgIGJhbGFuY2UubG9ja2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2Uuc3Rha2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2UudW5sb2NrZWRcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21OYW5vd2l0cyhuYW5vd2l0czogYmlnaW50KTogQ29pbnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMobmFub3dpdHMpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21QZWRyb3MocGVkcm9zOiBiaWdpbnQpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucyhwZWRyb3MpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21XaXRzKHdpdHM6IG51bWJlcik6IENvaW5zIHtcclxuICAgICAgICBpZiAod2l0cyA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogdG9vIG1hbnkgd2l0czogJHt3aXRzfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMoXHJcbiAgICAgICAgICAgIEJpZ0ludChNYXRoLmZsb29yKHdpdHMpKSAqIDEwbiAqKiA5blxyXG4gICAgICAgICAgICAgICAgKyBCaWdJbnQoTWF0aC5mbG9vcigod2l0cyAtIE1hdGguZmxvb3Iod2l0cykpICogMTAwMDAwMDAwMCkpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyB6ZXJvKCk6IENvaW5zIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKDBuKVxyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IgKHBlZHJvczogYmlnaW50KSB7XHJcbiAgICAgICAgdGhpcy5jb2lucyA9IHBlZHJvc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBwZWRyb3MoKTogYmlnaW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBuYW5vd2l0cygpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvaW5zXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHdpdHMoKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBxdW90aWVudCA9IEJpZ0ludCh0aGlzLmNvaW5zKSAvIDEwMDAwMDAwMDBuXHJcbiAgICAgICAgaWYgKE51bWJlcihxdW90aWVudCkgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IGNvaW5zOiAke3F1b3RpZW50LnRvU3RyaW5nKCl9ID4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn1gXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzdCA9IE51bWJlcihCaWdJbnQodGhpcy5jb2lucykgLSBxdW90aWVudCAqIDEwMDAwMDAwMDBuKSAvIDEwMDAwMDAwMDBcclxuICAgICAgICByZXR1cm4gTnVtYmVyKHF1b3RpZW50KSArIHJlc3RcclxuICAgIH1cclxuICAgIHB1YmxpYyB0b1N0cmluZyhkZWNpbWFscyA9IDkpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB3aG9sZV93aXRzKHRoaXMuY29pbnMsIGRlY2ltYWxzKVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gQXJyYXk8bnVtYmVyPlxyXG5cclxuZXhwb3J0IHR5cGUgS2V5ZWRTaWduYXR1cmUgPSB7XHJcbiAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXk8bnVtYmVyPiB9fSxcclxuICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICBieXRlczogQXJyYXk8bnVtYmVyPjtcclxuICAgICAgICBjb21wcmVzc2VkOiBudW1iZXIsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUHVibGljS2V5SGFzaFN0cmluZyA9IEhleFN0cmluZ1xyXG5cclxuaW50ZXJmYWNlIEtleSB7XHJcbiAgICBieXRlczogVWludDhBcnJheTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlS2V5IGV4dGVuZHMgS2V5IHtcclxuICAgIHR5cGU6IFwicHJpdmF0ZVwiO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0tleSBleHRlbmRzIEtleSB7XHJcbiAgICB0eXBlOiBcInB1YmxpY1wiO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrID0gKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgZXJyb3I/OiBhbnkpID0+IGFueVxyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25QYXJhbXMgPSB7XHJcbiAgICBkZWFkbGluZT86IEVwb2NoLFxyXG4gICAgZmVlcz86IFRyYW5zYWN0aW9uUHJpb3JpdHkgfCBDb2lucyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25Qcmlvcml0eSB7XHJcbiAgICBTdGlua3kgPSBcInN0aW5reVwiLFxyXG4gICAgTG93ID0gXCJsb3dcIixcclxuICAgIE1lZGl1bSA9IFwibWVkaXVtXCIsXHJcbiAgICBIaWdoID0gXCJoaWdoXCIsXHJcbiAgICBPcHVsZW50ID0gXCJvcHVsZW50XCIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcclxuICAgIGF1dGhvcml6YXRpb24/OiBIZXhTdHJpbmc7XHJcbiAgICBibG9ja0Vwb2NoPzogRXBvY2gsXHJcbiAgICBibG9ja0hhc2g/OiBIYXNoLFxyXG4gICAgYmxvY2tNaW5lcj86IFB1YmxpY0tleUhhc2hTdHJpbmcsXHJcbiAgICBibG9ja1RpbWVzdGFtcD86IG51bWJlcixcclxuICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XHJcbiAgICBjaGFuZ2U/OiBDb2lucztcclxuICAgIGRyb0hhc2g/OiBIYXNoO1xyXG4gICAgZXJyb3I/OiBFcnJvcixcclxuICAgIGZlZXM6IENvaW5zO1xyXG4gICAgZnJvbT86IEFycmF5PFB1YmxpY0tleUhhc2hTdHJpbmc+IHwgUHVibGljS2V5SGFzaFN0cmluZztcclxuICAgIGhhc2g6IEhhc2g7XHJcbiAgICBvdXRwdXRMb2NrPzogbnVtYmVyO1xyXG4gICAgcmFkQXJncz86IGFueTtcclxuICAgIHJhZEhhc2g/OiBIZXhTdHJpbmc7XHJcbiAgICByZWNpcGllbnRzPzogQXJyYXk8W1B1YmxpY0tleUhhc2hTdHJpbmcsIENvaW5zXT47XHJcbiAgICBzdGF0dXM6IHN0cmluZztcclxuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgdHg/OiBhbnk7XHJcbiAgICB2YWxpZGF0b3I/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xyXG4gICAgdmFsdWU/OiBDb2lucztcclxuICAgIHdlaWdodDogbnVtYmVyO1xyXG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICB3aXRuZXNzZXM/OiBudW1iZXIgfCBSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQ29pbnM+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblN0YXR1cyA9IFwic2lnbmVkXCIgfCBcInBlbmRpbmdcIiB8IFwicmVsYXllZFwiIHwgXCJyZW1vdmVkXCIgfCBcIm1pbmVkXCIgfCBcImNvbmZpcm1lZFwiIHwgXCJmaW5hbGl6ZWRcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcclxuICAgIGJ5dGVjb2RlPzogVWludDhBcnJheSxcclxuICAgIGhhc2g/OiBIYXNoO1xyXG4gICAgbWVzc2FnZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVdHhvID0gVXR4b01ldGFkYXRhICYgeyBzaWduZXI6IFB1YmxpY0tleUhhc2hTdHJpbmcgfVxyXG5cclxuZXhwb3J0IHR5cGUgVXR4b0NhY2hlSW5mbyA9IHtcclxuICAgIC8vIHRvdGFsIGFtb3VudCBvZiBleHBlbmRhYmxlIGZ1bmRzIHdpdGggY3VycmVudGx5IGNhY2hlZCBVVFhPc1xyXG4gICAgZXhwZW5kYWJsZTogYmlnaW50LCBcclxuICAgIC8vIG51bWJlciBvZiBjYWNoZWQgVVRYT3NcclxuICAgIHNpemU6IG51bWJlciwgXHJcbiAgICAvLyBlYXJsaWVzdCBvZiBhbGwgdGltZWxvY2tzIGluIHRoZSBjYWNow6lcclxuICAgIHRpbWVsb2NrOiBudW1iZXIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFV0eG9Qb2ludGVyID0ge1xyXG4gICAgLy8gdHJhbnNhY3Rpb24gaWRlbnRpZmllclxyXG4gICAgdHJhbnNhY3Rpb25faWQ6IEhhc2g7XHJcbiAgICAvLyBvdXRwdXQgaW5kZXggd2l0aGluIHJlZmVycmVkIHRyYW5zYWN0aW9uXHJcbiAgICBvdXRwdXRfaW5kZXg6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIFV0eG9TZWxlY3Rpb25TdHJhdGVneSB7XHJcbiAgICBCaWdGaXJzdCA9IFwiYmlnLWZpcnN0XCIsXHJcbiAgICBSYW5kb20gPSBcInJhbmRvbVwiLFxyXG4gICAgU2xpbUZpdCA9IFwic2xpbS1maXRcIixcclxuICAgIFNtYWxsRmlyc3QgPSBcInNtYWxsLWZpcnN0XCIsXHJcbn1cclxuXHJcblxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vLy8gRVhQT1JURUQgQ0xBU1NFUyBcclxuXHJcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBLZXkge1xyXG4gICAgXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcHJlc3NlZDogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xyXG5cclxuICAgIHN0YXRpYyBmcm9tUHJvdG9idWYocHJvdG9idWY6IHsgY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogQXJyYXk8bnVtYmVyPiB9KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShwcm90b2J1Zi5jb21wcmVzc2VkLCBVaW50OEFycmF5LmZyb20ocHJvdG9idWYuYnl0ZXMpKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tVWludDhBcnJheSh1aW50OEFycmF5OiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShcclxuICAgICAgICAgICAgdWludDhBcnJheVswXSxcclxuICAgICAgICAgICAgdWludDhBcnJheS5zbGljZSgxKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWNvdmVyRnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIGxldCBieXRlc1xyXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBmcm9tSGV4U3RyaW5nKHJlY292ZXJhYmxlKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ5dGVzID0gcmVjb3ZlcmFibGVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXk6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiBleHBlY3RlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgd2l0aCBsZW5ndGggNjU6ICR7dG9IZXhTdHJpbmcoYnl0ZXMpfWApXHJcbiAgICAgICAgfSBcclxuICAgICAgICBjb25zdCBbIHJlY292ZXJ5SWQsIHNpZ25hdHVyZSBdID0gWyBieXRlc1swXSwgYnl0ZXMuc2xpY2UoMSkgXVxyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkoc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihzaWduYXR1cmUsIHJlY292ZXJ5SWQsIG1zZykpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogVWludDhBcnJheSkge1xyXG4gICAgICAgIHRoaXMuY29tcHJlc3NlZCA9IGNvbXByZXNzZWRcclxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXF1YWxzKHB1YktleTogUHVibGljS2V5KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHB1YktleS5jb21wcmVzc2VkID09PSB0aGlzLmNvbXByZXNzZWQgJiYgbWF0Y2hpbmdVaW50OEFycmF5cyhwdWJLZXkuYnl0ZXMsIHB1YktleS5ieXRlcylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzaCgpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tUHVibGljS2V5KHRoaXMpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b1VpbnQ4QXJyYXkoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbdGhpcy5jb21wcmVzc2VkLCAuLi50aGlzLmJ5dGVzXSlcclxuICAgIH1cclxufTtcclxuXHJcblxyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgUHVibGljS2V5SGFzaCB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IYXNoKGhhc2g6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLnRvV29yZHMoaGFzaCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhhc2g6IEhleFN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21IYXNoKGZyb21IZXhTdHJpbmcoaGFzaCkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBmcm9tUHVibGljS2V5KHBrOiBQdWJsaWNLZXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChcclxuICAgICAgICAgICAgc2hhMjU2KFxyXG4gICAgICAgICAgICAgICAgQnVmZmVyLmZyb20oW3BrLmNvbXByZXNzZWQsIC4uLnBrLmJ5dGVzXSlcclxuICAgICAgICAgICAgKS5zdWJhcnJheSgwLCAyMClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgZnJvbUJlY2gzMihwa2g6IHN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBraCA9IHBraC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIGlmIChwa2guc3RhcnRzV2l0aCgnd2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjYpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBraC5zdGFydHNXaXRoKCd0d2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjcpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5SGFzaDogaW52YWxpZCBiZWNoMzIgc3RyaW5nOiAke3BraH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgd29yZHM6IG51bWJlcltdO1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcih3b3JkczogbnVtYmVyW10pIHtcclxuICAgICAgICB0aGlzLndvcmRzID0gd29yZHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CZWNoMzIobmV0d29yayA9IFwibWFpbm5ldFwiKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbmV0d29yayA9PT0gXCJtYWlubmV0XCIgPyBiZWNoMzIuZW5jb2RlKCd3aXQnLCB0aGlzLndvcmRzLCA2NikgOiBiZWNoMzIuZW5jb2RlKCd0d2l0JywgdGhpcy53b3JkcywgNjcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0J5dGVzMjAoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CeXRlczMyKCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW1xyXG4gICAgICAgICAgICAuLi5iZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSxcclxuICAgICAgICAgICAgLi4ubmV3IEFycmF5KDEyKS5maWxsKDApLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLnRvQnl0ZXMyMCgpKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFNpZ25hdHVyZSB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IZXhTdHJpbmcoaGV4OiBzdHJpbmcpOiBTaWduYXR1cmUge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGZyb21IZXhTdHJpbmcoaGV4KSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnl0ZXM6IFVpbnQ4QXJyYXk7XHJcblxyXG4gICAgY29uc3RydWN0b3IgKGJ5dGVzOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLmJ5dGVzKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFJlY292ZXJhYmxlU2lnbmF0dXJlIGV4dGVuZHMgU2lnbmF0dXJlIHtcclxuXHJcbiAgICBzdGF0aWMgZnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgbGV0IGJ5dGVzXHJcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xyXG4gICAgICAgICAgICBieXRlcyA9IGZyb21IZXhTdHJpbmcocmVjb3ZlcmFibGUpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZS5zbGljZSgxKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0dXJlOiB1bnN1cHBvcnRlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgZm9ybWF0OiAke3JlY292ZXJhYmxlfWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChieXRlcy5sZW5ndGggIT09IDY0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0cmU6IGV4cGVjdGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSB3aXRoIGxlbmd0aCA2NTogJHt0b0hleFN0cmluZyhieXRlcyl9YClcclxuICAgICAgICB9IFxyXG4gICAgICAgIHJldHVybiBuZXcgUmVjb3ZlcmFibGVTaWduYXR1cmUoUHVibGljS2V5LnJlY292ZXJGcm9tKHJlY292ZXJhYmxlLCBtc2cpLCBieXRlcywgbXNnKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tS2V5ZWRTaWduYXR1cmUoa3M6IEtleWVkU2lnbmF0dXJlLCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWNvdmVyYWJsZVNpZ25hdHVyZShcclxuICAgICAgICAgICAgUHVibGljS2V5LmZyb21Qcm90b2J1Zihrcy5wdWJsaWNfa2V5KSxcclxuICAgICAgICAgICAgc2VjcDI1NmsxLnNpZ25hdHVyZUltcG9ydChVaW50OEFycmF5LmZyb20oa3Muc2lnbmF0dXJlLlNlY3AyNTZrMS5kZXIpKSxcclxuICAgICAgICAgICAgbXNnXHJcbiAgICAgICAgKSAgIFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlOiBVaW50OEFycmF5XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHViS2V5OiBQdWJsaWNLZXlcclxuICAgIHB1YmxpYyByZWFkb25seSByZWNvdmVyeUlkOiBudW1iZXJcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IgKHB1YktleTogUHVibGljS2V5LCBieXRlczogVWludDhBcnJheSwgbXNnOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgc3VwZXIoYnl0ZXMpXHJcbiAgICAgICAgY29uc3QgcHViS2V5UmF3ID0gcHViS2V5LnRvVWludDhBcnJheSgpXHJcbiAgICAgICAgbGV0IHJlY292ZXJ5SWQ6IG51bWJlcjtcclxuICAgICAgICBmb3IgKHJlY292ZXJ5SWQgPSAwOyByZWNvdmVyeUlkIDwgNDsgcmVjb3ZlcnlJZCArKykge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3ZlcmVkIFxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHJlY292ZXJlZCA9IHNlY3AyNTZrMS5lY2RzYVJlY292ZXIoYnl0ZXMsIHJlY292ZXJ5SWQsIG1zZylcclxuICAgICAgICAgICAgICBpZiAobWF0Y2hpbmdVaW50OEFycmF5cyhyZWNvdmVyZWQsIHB1YktleVJhdykpIGJyZWFrO1xyXG4gICAgICAgICAgICB9IGNhdGNoIHt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xyXG4gICAgICAgIHRoaXMucHViS2V5ID0gcHViS2V5XHJcbiAgICAgICAgdGhpcy5yZWNvdmVyeUlkID0gcmVjb3ZlcnlJZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZyhwcmVmaXgweCA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMucmVjb3ZlcnlJZCwgLi4udGhpcy5ieXRlc10sIHByZWZpeDB4KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiB7IFNlY3AyNTZrMTogeyBkZXI6IEFycmF5LmZyb20oc2VjcDI1NmsxLnNpZ25hdHVyZUV4cG9ydCh0aGlzLmJ5dGVzKSkgfX0sXHJcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHViS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHViS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcclxuICAgICAgICAgICAgcHVibGljS2V5OiB7IHB1YmxpY0tleTogQXJyYXkuZnJvbShbIHRoaXMucHViS2V5LmNvbXByZXNzZWQsIC4uLnRoaXMucHViS2V5LmJ5dGVzIF0pIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSByZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHRcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICAgICAgdGhpcy5yZWNlaXB0ID0gcmVjZWlwdFxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNZW1wb29sRXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIHJlYWRvbmx5IG1zZWNzOiBudW1iZXI7XHJcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocmVjZWlwdCwgbWVzc2FnZSlcclxuICAgICAgICB0aGlzLm1zZWNzID0gbXNlY3NcclxuICAgIH1cclxufVxyXG4gICAgXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNtaXNzaW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSBlcnJvcj86IGFueTtcclxuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XHJcbiAgICBjb25zdHJ1Y3RvcihpbkZsaWdodDogVHJhbnNtaXNzaW9uLCBlcnJvcj86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKEpTT04uc3RyaW5naWZ5KGVycm9yKSlcclxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXHJcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgdGhpcy5pbkZsaWdodCA9IGluRmxpZ2h0XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8gLS0tIEludGVybmFsIGZ1bmN0aW9ucyBcclxuXHJcbmZ1bmN0aW9uIG1hdGNoaW5nVWludDhBcnJheXMoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSkge1xyXG4gICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBiW2luZGV4XSlcclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Balance } from '../types';
1
+ import { Balance, HexString } from '../types';
2
2
  import { Coins, Utxo, UtxoSelectionStrategy } from './types';
3
3
  export { bech32 } from 'bech32';
4
4
  export { PrivateKey, PublicKey, PublicKeyHash, KeyedSignature, RecoverableSignature, Signature } from "./types";
@@ -6,6 +6,7 @@ export declare const BigMath: {
6
6
  max(value: bigint, ...values: bigint[]): bigint;
7
7
  };
8
8
  export declare function decipherXprv(slip32: string, passwd: string): string;
9
+ export declare function ecdsaVerify(msg: Buffer<ArrayBufferLike>, pubKey: HexString, signature: HexString): boolean;
9
10
  export declare const parseXprv: (slip32: string) => {
10
11
  chainCode: Uint8Array;
11
12
  keyPath: Array<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE/G,eAAO,MAAM,OAAO;eACL,MAAM,aAAa,MAAM,EAAE,GAAG,MAAM;CAKlD,CAAA;AAqBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAcnE;AAED,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG;IACvC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;CAyD1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CACpC,GAAG,KAAK,CAAC,IAAI,CAAC,CA6Cd;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,2BAIjC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAMlD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE/G,eAAO,MAAM,OAAO;eACL,MAAM,aAAa,MAAM,EAAE,GAAG,MAAM;CAKlD,CAAA;AAqBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAcnE;AAED,wBAAgB,WAAW,CACvB,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,GACrB,OAAO,CAOT;AAED,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG;IACvC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;CAyD1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CACpC,GAAG,KAAK,CAAC,IAAI,CAAC,CA6Cd;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,2BAIjC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAMlD"}