@bitgo/sdk-coin-flrp 1.7.2 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/flrp.d.ts +8 -0
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +43 -1
- package/dist/src/lib/ExportInPTxBuilder.d.ts +14 -1
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ExportInPTxBuilder.js +62 -20
- package/dist/src/lib/ImportInCTxBuilder.d.ts +0 -1
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInCTxBuilder.js +23 -17
- package/dist/src/lib/ImportInPTxBuilder.d.ts +0 -10
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInPTxBuilder.js +22 -30
- package/dist/src/lib/atomicTransactionBuilder.d.ts +29 -27
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +89 -58
- package/dist/src/lib/iface.d.ts +12 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts +108 -0
- package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/permissionlessDelegatorTxBuilder.js +268 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +42 -11
- package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +14 -1
- package/dist/src/lib/utils.d.ts +31 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +65 -3
- package/dist/test/resources/account.d.ts +21 -0
- package/dist/test/resources/account.d.ts.map +1 -1
- package/dist/test/resources/account.js +23 -2
- package/dist/test/resources/transactionData/delegatorTx.d.ts +83 -0
- package/dist/test/resources/transactionData/delegatorTx.d.ts.map +1 -0
- package/dist/test/resources/transactionData/delegatorTx.js +77 -0
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
- package/dist/test/resources/transactionData/exportInP.js +5 -6
- package/dist/test/resources/transactionData/importInC.js +5 -5
- package/dist/test/resources/transactionData/importInP.js +5 -5
- package/dist/test/unit/flrp.js +74 -3
- package/dist/test/unit/lib/exportInPTxBuilder.js +144 -34
- package/dist/test/unit/lib/importInCTxBuilder.js +51 -74
- package/dist/test/unit/lib/importInPTxBuilder.js +48 -182
- package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.js +235 -0
- package/dist/test/unit/lib/utils.js +92 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/dist/test/unit/lib/signatureIndex.d.ts +0 -13
- package/dist/test/unit/lib/signatureIndex.d.ts.map +0 -1
- package/dist/test/unit/lib/signatureIndex.js +0 -843
package/dist/src/lib/utils.js
CHANGED
|
@@ -12,6 +12,9 @@ const secp256k1_1 = require("@bitgo/secp256k1");
|
|
|
12
12
|
const iface_1 = require("./iface");
|
|
13
13
|
const bs58_1 = __importDefault(require("bs58"));
|
|
14
14
|
const bech32_1 = require("bech32");
|
|
15
|
+
// NodeID format constants
|
|
16
|
+
const NODE_ID_PREFIX = 'NodeID-';
|
|
17
|
+
const NODE_ID_DECODED_LENGTH = 24;
|
|
15
18
|
class Utils {
|
|
16
19
|
constructor() {
|
|
17
20
|
/**
|
|
@@ -157,6 +160,26 @@ class Utils {
|
|
|
157
160
|
allHexChars(str) {
|
|
158
161
|
return /^(0x){0,1}([0-9a-f])+$/i.test(str);
|
|
159
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Validates a NodeID format
|
|
165
|
+
* @param {string} nodeID - NodeID to validate (e.g., "NodeID-xxx")
|
|
166
|
+
* @returns {boolean} - true if valid, false otherwise
|
|
167
|
+
*/
|
|
168
|
+
isValidNodeID(nodeID) {
|
|
169
|
+
if (!nodeID) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
if (!nodeID.startsWith(NODE_ID_PREFIX)) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const decoded = bs58_1.default.decode(nodeID.slice(NODE_ID_PREFIX.length));
|
|
177
|
+
return decoded.length === NODE_ID_DECODED_LENGTH;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
160
183
|
/**
|
|
161
184
|
* Creates a signature using the Flare network parameters
|
|
162
185
|
* Returns a 65-byte signature (64 bytes signature + 1 byte recovery parameter)
|
|
@@ -334,6 +357,36 @@ class Utils {
|
|
|
334
357
|
flareIdString(value) {
|
|
335
358
|
return new flarejs_1.Id(buffer_1.Buffer.from(value, 'hex'));
|
|
336
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Sort addresses lexicographically by their byte representation.
|
|
362
|
+
* This matches how addresses are stored on-chain in Avalanche/Flare P-chain UTXOs.
|
|
363
|
+
*
|
|
364
|
+
* IMPORTANT: This sorting MUST be consistent with FlareJS's internal address sorting.
|
|
365
|
+
* FlareJS uses the same lexicographic comparison: `hexA.localeCompare(hexB)`.
|
|
366
|
+
* The sigIndices in transaction inputs depend on this sorted order, so any deviation
|
|
367
|
+
* would cause signature order mismatches and on-chain verification failures.
|
|
368
|
+
*
|
|
369
|
+
* @param addresses - Array of bech32 address strings (e.g., "P-costwo1...")
|
|
370
|
+
* @returns Array of addresses sorted by hex value (ascending lexicographic order)
|
|
371
|
+
*/
|
|
372
|
+
sortAddressesByHex(addresses) {
|
|
373
|
+
return [...addresses].sort((a, b) => {
|
|
374
|
+
const aHex = this.parseAddress(a).toString('hex');
|
|
375
|
+
const bHex = this.parseAddress(b).toString('hex');
|
|
376
|
+
return aHex.localeCompare(bHex);
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Sort address buffers lexicographically by their byte representation.
|
|
381
|
+
* This matches how addresses are stored on-chain in Avalanche/Flare P-chain UTXOs.
|
|
382
|
+
* @param addressBuffers - Array of address byte buffers
|
|
383
|
+
* @returns Array of address buffers sorted by hex value
|
|
384
|
+
*/
|
|
385
|
+
sortAddressBuffersByHex(addressBuffers) {
|
|
386
|
+
return [...addressBuffers].sort((a, b) => {
|
|
387
|
+
return a.toString('hex').localeCompare(b.toString('hex'));
|
|
388
|
+
});
|
|
389
|
+
}
|
|
337
390
|
/**
|
|
338
391
|
* Recover public key from signature
|
|
339
392
|
* @param messageHash - The SHA256 hash of the message (e.g., signablePayload)
|
|
@@ -437,6 +490,11 @@ class Utils {
|
|
|
437
490
|
/**
|
|
438
491
|
* Convert DecodedUtxoObj to native FlareJS Utxo object
|
|
439
492
|
* This is the reverse of utxoToDecoded
|
|
493
|
+
*
|
|
494
|
+
* IMPORTANT: Addresses are sorted lexicographically by byte value to match
|
|
495
|
+
* on-chain storage order. The API may return addresses in arbitrary order, but
|
|
496
|
+
* on-chain UTXOs always store addresses in sorted order.
|
|
497
|
+
*
|
|
440
498
|
* @param decoded - DecodedUtxoObj to convert
|
|
441
499
|
* @param assetId - Asset ID as cb58 encoded string
|
|
442
500
|
* @returns Native FlareJS Utxo object
|
|
@@ -446,9 +504,13 @@ class Utils {
|
|
|
446
504
|
const utxoId = flarejs_1.avaxSerial.UTXOID.fromNative(decoded.txid, parseInt(decoded.outputidx, 10));
|
|
447
505
|
// Parse addresses from bech32 strings to byte buffers
|
|
448
506
|
const addressBytes = decoded.addresses.map((addr) => this.parseAddress(addr));
|
|
449
|
-
//
|
|
507
|
+
// Sort addresses lexicographically by byte value to match on-chain order
|
|
508
|
+
// This is critical because the P-chain stores addresses in sorted order,
|
|
509
|
+
// and sigIndices must reference the correct positions.
|
|
510
|
+
const sortedAddressBytes = this.sortAddressBuffersByHex(addressBytes);
|
|
511
|
+
// Create OutputOwners with locktime, threshold, and SORTED addresses
|
|
450
512
|
const locktime = decoded.locktime ? BigInt(decoded.locktime) : BigInt(0);
|
|
451
|
-
const outputOwners = flarejs_1.OutputOwners.fromNative(
|
|
513
|
+
const outputOwners = flarejs_1.OutputOwners.fromNative(sortedAddressBytes, locktime, decoded.threshold);
|
|
452
514
|
// Create TransferOutput with amount and owners
|
|
453
515
|
const amount = BigInt(decoded.amount);
|
|
454
516
|
const transferOutput = new flarejs_1.TransferOutput(new flarejs_1.BigIntPr(amount), outputOwners);
|
|
@@ -468,4 +530,4 @@ class Utils {
|
|
|
468
530
|
exports.Utils = Utils;
|
|
469
531
|
const utils = new Utils();
|
|
470
532
|
exports.default = utils;
|
|
471
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVUrQjtBQUMvQiw4Q0FPeUI7QUFFekIsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxnREFBdUM7QUFDdkMsbUNBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBQWxCO1FBNlBFOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxNQUFjLEVBQUUsT0FBZSxFQUFVLEVBQUU7WUFDaEYsK0RBQStEO1lBQy9ELE1BQU0sS0FBSyxHQUFHLGVBQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsK0VBQStFO1lBQy9FLE9BQU8sR0FBRyxNQUFNLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUM7UUEyQ0YsbURBQW1EO1FBRW5EOzs7O1dBSUc7UUFDSSxpQkFBWSxHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztRQUVLLG9CQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsR0FBWSxFQUFVLEVBQUU7WUFDakUsdUJBQXVCO1lBQ3ZCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsbUNBQW1DO1lBQ25DLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sZUFBTSxDQUFDLElB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RUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUMxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTaWduYXR1cmUsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHJhbnNmZXJPdXRwdXQsXG4gIFR5cGVTeW1ib2xzLFxuICBJZCxcbiAgVXR4byxcbiAgQmlnSW50UHIsXG4gIE91dHB1dE93bmVycyxcbiAgYXZheFNlcmlhbCxcbn0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmltcG9ydCB7XG4gIEJhc2VVdGlscyxcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBpc1ZhbGlkWHBydixcbiAgaXNWYWxpZFhwdWIsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEZsYXJlTmV0d29yayB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGVjYyB9IGZyb20gJ0BiaXRnby9zZWNwMjU2azEnO1xuaW1wb3J0IHsgQUREUkVTU19TRVBBUkFUT1IsIERlY29kZWRVdHhvT2JqLCBPdXRwdXQsIFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsIFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMic7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVjayBpZiBhZGRyZXNzZXMgaW4gd2FsbGV0IG1hdGNoIFVUWE8gb3V0cHV0IGFkZHJlc3Nlc1xuICAgKi9cbiAgcHVibGljIGluY2x1ZGVJbih3YWxsZXRBZGRyZXNzZXM6IHN0cmluZ1tdLCBvdHhvT3V0cHV0QWRkcmVzc2VzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3YWxsZXRBZGRyZXNzZXMubWFwKChhKSA9PiBvdHhvT3V0cHV0QWRkcmVzc2VzLmluY2x1ZGVzKGEpKS5yZWR1Y2UoKGEsIGIpID0+IGEgJiYgYiwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgRmxhcmUgYWRkcmVzcyBvciBhcnJheSBvZiBhZGRyZXNzZXNcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWRkcmVzcyAtIGFkZHJlc3MoZXMpIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFkZHJlc3NBcnI6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheShhZGRyZXNzKSA/IGFkZHJlc3MgOiBhZGRyZXNzLnNwbGl0KCd+Jyk7XG5cbiAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgYWRkcmVzc0Fycikge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzUmVnZXgoYWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkQWRkcmVzc1JlZ2V4KGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXiheUHx8Tm9kZUlEKS1bYS16QS1aMC05XSskLy50ZXN0KGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGJsb2NrIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gYmxvY2sgSUQgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oaGFzaCwgJ2hleCcpO1xuICAgICAgcmV0dXJuIGRlY29kZWQubGVuZ3RoID09PSAzMjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcHVibGljIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSByZXR1cm4gdHJ1ZTtcblxuICAgIGxldCBwdWJCdWY6IEJ1ZmZlcjtcbiAgICBpZiAocHViLmxlbmd0aCA9PT0gNTApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHB1YkJ1ZiA9IEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHB1Yi5sZW5ndGggIT09IDY2ICYmIHB1Yi5sZW5ndGggIT09IDEzMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBmaXJzdEJ5dGUgPSBwdWIuc2xpY2UoMCwgMik7XG4gICAgICBpZiAocHViLmxlbmd0aCA9PT0gMTMwICYmIGZpcnN0Qnl0ZSAhPT0gJzA0JykgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKHB1Yi5sZW5ndGggPT09IDY2ICYmIGZpcnN0Qnl0ZSAhPT0gJzAyJyAmJiBmaXJzdEJ5dGUgIT09ICcwMycpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICghdGhpcy5hbGxIZXhDaGFycyhwdWIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHB1YkJ1ZiA9IEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBlY2MuaXNQb2ludChwdWJCdWYpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHJldHVybiB0cnVlO1xuICAgIGlmIChwcnYubGVuZ3RoICE9PSA2NCAmJiBwcnYubGVuZ3RoICE9PSA2NikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChwcnYubGVuZ3RoID09PSA2NiAmJiBwcnYuc2xpY2UoNjQpICE9PSAnMDEnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuYWxsSGV4Q2hhcnMocHJ2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBzdHJpbmcgY29udGFpbnMgb25seSBoZXggY2hhcmFjdGVyc1xuICAgKi9cbiAgYWxsSGV4Q2hhcnMoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oMHgpezAsMX0oWzAtOWEtZl0pKyQvaS50ZXN0KHN0cik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNpZ25hdHVyZSB1c2luZyB0aGUgRmxhcmUgbmV0d29yayBwYXJhbWV0ZXJzXG4gICAqIFJldHVybnMgYSA2NS1ieXRlIHNpZ25hdHVyZSAoNjQgYnl0ZXMgc2lnbmF0dXJlICsgMSBieXRlIHJlY292ZXJ5IHBhcmFtZXRlcilcbiAgICovXG4gIGNyZWF0ZVNpZ25hdHVyZShuZXR3b3JrOiBGbGFyZU5ldHdvcmssIG1lc3NhZ2U6IEJ1ZmZlciwgcHJ2OiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIGNvbnN0IG1lc3NhZ2VIYXNoID0gdGhpcy5zaGEyNTYobWVzc2FnZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gZWNjLnNpZ24obWVzc2FnZUhhc2gsIHBydik7XG5cbiAgICAvLyBHZXQgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgcHJpdmF0ZSBrZXkgZm9yIHJlY292ZXJ5IHBhcmFtZXRlciBkZXRlcm1pbmF0aW9uXG4gICAgY29uc3QgcHVibGljS2V5ID0gZWNjLnBvaW50RnJvbVNjYWxhcihwcnYsIHRydWUpO1xuICAgIGlmICghcHVibGljS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZXJpdmUgcHVibGljIGtleSBmcm9tIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuXG4gICAgLy8gVHJ5IHJlY292ZXJ5IHdpdGggcGFyYW0gMCBhbmQgMSB0byBmaW5kIHRoZSBjb3JyZWN0IG9uZVxuICAgIGxldCByZWNvdmVyeVBhcmFtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlY292ZXJlZCA9IGVjYy5yZWNvdmVyUHVibGljS2V5KG1lc3NhZ2VIYXNoLCBzaWduYXR1cmUsIGksIHRydWUpO1xuICAgICAgaWYgKHJlY292ZXJlZCAmJiBCdWZmZXIuZnJvbShyZWNvdmVyZWQpLmVxdWFscyhCdWZmZXIuZnJvbShwdWJsaWNLZXkpKSkge1xuICAgICAgICByZWNvdmVyeVBhcmFtID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXBwZW5kIHJlY292ZXJ5IHBhcmFtZXRlciB0byBjcmVhdGUgNjUtYnl0ZSBzaWduYXR1cmVcbiAgICBjb25zdCBzaWdXaXRoUmVjb3ZlcnkgPSBCdWZmZXIuYWxsb2MoNjUpO1xuICAgIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkuY29weShzaWdXaXRoUmVjb3ZlcnksIDApO1xuICAgIHNpZ1dpdGhSZWNvdmVyeVs2NF0gPSByZWNvdmVyeVBhcmFtO1xuXG4gICAgcmV0dXJuIHNpZ1dpdGhSZWNvdmVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBhIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gbWVzc2FnZUhhc2ggLSBUaGUgU0hBMjU2IGhhc2ggb2YgdGhlIG1lc3NhZ2UgKGUuZy4sIHNpZ25hYmxlUGF5bG9hZClcbiAgICogQHBhcmFtIHNpZ25hdHVyZSAtIFRoZSA2NC1ieXRlIHNpZ25hdHVyZSAod2l0aG91dCByZWNvdmVyeSBwYXJhbWV0ZXIpXG4gICAqIEBwYXJhbSBwdWJsaWNLZXkgLSBUaGUgcHVibGljIGtleSB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZFxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2VIYXNoOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyLCBwdWJsaWNLZXk6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWNjLnZlcmlmeShtZXNzYWdlSGFzaCwgcHVibGljS2V5LCBzaWduYXR1cmUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzaWduYXR1cmUgb2JqZWN0XG4gICAqL1xuICBjcmVhdGVOZXdTaWcoc2lnSGV4OiBzdHJpbmcpOiBTaWduYXR1cmUge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ0hleC5wYWRTdGFydCgxMzAsICcwJyksICdoZXgnKTtcbiAgICByZXR1cm4gbmV3IFNpZ25hdHVyZShidWZmZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW1wdHkgc2lnbmF0dXJlIHdpdGggZW1iZWRkZWQgYWRkcmVzcyBmb3Igc2lnbmF0dXJlIHNsb3QgaWRlbnRpZmljYXRpb24uXG4gICAqIFRoZSBhZGRyZXNzIGlzIGVtYmVkZGVkIGF0IHBvc2l0aW9uIDkwIChhZnRlciB0aGUgZmlyc3QgNDUgemVybyBieXRlcykuXG4gICAqIFRoaXMgYWxsb3dzIHRoZSBzaWduaW5nIGxvZ2ljIHRvIGRldGVybWluZSB3aGljaCBzbG90IGJlbG9uZ3MgdG8gd2hpY2ggYWRkcmVzcy5cbiAgICogQHBhcmFtIGFkZHJlc3NIZXggVGhlIDIwLWJ5dGUgYWRkcmVzcyBpbiBoZXggZm9ybWF0ICg0MCBjaGFycywgd2l0aG91dCAweCBwcmVmaXgpXG4gICAqL1xuICBjcmVhdGVFbXB0eVNpZ1dpdGhBZGRyZXNzKGFkZHJlc3NIZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XG4gICAgLy8gRmlyc3QgNDUgYnl0ZXMgKDkwIGhleCBjaGFycykgYXJlIHplcm9zLCBmb2xsb3dlZCBieSAyMC1ieXRlIGFkZHJlc3MgKDQwIGhleCBjaGFycylcbiAgICBjb25zdCBjbGVhbkFkZHIgPSB0aGlzLnJlbW92ZUhleFByZWZpeChhZGRyZXNzSGV4KS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHNpZ0hleCA9ICcwJy5yZXBlYXQoOTApICsgY2xlYW5BZGRyLnBhZFN0YXJ0KDQwLCAnMCcpO1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ0hleCwgJ2hleCcpO1xuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGJ1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgdGhlIGVtYmVkZGVkIGFkZHJlc3MgZnJvbSBhbiBlbXB0eSBzaWduYXR1cmUuXG4gICAqIFJldHVybnMgdGhlIGFkZHJlc3MgaGV4IHN0cmluZyAoNDAgY2hhcnMpIG9yIGVtcHR5IHN0cmluZyBpZiBub3QgZm91bmQuXG4gICAqL1xuICBnZXRBZGRyZXNzRnJvbUVtcHR5U2lnKHNpZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGVhblNpZyA9IHRoaXMucmVtb3ZlSGV4UHJlZml4KHNpZyk7XG4gICAgaWYgKGNsZWFuU2lnLmxlbmd0aCA+PSAxMzApIHtcbiAgICAgIC8vIEFkZHJlc3MgaXMgYXQgcG9zaXRpb24gOTAtMTMwIChsYXN0IDQwIGhleCBjaGFycyA9IDIwIGJ5dGVzKVxuICAgICAgcmV0dXJuIGNsZWFuU2lnLnN1YnN0cmluZyg5MCwgMTMwKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgU0hBMjU2IGhhc2hcbiAgICovXG4gIHNoYTI1NihidWY6IFVpbnQ4QXJyYXkpOiBCdWZmZXIge1xuICAgIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYnVmKS5kaWdlc3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcmF3IHRyYW5zYWN0aW9uIGZvcm1hdFxuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFsbEhleENoYXJzKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignUmF3IHRyYW5zYWN0aW9uIGlzIG5vdCBoZXggc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBvdXRwdXQgaXMgVHJhbnNmZXJhYmxlT3V0cHV0IHR5cGVcbiAgICovXG4gIGlzVHJhbnNmZXJhYmxlT3V0cHV0KG91dHB1dDogT3V0cHV0KTogb3V0cHV0IGlzIFRyYW5zZmVyYWJsZU91dHB1dCB7XG4gICAgcmV0dXJuIG91dHB1dD8uX3R5cGUgPT09IFR5cGVTeW1ib2xzLlRyYW5zZmVyYWJsZU91dHB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIG91dHB1dHMgdG8gZW50cnkgZm9ybWF0XG4gICAqL1xuICBtYXBPdXRwdXRUb0VudHJ5KG5ldHdvcms6IEZsYXJlTmV0d29yayk6IChPdXRwdXQpID0+IEVudHJ5IHtcbiAgICByZXR1cm4gKG91dHB1dDogT3V0cHV0KSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1RyYW5zZmVyYWJsZU91dHB1dChvdXRwdXQpKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IG91dHB1dC5hbW91bnQoKTtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IChvdXRwdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0KVxuICAgICAgICAgIC5nZXRPd25lcnMoKVxuICAgICAgICAgIC5tYXAoKGEpID0+IHRoaXMuYWRkcmVzc1RvU3RyaW5nKG5ldHdvcmsuaHJwLCBuZXR3b3JrLmFsaWFzLCBCdWZmZXIuZnJvbShhKSkpXG4gICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgIC5qb2luKEFERFJFU1NfU0VQQVJBVE9SKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogb3V0cHV0QW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvdXRwdXQgdHlwZScpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyAweCBwcmVmaXggZnJvbSBoZXggc3RyaW5nXG4gICAqL1xuICByZW1vdmVIZXhQcmVmaXgoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBoZXguc3RhcnRzV2l0aCgnMHgnKSA/IGhleC5zdWJzdHJpbmcoMikgOiBoZXg7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgb3V0cHV0IGluZGV4IHRvIGJ1ZmZlclxuICAgKi9cbiAgb3V0cHV0aWR4TnVtYmVyVG9CdWZmZXIob3V0cHV0aWR4OiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShOdW1iZXIob3V0cHV0aWR4KS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgJzAnKSwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIG91dHB1dCBpbmRleCBidWZmZXIgdG8gbnVtYmVyIHN0cmluZ1xuICAgKi9cbiAgb3V0cHV0aWR4QnVmZmVyVG9OdW1iZXIob3V0cHV0aWR4OiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXJzZUludChvdXRwdXRpZHgudG9TdHJpbmcoJ2hleCcpLCAxNikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNvbnZlcnQgYWRkcmVzcyBjb21wb25lbnRzIHRvIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIGFkZHJlc3NUb1N0cmluZyA9IChocnA6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIGFkZHJlc3M6IEJ1ZmZlcik6IHN0cmluZyA9PiB7XG4gICAgLy8gQ29udmVydCB0aGUgYWRkcmVzcyBieXRlcyB0byA1LWJpdCB3b3JkcyBmb3IgYmVjaDMyIGVuY29kaW5nXG4gICAgY29uc3Qgd29yZHMgPSBiZWNoMzIudG9Xb3JkcyhhZGRyZXNzKTtcbiAgICAvLyBDcmVhdGUgdGhlIGZ1bGwgYmVjaDMyIGFkZHJlc3Mgd2l0aCBmb3JtYXQ6IFAte2hycH0xe2JlY2gzMl9lbmNvZGVkX2FkZHJlc3N9XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtiZWNoMzIuZW5jb2RlKGhycCwgd29yZHMpfWA7XG4gIH07XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBiYXNlNTggc3RyaW5nIHdpdGggY2hlY2tzdW0gdG8gYSBCdWZmZXJcbiAgICovXG4gIHB1YmxpYyBjYjU4RGVjb2RlKHN0cjogc3RyaW5nKTogQnVmZmVyIHtcbiAgICBjb25zdCBkZWNvZGVkID0gYnM1OC5kZWNvZGUoc3RyKTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDaGVja3N1bShCdWZmZXIuZnJvbShkZWNvZGVkKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGVja3N1bScpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGVjb2RlZC5zbGljZSgwLCBkZWNvZGVkLmxlbmd0aCAtIDQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBjaGVja3N1bSBvbiBhIEJ1ZmZlciBhbmQgcmV0dXJucyB0cnVlIGlmIHZhbGlkLCBmYWxzZSBpZiBub3RcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVDaGVja3N1bShidWZmOiBCdWZmZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBoYXNoU2xpY2UgPSBidWZmLnNsaWNlKGJ1ZmYubGVuZ3RoIC0gNCk7XG4gICAgY29uc3QgY2FsY3VsYXRlZEhhc2hTbGljZSA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpXG4gICAgICAudXBkYXRlKGJ1ZmYuc2xpY2UoMCwgYnVmZi5sZW5ndGggLSA0KSlcbiAgICAgIC5kaWdlc3QoKVxuICAgICAgLnNsaWNlKDI4KTtcbiAgICByZXR1cm4gaGFzaFNsaWNlLnRvU3RyaW5nKCdoZXgnKSA9PT0gY2FsY3VsYXRlZEhhc2hTbGljZS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlcyBhIEJ1ZmZlciBhcyBhIGJhc2U1OCBzdHJpbmcgd2l0aCBjaGVja3N1bVxuICAgKi9cbiAgcHVibGljIGNiNThFbmNvZGUoYnl0ZXM6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgd2l0aENoZWNrc3VtID0gdGhpcy5hZGRDaGVja3N1bShieXRlcyk7XG4gICAgcmV0dXJuIGJzNTguZW5jb2RlKHdpdGhDaGVja3N1bSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNoZWNrc3VtIHRvIGEgQnVmZmVyIGFuZCByZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0XG4gICAqIFVzZXMgbGFzdCA0IGJ5dGVzIG9mIFNIQTI1NiBoYXNoIGFzIGNoZWNrc3VtIChtYXRjaGluZyBhdmF4cCBiZWhhdmlvcilcbiAgICovXG4gIHB1YmxpYyBhZGRDaGVja3N1bShidWZmOiBCdWZmZXIgfCBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZik7XG4gICAgY29uc3QgaGFzaFNsaWNlID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KCkuc2xpY2UoMjgpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuY29uY2F0KFtidWZmZXIsIGhhc2hTbGljZV0pKTtcbiAgfVxuXG4gIC8vIEluIHV0aWxzLnRzLCBhZGQgdGhpcyBtZXRob2QgdG8gdGhlIFV0aWxzIGNsYXNzOlxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBhZGRyZXNzIHN0cmluZyBpbnRvIGEgQnVmZmVyXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gcGFyc2VcbiAgICogQHJldHVybnMgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgcGFyc2VBZGRyZXNzID0gKGFkZHJlc3M6IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nVG9BZGRyZXNzKGFkZHJlc3MpO1xuICB9O1xuXG4gIHB1YmxpYyBzdHJpbmdUb0FkZHJlc3MgPSAoYWRkcmVzczogc3RyaW5nLCBocnA/OiBzdHJpbmcpOiBCdWZmZXIgPT4ge1xuICAgIC8vIEhhbmRsZSBoZXggYWRkcmVzc2VzXG4gICAgaWYgKGFkZHJlc3Muc3RhcnRzV2l0aCgnMHgnKSkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFkZHJlc3Muc2xpY2UoMiksICdoZXgnKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcmF3IGhleCB3aXRob3V0IDB4IHByZWZpeFxuICAgIGlmICgvXlswLTlhLWZBLUZdezQwfSQvLnRlc3QoYWRkcmVzcykpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShhZGRyZXNzLCAnaGV4Jyk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIEJlY2gzMiBhZGRyZXNzZXNcbiAgICBjb25zdCBwYXJ0cyA9IGFkZHJlc3MudHJpbSgpLnNwbGl0KCctJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgLSBWYWxpZCBhZGRyZXNzIHNob3VsZCBpbmNsdWRlIC0nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGxpdCA9IHBhcnRzWzFdLmxhc3RJbmRleE9mKCcxJyk7XG4gICAgaWYgKHNwbGl0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciAtIFZhbGlkIGJlY2gzMiBhZGRyZXNzIG11c3QgaW5jbHVkZSBzZXBhcmF0b3IgKDEpJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaHVtYW5SZWFkYWJsZVBhcnQgPSBwYXJ0c1sxXS5zbGljZSgwLCBzcGxpdCk7XG4gICAgaWYgKGh1bWFuUmVhZGFibGVQYXJ0ICE9PSAnZmxhcmUnICYmIGh1bWFuUmVhZGFibGVQYXJ0ICE9PSAnY29zdHdvJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciAtIEludmFsaWQgSFJQJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJlY2gzMi5mcm9tV29yZHMoYmVjaDMyLmRlY29kZShwYXJ0c1sxXSkud29yZHMpKTtcbiAgfTtcblxuICBmbGFyZUlkU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBJZCB7XG4gICAgcmV0dXJuIG5ldyBJZChCdWZmZXIuZnJvbSh2YWx1ZSwgJ2hleCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvdmVyIHB1YmxpYyBrZXkgZnJvbSBzaWduYXR1cmVcbiAgICogQHBhcmFtIG1lc3NhZ2VIYXNoIC0gVGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBtZXNzYWdlIChlLmcuLCBzaWduYWJsZVBheWxvYWQpXG4gICAqIEBwYXJhbSBzaWduYXR1cmUgLSA2NS1ieXRlIHNpZ25hdHVyZSAoNjQgYnl0ZXMgc2lnbmF0dXJlICsgMSBieXRlIHJlY292ZXJ5IHBhcmFtZXRlcilcbiAgICogQHJldHVybiByZWNvdmVyZWQgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3ZlcnlTaWduYXR1cmUobWVzc2FnZUhhc2g6IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHRyeSB7XG4gICAgICAvLyBFeHRyYWN0IHJlY292ZXJ5IHBhcmFtZXRlciBhbmQgc2lnbmF0dXJlXG4gICAgICBpZiAoc2lnbmF0dXJlLmxlbmd0aCAhPT0gNjUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNpZ25hdHVyZSBsZW5ndGggLSBleHBlY3RlZCA2NSBieXRlcyAoNjQgYnl0ZXMgc2lnbmF0dXJlICsgMSBieXRlIHJlY292ZXJ5KScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWNvdmVyeVBhcmFtID0gc2lnbmF0dXJlWzY0XTtcbiAgICAgIGNvbnN0IHNpZ09ubHkgPSBzaWduYXR1cmUuc2xpY2UoMCwgNjQpO1xuXG4gICAgICAvLyBSZWNvdmVyIHB1YmxpYyBrZXkgdXNpbmcgdGhlIHByb3ZpZGVkIHJlY292ZXJ5IHBhcmFtZXRlclxuICAgICAgLy8gbWVzc2FnZUhhc2ggc2hvdWxkIGFscmVhZHkgYmUgdGhlIFNIQTI1NiBoYXNoIChzaWduYWJsZVBheWxvYWQpXG4gICAgICBjb25zdCByZWNvdmVyZWQgPSBlY2MucmVjb3ZlclB1YmxpY0tleShtZXNzYWdlSGFzaCwgc2lnT25seSwgcmVjb3ZlcnlQYXJhbSwgdHJ1ZSk7XG4gICAgICBpZiAoIXJlY292ZXJlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZWNvdmVyIHB1YmxpYyBrZXknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlY292ZXJlZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlY292ZXIgc2lnbmF0dXJlOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHR4IGlzIGZvciB0aGUgYmxvY2tjaGFpbklkXG4gICAqXG4gICAqIEBwYXJhbSB7VHh9IHR4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBibG9ja2NoYWluSWQgLSBibG9ja2NoYWluIElEIGluIGhleCBmb3JtYXRcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0eCBpcyBmb3IgYmxvY2tjaGFpbklkXG4gICAqL1xuICBpc1RyYW5zYWN0aW9uT2YodHg6IFR4LCBibG9ja2NoYWluSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIE5vdGU6IGdldEJsb2NrY2hhaW5JZCgpIGFuZCBCbG9ja2NoYWluSWQudmFsdWUoKSByZXR1cm4gQ0I1OC1lbmNvZGVkIHN0cmluZ3MsXG4gICAgLy8gYnV0IHdlIG5lZWQgaGV4IGZvcm1hdCwgc28gd2UgdXNlIHRvQnl0ZXMoKSBhbmQgY29udmVydCB0byBoZXhcbiAgICBjb25zdCBleHRyYWN0QmxvY2tjaGFpbklkID0gKHR4T2JqOiBhbnkpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdHhPYmouZ2V0VHggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgaW5uZXJUeCA9IHR4T2JqLmdldFR4KCk7XG4gICAgICAgIGlmIChpbm5lclR4LmJhc2VUeD8uQmxvY2tjaGFpbklkPy50b0J5dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlubmVyVHguYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5uZXJUeC5ibG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oaW5uZXJUeC5ibG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR4T2JqLnR4Py5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odHhPYmoudHguYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR4T2JqLmJhc2VUeD8uQmxvY2tjaGFpbklkPy50b0J5dGVzKSB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0eE9iai5iYXNlVHguQmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuICAgICAgaWYgKHR4T2JqLmJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odHhPYmouYmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgY29uc3QgdHhCbG9ja2NoYWluSWQgPSBleHRyYWN0QmxvY2tjaGFpbklkKHR4KTtcbiAgICByZXR1cm4gdHhCbG9ja2NoYWluSWQgPT09IGJsb2NrY2hhaW5JZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZsYXJlSlMgbmF0aXZlIFV0eG8gdG8gRGVjb2RlZFV0eG9PYmogZm9yIGludGVybmFsIHVzZVxuICAgKiBAcGFyYW0gdXR4byAtIEZsYXJlSlMgVXR4byBvYmplY3RcbiAgICogQHBhcmFtIG5ldHdvcmsgLSBGbGFyZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgRGVjb2RlZFV0eG9PYmogY29tcGF0aWJsZSB3aXRoIGV4aXN0aW5nIG1ldGhvZHNcbiAgICovXG4gIHB1YmxpYyB1dHhvVG9EZWNvZGVkKHV0eG86IFV0eG8sIG5ldHdvcms6IEZsYXJlTmV0d29yayk6IERlY29kZWRVdHhvT2JqIHtcbiAgICBjb25zdCBvdXRwdXRPd25lcnMgPSB1dHhvLmdldE91dHB1dE93bmVycygpO1xuICAgIGNvbnN0IG91dHB1dCA9IHV0eG8ub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuXG4gICAgLy8gR2V0IGFtb3VudCBmcm9tIG91dHB1dFxuICAgIGNvbnN0IGFtb3VudCA9IG91dHB1dC5hbW91bnQoKS50b1N0cmluZygpO1xuXG4gICAgLy8gR2V0IHR4aWQgZnJvbSB1dHhvSWQgKGNiNTggZW5jb2RlZClcbiAgICBjb25zdCB0eGlkID0gdGhpcy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKHV0eG8udXR4b0lkLnR4SUQudG9CeXRlcygpKSk7XG5cbiAgICAvLyBHZXQgb3V0cHV0IGluZGV4XG4gICAgY29uc3Qgb3V0cHV0aWR4ID0gdXR4by51dHhvSWQub3V0cHV0SWR4LnZhbHVlKCkudG9TdHJpbmcoKTtcblxuICAgIC8vIEdldCB0aHJlc2hvbGRcbiAgICBjb25zdCB0aHJlc2hvbGQgPSBvdXRwdXRPd25lcnMudGhyZXNob2xkLnZhbHVlKCk7XG5cbiAgICAvLyBHZXQgbG9ja3RpbWVcbiAgICBjb25zdCBsb2NrdGltZSA9IG91dHB1dE93bmVycy5sb2NrdGltZS52YWx1ZSgpLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBHZXQgYWRkcmVzc2VzIGFzIGJlY2gzMiBzdHJpbmdzXG4gICAgY29uc3QgYWRkcmVzc2VzID0gb3V0cHV0T3duZXJzLmFkZHJzLm1hcCgoYWRkcikgPT5cbiAgICAgIHRoaXMuYWRkcmVzc1RvU3RyaW5nKG5ldHdvcmsuaHJwLCBuZXR3b3JrLmFsaWFzLCBCdWZmZXIuZnJvbShhZGRyLnRvQnl0ZXMoKSkpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBvdXRwdXRJRDogU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCxcbiAgICAgIGxvY2t0aW1lLFxuICAgICAgYW1vdW50LFxuICAgICAgdHhpZCxcbiAgICAgIG91dHB1dGlkeCxcbiAgICAgIHRocmVzaG9sZCxcbiAgICAgIGFkZHJlc3NlcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgb2YgRmxhcmVKUyBVdHhvcyB0byBEZWNvZGVkVXR4b09iaiBhcnJheVxuICAgKiBAcGFyYW0gdXR4b3MgLSBBcnJheSBvZiBGbGFyZUpTIFV0eG8gb2JqZWN0c1xuICAgKiBAcGFyYW0gbmV0d29yayAtIEZsYXJlIG5ldHdvcmsgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBEZWNvZGVkVXR4b09ialxuICAgKi9cbiAgcHVibGljIHV0eG9zVG9EZWNvZGVkKHV0eG9zOiBVdHhvW10sIG5ldHdvcms6IEZsYXJlTmV0d29yayk6IERlY29kZWRVdHhvT2JqW10ge1xuICAgIHJldHVybiB1dHhvcy5tYXAoKHV0eG8pID0+IHRoaXMudXR4b1RvRGVjb2RlZCh1dHhvLCBuZXR3b3JrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBEZWNvZGVkVXR4b09iaiB0byBuYXRpdmUgRmxhcmVKUyBVdHhvIG9iamVjdFxuICAgKiBUaGlzIGlzIHRoZSByZXZlcnNlIG9mIHV0eG9Ub0RlY29kZWRcbiAgICogQHBhcmFtIGRlY29kZWQgLSBEZWNvZGVkVXR4b09iaiB0byBjb252ZXJ0XG4gICAqIEBwYXJhbSBhc3NldElkIC0gQXNzZXQgSUQgYXMgY2I1OCBlbmNvZGVkIHN0cmluZ1xuICAgKiBAcmV0dXJucyBOYXRpdmUgRmxhcmVKUyBVdHhvIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGRlY29kZWRUb1V0eG8oZGVjb2RlZDogRGVjb2RlZFV0eG9PYmosIGFzc2V0SWQ6IHN0cmluZyk6IFV0eG8ge1xuICAgIC8vIENyZWF0ZSBVVFhPSUQgZnJvbSB0eGlkIGFuZCBvdXRwdXQgaW5kZXhcbiAgICBjb25zdCB1dHhvSWQgPSBhdmF4U2VyaWFsLlVUWE9JRC5mcm9tTmF0aXZlKGRlY29kZWQudHhpZCwgcGFyc2VJbnQoZGVjb2RlZC5vdXRwdXRpZHgsIDEwKSk7XG5cbiAgICAvLyBQYXJzZSBhZGRyZXNzZXMgZnJvbSBiZWNoMzIgc3RyaW5ncyB0byBieXRlIGJ1ZmZlcnNcbiAgICBjb25zdCBhZGRyZXNzQnl0ZXMgPSBkZWNvZGVkLmFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+IHRoaXMucGFyc2VBZGRyZXNzKGFkZHIpKTtcblxuICAgIC8vIENyZWF0ZSBPdXRwdXRPd25lcnMgd2l0aCBsb2NrdGltZSwgdGhyZXNob2xkLCBhbmQgYWRkcmVzc2VzXG4gICAgY29uc3QgbG9ja3RpbWUgPSBkZWNvZGVkLmxvY2t0aW1lID8gQmlnSW50KGRlY29kZWQubG9ja3RpbWUpIDogQmlnSW50KDApO1xuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IE91dHB1dE93bmVycy5mcm9tTmF0aXZlKGFkZHJlc3NCeXRlcywgbG9ja3RpbWUsIGRlY29kZWQudGhyZXNob2xkKTtcblxuICAgIC8vIENyZWF0ZSBUcmFuc2Zlck91dHB1dCB3aXRoIGFtb3VudCBhbmQgb3duZXJzXG4gICAgY29uc3QgYW1vdW50ID0gQmlnSW50KGRlY29kZWQuYW1vdW50KTtcbiAgICBjb25zdCB0cmFuc2Zlck91dHB1dCA9IG5ldyBUcmFuc2Zlck91dHB1dChuZXcgQmlnSW50UHIoYW1vdW50KSwgb3V0cHV0T3duZXJzKTtcblxuICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBVdHhvXG4gICAgcmV0dXJuIG5ldyBVdHhvKHV0eG9JZCwgSWQuZnJvbVN0cmluZyhhc3NldElkKSwgdHJhbnNmZXJPdXRwdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgb2YgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqIEBwYXJhbSBkZWNvZGVkVXR4b3MgLSBBcnJheSBvZiBEZWNvZGVkVXR4b09ialxuICAgKiBAcGFyYW0gYXNzZXRJZCAtIEFzc2V0IElEIGFzIGNiNTggZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4b3MoZGVjb2RlZFV0eG9zOiBEZWNvZGVkVXR4b09ialtdLCBhc3NldElkOiBzdHJpbmcpOiBVdHhvW10ge1xuICAgIHJldHVybiBkZWNvZGVkVXR4b3MubWFwKChkZWNvZGVkKSA9PiB0aGlzLmRlY29kZWRUb1V0eG8oZGVjb2RlZCwgYXNzZXRJZCkpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
533
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVUrQjtBQUMvQiw4Q0FPeUI7QUFFekIsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxnREFBdUM7QUFDdkMsbUNBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixtQ0FBZ0M7QUFFaEMsMEJBQTBCO0FBQzFCLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQyxNQUFhLEtBQUs7SUFBbEI7UUFpUkU7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQVUsRUFBRTtZQUNoRiwrREFBK0Q7WUFDL0QsTUFBTSxLQUFLLEdBQUcsZUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QywrRUFBK0U7WUFDL0UsT0FBTyxHQUFHLE1BQU0sSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xELENBQUMsQ0FBQztRQTJDRixtREFBbUQ7UUFFbkQ7Ozs7V0FJRztRQUNJLGlCQUFZLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO1FBRUssb0JBQWUsR0FBRyxDQUFDLE9BQWUsRUFBRSxHQUFZLEVBQVUsRUFBRTtZQUNqRSx1QkFBdUI7WUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFFRCxtQ0FBbUM7WUFDbkMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBRUQsMEJBQTBCO1lBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1lBQzdFLENBQUM7WUFFRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELElBQUksaUJBQWlCLEtBQUssT0FBTyxJQUFJLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxlQUFNLENBQUMsU0FBUyxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUM7SUEwTUosQ0FBQztJQXBqQkMsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxTQUFTLENBQUMsZUFBeUIsRUFBRSxtQkFBNkI7UUFDdkUsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLE9BQTBCO1FBQ3ZDLE1BQU0sVUFBVSxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRixLQUFLLE1BQU0sT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWU7UUFDekMsT0FBTyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxJQUFBLHNCQUFXLEVBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEMsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRTFELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDM0QsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUV6QyxNQUFNLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILGVBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLElBQUEsc0JBQVcsRUFBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8seUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDO1FBQ25ELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQXFCLEVBQUUsT0FBZSxFQUFFLEdBQVc7UUFDakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3QywrRUFBK0U7UUFDL0UsTUFBTSxTQUFTLEdBQUcsZUFBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsR0FBRyxlQUFHLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEUsSUFBSSxTQUFTLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZFLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxNQUFNLGVBQWUsR0FBRyxlQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGVBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBRXBDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsV0FBbUIsRUFBRSxTQUFpQixFQUFFLFNBQWlCO1FBQ3ZFLElBQUksQ0FBQztZQUNILE9BQU8sZUFBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQWM7UUFDekIsTUFBTSxNQUFNLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksbUJBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUIsQ0FBQyxVQUFrQjtRQUMxQyxzRkFBc0Y7UUFDdEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxtQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0IsQ0FBQyxHQUFXO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzNCLCtEQUErRDtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFlO1FBQ3BCLE9BQU8sSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxjQUFzQjtRQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLE1BQWM7UUFDakMsT0FBTyxNQUFNLEVBQUUsS0FBSyxLQUFLLHFCQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsT0FBcUI7UUFDcEMsT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxPQUFPLEdBQUksTUFBTSxDQUFDLE1BQXlCO3FCQUM5QyxTQUFTLEVBQUU7cUJBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzVFLElBQUksRUFBRTtxQkFDTixJQUFJLENBQUMseUJBQWlCLENBQUMsQ0FBQztnQkFDM0IsT0FBTztvQkFDTCxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRTtvQkFDOUIsT0FBTztpQkFDUixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLEdBQVc7UUFDekIsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCLENBQUMsU0FBaUI7UUFDdkMsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxTQUFpQjtRQUN2QyxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFZRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxHQUFXO1FBQzNCLE1BQU0sT0FBTyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDO2FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLE1BQU0sRUFBRTthQUNSLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEtBQWE7UUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxPQUFPLGNBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxJQUF5QjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxVQUFVLENBQUMsZUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQTJDRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksWUFBRSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksa0JBQWtCLENBQUMsU0FBbUI7UUFDM0MsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHVCQUF1QixDQUFDLGNBQXdCO1FBQ3JELE9BQU8sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDO1lBQ0gsMkNBQTJDO1lBQzNDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO1lBQ3pHLENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFdkMsMkRBQTJEO1lBQzNELGtFQUFrRTtZQUNsRSxNQUFNLFNBQVMsR0FBRyxlQUFHLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBRUQsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsRUFBTSxFQUFFLFlBQW9CO1FBQzFDLGdGQUFnRjtRQUNoRixpRUFBaUU7UUFDakUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQVUsRUFBaUIsRUFBRTtZQUN4RCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUMxQyxPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVFLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUNsQyxPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckUsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sY0FBYyxLQUFLLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsSUFBVSxFQUFFLE9BQXFCO1FBQ3BELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBd0IsQ0FBQztRQUU3Qyx5QkFBeUI7UUFDekIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTFDLHNDQUFzQztRQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRFLG1CQUFtQjtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzRCxnQkFBZ0I7UUFDaEIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVqRCxlQUFlO1FBQ2YsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxRCxrQ0FBa0M7UUFDbEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQzlFLENBQUM7UUFFRixPQUFPO1lBQ0wsUUFBUSxFQUFFLGlDQUF5QjtZQUNuQyxRQUFRO1lBQ1IsTUFBTTtZQUNOLElBQUk7WUFDSixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLEtBQWEsRUFBRSxPQUFxQjtRQUN4RCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksYUFBYSxDQUFDLE9BQXVCLEVBQUUsT0FBZTtRQUMzRCwyQ0FBMkM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsb0JBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzRixzREFBc0Q7UUFDdEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU5RSx5RUFBeUU7UUFDekUseUVBQXlFO1FBQ3pFLHVEQUF1RDtRQUN2RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0RSxxRUFBcUU7UUFDckUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLHNCQUFZLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUYsK0NBQStDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSx3QkFBYyxDQUFDLElBQUksa0JBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RSw2QkFBNkI7UUFDN0IsT0FBTyxJQUFJLGNBQUksQ0FBQyxNQUFNLEVBQUUsWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxjQUFjLENBQUMsWUFBOEIsRUFBRSxPQUFlO1FBQ25FLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFyakJELHNCQXFqQkM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQzFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUcmFuc2Zlck91dHB1dCxcbiAgVHlwZVN5bWJvbHMsXG4gIElkLFxuICBVdHhvLFxuICBCaWdJbnRQcixcbiAgT3V0cHV0T3duZXJzLFxuICBhdmF4U2VyaWFsLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRYcHJ2LFxuICBpc1ZhbGlkWHB1YixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBBRERSRVNTX1NFUEFSQVRPUiwgRGVjb2RlZFV0eG9PYmosIE91dHB1dCwgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJztcblxuLy8gTm9kZUlEIGZvcm1hdCBjb25zdGFudHNcbmNvbnN0IE5PREVfSURfUFJFRklYID0gJ05vZGVJRC0nO1xuY29uc3QgTk9ERV9JRF9ERUNPREVEX0xFTkdUSCA9IDI0O1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzc2VzIGluIHdhbGxldCBtYXRjaCBVVFhPIG91dHB1dCBhZGRyZXNzZXNcbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlSW4od2FsbGV0QWRkcmVzc2VzOiBzdHJpbmdbXSwgb3R4b091dHB1dEFkZHJlc3Nlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2FsbGV0QWRkcmVzc2VzLm1hcCgoYSkgPT4gb3R4b091dHB1dEFkZHJlc3Nlcy5pbmNsdWRlcyhhKSkucmVkdWNlKChhLCBiKSA9PiBhICYmIGIsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIEZsYXJlIGFkZHJlc3Mgb3IgYXJyYXkgb2YgYWRkcmVzc2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFkZHJlc3MgLSBhZGRyZXNzKGVzKSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBhZGRyZXNzQXJyOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3NBcnIpIHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzc1JlZ2V4KGFkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEFkZHJlc3NSZWdleChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oXlB8fE5vZGVJRCktW2EtekEtWjAtOV0rJC8udGVzdChhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBibG9jayBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIGJsb2NrIElEIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IEJ1ZmZlci5mcm9tKGhhc2gsICdoZXgnKTtcbiAgICAgIHJldHVybiBkZWNvZGVkLmxlbmd0aCA9PT0gMzI7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHB1YmxpYyBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaXNWYWxpZFhwdWIocHViKSkgcmV0dXJuIHRydWU7XG5cbiAgICBsZXQgcHViQnVmOiBCdWZmZXI7XG4gICAgaWYgKHB1Yi5sZW5ndGggPT09IDUwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwdWJCdWYgPSBCdWZmZXIuZnJvbShwdWIsICdoZXgnKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwdWIubGVuZ3RoICE9PSA2NiAmJiBwdWIubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgZmlyc3RCeXRlID0gcHViLnNsaWNlKDAsIDIpO1xuICAgICAgaWYgKHB1Yi5sZW5ndGggPT09IDEzMCAmJiBmaXJzdEJ5dGUgIT09ICcwNCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChwdWIubGVuZ3RoID09PSA2NiAmJiBmaXJzdEJ5dGUgIT09ICcwMicgJiYgZmlyc3RCeXRlICE9PSAnMDMnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocHViKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBwdWJCdWYgPSBCdWZmZXIuZnJvbShwdWIsICdoZXgnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZWNjLmlzUG9pbnQocHViQnVmKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAocHJ2Lmxlbmd0aCAhPT0gNjQgJiYgcHJ2Lmxlbmd0aCAhPT0gNjYpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocHJ2Lmxlbmd0aCA9PT0gNjYgJiYgcHJ2LnNsaWNlKDY0KSAhPT0gJzAxJykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmFsbEhleENoYXJzKHBydik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgc3RyaW5nIGNvbnRhaW5zIG9ubHkgaGV4IGNoYXJhY3RlcnNcbiAgICovXG4gIGFsbEhleENoYXJzKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eKDB4KXswLDF9KFswLTlhLWZdKSskL2kudGVzdChzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIE5vZGVJRCBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vZGVJRCAtIE5vZGVJRCB0byB2YWxpZGF0ZSAoZS5nLiwgXCJOb2RlSUQteHh4XCIpXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgdmFsaWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaXNWYWxpZE5vZGVJRChub2RlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghbm9kZUlELnN0YXJ0c1dpdGgoTk9ERV9JRF9QUkVGSVgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gYnM1OC5kZWNvZGUobm9kZUlELnNsaWNlKE5PREVfSURfUFJFRklYLmxlbmd0aCkpO1xuICAgICAgcmV0dXJuIGRlY29kZWQubGVuZ3RoID09PSBOT0RFX0lEX0RFQ09ERURfTEVOR1RIO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2lnbmF0dXJlIHVzaW5nIHRoZSBGbGFyZSBuZXR3b3JrIHBhcmFtZXRlcnNcbiAgICogUmV0dXJucyBhIDY1LWJ5dGUgc2lnbmF0dXJlICg2NCBieXRlcyBzaWduYXR1cmUgKyAxIGJ5dGUgcmVjb3ZlcnkgcGFyYW1ldGVyKVxuICAgKi9cbiAgY3JlYXRlU2lnbmF0dXJlKG5ldHdvcms6IEZsYXJlTmV0d29yaywgbWVzc2FnZTogQnVmZmVyLCBwcnY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgbWVzc2FnZUhhc2ggPSB0aGlzLnNoYTI1NihtZXNzYWdlKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBlY2Muc2lnbihtZXNzYWdlSGFzaCwgcHJ2KTtcblxuICAgIC8vIEdldCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBwcml2YXRlIGtleSBmb3IgcmVjb3ZlcnkgcGFyYW1ldGVyIGRldGVybWluYXRpb25cbiAgICBjb25zdCBwdWJsaWNLZXkgPSBlY2MucG9pbnRGcm9tU2NhbGFyKHBydiwgdHJ1ZSk7XG4gICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlcml2ZSBwdWJsaWMga2V5IGZyb20gcHJpdmF0ZSBrZXknKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgcmVjb3Zlcnkgd2l0aCBwYXJhbSAwIGFuZCAxIHRvIGZpbmQgdGhlIGNvcnJlY3Qgb25lXG4gICAgbGV0IHJlY292ZXJ5UGFyYW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDE7IGkrKykge1xuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ25hdHVyZSwgaSwgdHJ1ZSk7XG4gICAgICBpZiAocmVjb3ZlcmVkICYmIEJ1ZmZlci5mcm9tKHJlY292ZXJlZCkuZXF1YWxzKEJ1ZmZlci5mcm9tKHB1YmxpY0tleSkpKSB7XG4gICAgICAgIHJlY292ZXJ5UGFyYW0gPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBlbmQgcmVjb3ZlcnkgcGFyYW1ldGVyIHRvIGNyZWF0ZSA2NS1ieXRlIHNpZ25hdHVyZVxuICAgIGNvbnN0IHNpZ1dpdGhSZWNvdmVyeSA9IEJ1ZmZlci5hbGxvYyg2NSk7XG4gICAgQnVmZmVyLmZyb20oc2lnbmF0dXJlKS5jb3B5KHNpZ1dpdGhSZWNvdmVyeSwgMCk7XG4gICAgc2lnV2l0aFJlY292ZXJ5WzY0XSA9IHJlY292ZXJ5UGFyYW07XG5cbiAgICByZXR1cm4gc2lnV2l0aFJlY292ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gVGhlIDY0LWJ5dGUgc2lnbmF0dXJlICh3aXRob3V0IHJlY292ZXJ5IHBhcmFtZXRlcilcbiAgICogQHBhcmFtIHB1YmxpY0tleSAtIFRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeSBhZ2FpbnN0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkXG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUobWVzc2FnZUhhc2g6IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIsIHB1YmxpY0tleTogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlY2MudmVyaWZ5KG1lc3NhZ2VIYXNoLCBwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHNpZ25hdHVyZSBvYmplY3RcbiAgICovXG4gIGNyZWF0ZU5ld1NpZyhzaWdIZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LnBhZFN0YXJ0KDEzMCwgJzAnKSwgJ2hleCcpO1xuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGJ1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlbXB0eSBzaWduYXR1cmUgd2l0aCBlbWJlZGRlZCBhZGRyZXNzIGZvciBzaWduYXR1cmUgc2xvdCBpZGVudGlmaWNhdGlvbi5cbiAgICogVGhlIGFkZHJlc3MgaXMgZW1iZWRkZWQgYXQgcG9zaXRpb24gOTAgKGFmdGVyIHRoZSBmaXJzdCA0NSB6ZXJvIGJ5dGVzKS5cbiAgICogVGhpcyBhbGxvd3MgdGhlIHNpZ25pbmcgbG9naWMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNsb3QgYmVsb25ncyB0byB3aGljaCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gYWRkcmVzc0hleCBUaGUgMjAtYnl0ZSBhZGRyZXNzIGluIGhleCBmb3JtYXQgKDQwIGNoYXJzLCB3aXRob3V0IDB4IHByZWZpeClcbiAgICovXG4gIGNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoYWRkcmVzc0hleDogc3RyaW5nKTogU2lnbmF0dXJlIHtcbiAgICAvLyBGaXJzdCA0NSBieXRlcyAoOTAgaGV4IGNoYXJzKSBhcmUgemVyb3MsIGZvbGxvd2VkIGJ5IDIwLWJ5dGUgYWRkcmVzcyAoNDAgaGV4IGNoYXJzKVxuICAgIGNvbnN0IGNsZWFuQWRkciA9IHRoaXMucmVtb3ZlSGV4UHJlZml4KGFkZHJlc3NIZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3Qgc2lnSGV4ID0gJzAnLnJlcGVhdCg5MCkgKyBjbGVhbkFkZHIucGFkU3RhcnQoNDAsICcwJyk7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LCAnaGV4Jyk7XG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoYnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgZW1iZWRkZWQgYWRkcmVzcyBmcm9tIGFuIGVtcHR5IHNpZ25hdHVyZS5cbiAgICogUmV0dXJucyB0aGUgYWRkcmVzcyBoZXggc3RyaW5nICg0MCBjaGFycykgb3IgZW1wdHkgc3RyaW5nIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEFkZHJlc3NGcm9tRW1wdHlTaWcoc2lnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFuU2lnID0gdGhpcy5yZW1vdmVIZXhQcmVmaXgoc2lnKTtcbiAgICBpZiAoY2xlYW5TaWcubGVuZ3RoID49IDEzMCkge1xuICAgICAgLy8gQWRkcmVzcyBpcyBhdCBwb3NpdGlvbiA5MC0xMzAgKGxhc3QgNDAgaGV4IGNoYXJzID0gMjAgYnl0ZXMpXG4gICAgICByZXR1cm4gY2xlYW5TaWcuc3Vic3RyaW5nKDkwLCAxMzApLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBTSEEyNTYgaGFzaFxuICAgKi9cbiAgc2hhMjU2KGJ1ZjogVWludDhBcnJheSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShidWYpLmRpZ2VzdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyByYXcgdHJhbnNhY3Rpb24gZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgbm90IGhleCBzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG91dHB1dCBpcyBUcmFuc2ZlcmFibGVPdXRwdXQgdHlwZVxuICAgKi9cbiAgaXNUcmFuc2ZlcmFibGVPdXRwdXQob3V0cHV0OiBPdXRwdXQpOiBvdXRwdXQgaXMgVHJhbnNmZXJhYmxlT3V0cHV0IHtcbiAgICByZXR1cm4gb3V0cHV0Py5fdHlwZSA9PT0gVHlwZVN5bWJvbHMuVHJhbnNmZXJhYmxlT3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgb3V0cHV0cyB0byBlbnRyeSBmb3JtYXRcbiAgICovXG4gIG1hcE91dHB1dFRvRW50cnkobmV0d29yazogRmxhcmVOZXR3b3JrKTogKE91dHB1dCkgPT4gRW50cnkge1xuICAgIHJldHVybiAob3V0cHV0OiBPdXRwdXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzVHJhbnNmZXJhYmxlT3V0cHV0KG91dHB1dCkpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0LmFtb3VudCgpO1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gKG91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQpXG4gICAgICAgICAgLmdldE93bmVycygpXG4gICAgICAgICAgLm1hcCgoYSkgPT4gdGhpcy5hZGRyZXNzVG9TdHJpbmcobmV0d29yay5ocnAsIG5ldHdvcmsuYWxpYXMsIEJ1ZmZlci5mcm9tKGEpKSlcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBvdXRwdXRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG91dHB1dCB0eXBlJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIDB4IHByZWZpeCBmcm9tIGhleCBzdHJpbmdcbiAgICovXG4gIHJlbW92ZUhleFByZWZpeChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhleC5zdGFydHNXaXRoKCcweCcpID8gaGV4LnN1YnN0cmluZygyKSA6IGhleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBvdXRwdXQgaW5kZXggdG8gYnVmZmVyXG4gICAqL1xuICBvdXRwdXRpZHhOdW1iZXJUb0J1ZmZlcihvdXRwdXRpZHg6IHN0cmluZyk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKE51bWJlcihvdXRwdXRpZHgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpLCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgb3V0cHV0IGluZGV4IGJ1ZmZlciB0byBudW1iZXIgc3RyaW5nXG4gICAqL1xuICBvdXRwdXRpZHhCdWZmZXJUb051bWJlcihvdXRwdXRpZHg6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG91dHB1dGlkeC50b1N0cmluZygnaGV4JyksIDE2KS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY29udmVydCBhZGRyZXNzIGNvbXBvbmVudHMgdG8gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkcmVzc1RvU3RyaW5nID0gKGhycDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgYWRkcmVzczogQnVmZmVyKTogc3RyaW5nID0+IHtcbiAgICAvLyBDb252ZXJ0IHRoZSBhZGRyZXNzIGJ5dGVzIHRvIDUtYml0IHdvcmRzIGZvciBiZWNoMzIgZW5jb2RpbmdcbiAgICBjb25zdCB3b3JkcyA9IGJlY2gzMi50b1dvcmRzKGFkZHJlc3MpO1xuICAgIC8vIENyZWF0ZSB0aGUgZnVsbCBiZWNoMzIgYWRkcmVzcyB3aXRoIGZvcm1hdDogUC17aHJwfTF7YmVjaDMyX2VuY29kZWRfYWRkcmVzc31cbiAgICByZXR1cm4gYCR7cHJlZml4fS0ke2JlY2gzMi5lbmNvZGUoaHJwLCB3b3Jkcyl9YDtcbiAgfTtcblxuICAvKipcbiAgICogRGVjb2RlcyBhIGJhc2U1OCBzdHJpbmcgd2l0aCBjaGVja3N1bSB0byBhIEJ1ZmZlclxuICAgKi9cbiAgcHVibGljIGNiNThEZWNvZGUoc3RyOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiczU4LmRlY29kZShzdHIpO1xuICAgIGlmICghdGhpcy52YWxpZGF0ZUNoZWNrc3VtKEJ1ZmZlci5mcm9tKGRlY29kZWQpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtJyk7XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZWNvZGVkLnNsaWNlKDAsIGRlY29kZWQubGVuZ3RoIC0gNCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGNoZWNrc3VtIG9uIGEgQnVmZmVyIGFuZCByZXR1cm5zIHRydWUgaWYgdmFsaWQsIGZhbHNlIGlmIG5vdFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNoZWNrc3VtKGJ1ZmY6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc2hTbGljZSA9IGJ1ZmYuc2xpY2UoYnVmZi5sZW5ndGggLSA0KTtcbiAgICBjb25zdCBjYWxjdWxhdGVkSGFzaFNsaWNlID0gY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgIC51cGRhdGUoYnVmZi5zbGljZSgwLCBidWZmLmxlbmd0aCAtIDQpKVxuICAgICAgLmRpZ2VzdCgpXG4gICAgICAuc2xpY2UoMjgpO1xuICAgIHJldHVybiBoYXNoU2xpY2UudG9TdHJpbmcoJ2hleCcpID09PSBjYWxjdWxhdGVkSGFzaFNsaWNlLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgQnVmZmVyIGFzIGEgYmFzZTU4IHN0cmluZyB3aXRoIGNoZWNrc3VtXG4gICAqL1xuICBwdWJsaWMgY2I1OEVuY29kZShieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3aXRoQ2hlY2tzdW0gPSB0aGlzLmFkZENoZWNrc3VtKGJ5dGVzKTtcbiAgICByZXR1cm4gYnM1OC5lbmNvZGUod2l0aENoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hlY2tzdW0gdG8gYSBCdWZmZXIgYW5kIHJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRcbiAgICogVXNlcyBsYXN0IDQgYnl0ZXMgb2YgU0hBMjU2IGhhc2ggYXMgY2hlY2tzdW0gKG1hdGNoaW5nIGF2YXhwIGJlaGF2aW9yKVxuICAgKi9cbiAgcHVibGljIGFkZENoZWNrc3VtKGJ1ZmY6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICBjb25zdCBoYXNoU2xpY2UgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKS5zbGljZSgyOCk7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgaGFzaFNsaWNlXSkpO1xuICB9XG5cbiAgLy8gSW4gdXRpbHMudHMsIGFkZCB0aGlzIG1ldGhvZCB0byB0aGUgVXRpbHMgY2xhc3M6XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIGFkZHJlc3Mgc3RyaW5nIGludG8gYSBCdWZmZXJcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBwYXJzZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgcGFyc2VkIGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBwYXJzZUFkZHJlc3MgPSAoYWRkcmVzczogc3RyaW5nKTogQnVmZmVyID0+IHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUb0FkZHJlc3MoYWRkcmVzcyk7XG4gIH07XG5cbiAgcHVibGljIHN0cmluZ1RvQWRkcmVzcyA9IChhZGRyZXNzOiBzdHJpbmcsIGhycD86IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gICAgLy8gSGFuZGxlIGhleCBhZGRyZXNzZXNcbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oYWRkcmVzcy5zbGljZSgyKSwgJ2hleCcpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSByYXcgaGV4IHdpdGhvdXQgMHggcHJlZml4XG4gICAgaWYgKC9eWzAtOWEtZkEtRl17NDB9JC8udGVzdChhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFkZHJlc3MsICdoZXgnKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQmVjaDMyIGFkZHJlc3Nlc1xuICAgIGNvbnN0IHBhcnRzID0gYWRkcmVzcy50cmltKCkuc3BsaXQoJy0nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciAtIFZhbGlkIGFkZHJlc3Mgc2hvdWxkIGluY2x1ZGUgLScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwbGl0ID0gcGFydHNbMV0ubGFzdEluZGV4T2YoJzEnKTtcbiAgICBpZiAoc3BsaXQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gVmFsaWQgYmVjaDMyIGFkZHJlc3MgbXVzdCBpbmNsdWRlIHNlcGFyYXRvciAoMSknKTtcbiAgICB9XG5cbiAgICBjb25zdCBodW1hblJlYWRhYmxlUGFydCA9IHBhcnRzWzFdLnNsaWNlKDAsIHNwbGl0KTtcbiAgICBpZiAoaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdmbGFyZScgJiYgaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdjb3N0d28nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gSW52YWxpZCBIUlAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmVjaDMyLmZyb21Xb3JkcyhiZWNoMzIuZGVjb2RlKHBhcnRzWzFdKS53b3JkcykpO1xuICB9O1xuXG4gIGZsYXJlSWRTdHJpbmcodmFsdWU6IHN0cmluZyk6IElkIHtcbiAgICByZXR1cm4gbmV3IElkKEJ1ZmZlci5mcm9tKHZhbHVlLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgYWRkcmVzc2VzIGxleGljb2dyYXBoaWNhbGx5IGJ5IHRoZWlyIGJ5dGUgcmVwcmVzZW50YXRpb24uXG4gICAqIFRoaXMgbWF0Y2hlcyBob3cgYWRkcmVzc2VzIGFyZSBzdG9yZWQgb24tY2hhaW4gaW4gQXZhbGFuY2hlL0ZsYXJlIFAtY2hhaW4gVVRYT3MuXG4gICAqXG4gICAqIElNUE9SVEFOVDogVGhpcyBzb3J0aW5nIE1VU1QgYmUgY29uc2lzdGVudCB3aXRoIEZsYXJlSlMncyBpbnRlcm5hbCBhZGRyZXNzIHNvcnRpbmcuXG4gICAqIEZsYXJlSlMgdXNlcyB0aGUgc2FtZSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb246IGBoZXhBLmxvY2FsZUNvbXBhcmUoaGV4QilgLlxuICAgKiBUaGUgc2lnSW5kaWNlcyBpbiB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kIG9uIHRoaXMgc29ydGVkIG9yZGVyLCBzbyBhbnkgZGV2aWF0aW9uXG4gICAqIHdvdWxkIGNhdXNlIHNpZ25hdHVyZSBvcmRlciBtaXNtYXRjaGVzIGFuZCBvbi1jaGFpbiB2ZXJpZmljYXRpb24gZmFpbHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzZXMgLSBBcnJheSBvZiBiZWNoMzIgYWRkcmVzcyBzdHJpbmdzIChlLmcuLCBcIlAtY29zdHdvMS4uLlwiKVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzZXMgc29ydGVkIGJ5IGhleCB2YWx1ZSAoYXNjZW5kaW5nIGxleGljb2dyYXBoaWMgb3JkZXIpXG4gICAqL1xuICBwdWJsaWMgc29ydEFkZHJlc3Nlc0J5SGV4KGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi5hZGRyZXNzZXNdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFIZXggPSB0aGlzLnBhcnNlQWRkcmVzcyhhKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBiSGV4ID0gdGhpcy5wYXJzZUFkZHJlc3MoYikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgcmV0dXJuIGFIZXgubG9jYWxlQ29tcGFyZShiSGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IGFkZHJlc3MgYnVmZmVycyBsZXhpY29ncmFwaGljYWxseSBieSB0aGVpciBieXRlIHJlcHJlc2VudGF0aW9uLlxuICAgKiBUaGlzIG1hdGNoZXMgaG93IGFkZHJlc3NlcyBhcmUgc3RvcmVkIG9uLWNoYWluIGluIEF2YWxhbmNoZS9GbGFyZSBQLWNoYWluIFVUWE9zLlxuICAgKiBAcGFyYW0gYWRkcmVzc0J1ZmZlcnMgLSBBcnJheSBvZiBhZGRyZXNzIGJ5dGUgYnVmZmVyc1xuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzIGJ1ZmZlcnMgc29ydGVkIGJ5IGhleCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNvcnRBZGRyZXNzQnVmZmVyc0J5SGV4KGFkZHJlc3NCdWZmZXJzOiBCdWZmZXJbXSk6IEJ1ZmZlcltdIHtcbiAgICByZXR1cm4gWy4uLmFkZHJlc3NCdWZmZXJzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS50b1N0cmluZygnaGV4JykubG9jYWxlQ29tcGFyZShiLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3ZlciBwdWJsaWMga2V5IGZyb20gc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gNjUtYnl0ZSBzaWduYXR1cmUgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSBwYXJhbWV0ZXIpXG4gICAqIEByZXR1cm4gcmVjb3ZlcmVkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY292ZXJ5U2lnbmF0dXJlKG1lc3NhZ2VIYXNoOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICB0cnkge1xuICAgICAgLy8gRXh0cmFjdCByZWNvdmVyeSBwYXJhbWV0ZXIgYW5kIHNpZ25hdHVyZVxuICAgICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDY1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUgbGVuZ3RoIC0gZXhwZWN0ZWQgNjUgYnl0ZXMgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSknKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjb3ZlcnlQYXJhbSA9IHNpZ25hdHVyZVs2NF07XG4gICAgICBjb25zdCBzaWdPbmx5ID0gc2lnbmF0dXJlLnNsaWNlKDAsIDY0KTtcblxuICAgICAgLy8gUmVjb3ZlciBwdWJsaWMga2V5IHVzaW5nIHRoZSBwcm92aWRlZCByZWNvdmVyeSBwYXJhbWV0ZXJcbiAgICAgIC8vIG1lc3NhZ2VIYXNoIHNob3VsZCBhbHJlYWR5IGJlIHRoZSBTSEEyNTYgaGFzaCAoc2lnbmFibGVQYXlsb2FkKVxuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ09ubHksIHJlY292ZXJ5UGFyYW0sIHRydWUpO1xuICAgICAgaWYgKCFyZWNvdmVyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmVjb3ZlciBwdWJsaWMga2V5Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShyZWNvdmVyZWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWNvdmVyIHNpZ25hdHVyZTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0eCBpcyBmb3IgdGhlIGJsb2NrY2hhaW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmxvY2tjaGFpbklkIC0gYmxvY2tjaGFpbiBJRCBpbiBoZXggZm9ybWF0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHggaXMgZm9yIGJsb2NrY2hhaW5JZFxuICAgKi9cbiAgaXNUcmFuc2FjdGlvbk9mKHR4OiBUeCwgYmxvY2tjaGFpbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBOb3RlOiBnZXRCbG9ja2NoYWluSWQoKSBhbmQgQmxvY2tjaGFpbklkLnZhbHVlKCkgcmV0dXJuIENCNTgtZW5jb2RlZCBzdHJpbmdzLFxuICAgIC8vIGJ1dCB3ZSBuZWVkIGhleCBmb3JtYXQsIHNvIHdlIHVzZSB0b0J5dGVzKCkgYW5kIGNvbnZlcnQgdG8gaGV4XG4gICAgY29uc3QgZXh0cmFjdEJsb2NrY2hhaW5JZCA9ICh0eE9iajogYW55KTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodHlwZW9mIHR4T2JqLmdldFR4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IGlubmVyVHggPSB0eE9iai5nZXRUeCgpO1xuICAgICAgICBpZiAoaW5uZXJUeC5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShpbm5lclR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubmVyVHguYmxvY2tjaGFpbklkPy50b0J5dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlubmVyVHguYmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai50eD8uYmFzZVR4Py5CbG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLnR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odHhPYmouYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eE9iai5ibG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLmJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IHR4QmxvY2tjaGFpbklkID0gZXh0cmFjdEJsb2NrY2hhaW5JZCh0eCk7XG4gICAgcmV0dXJuIHR4QmxvY2tjaGFpbklkID09PSBibG9ja2NoYWluSWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBGbGFyZUpTIG5hdGl2ZSBVdHhvIHRvIERlY29kZWRVdHhvT2JqIGZvciBpbnRlcm5hbCB1c2VcbiAgICogQHBhcmFtIHV0eG8gLSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqIEBwYXJhbSBuZXR3b3JrIC0gRmxhcmUgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIERlY29kZWRVdHhvT2JqIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBtZXRob2RzXG4gICAqL1xuICBwdWJsaWMgdXR4b1RvRGVjb2RlZCh1dHhvOiBVdHhvLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09iaiB7XG4gICAgY29uc3Qgb3V0cHV0T3duZXJzID0gdXR4by5nZXRPdXRwdXRPd25lcnMoKTtcbiAgICBjb25zdCBvdXRwdXQgPSB1dHhvLm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcblxuICAgIC8vIEdldCBhbW91bnQgZnJvbSBvdXRwdXRcbiAgICBjb25zdCBhbW91bnQgPSBvdXRwdXQuYW1vdW50KCkudG9TdHJpbmcoKTtcblxuICAgIC8vIEdldCB0eGlkIGZyb20gdXR4b0lkIChjYjU4IGVuY29kZWQpXG4gICAgY29uc3QgdHhpZCA9IHRoaXMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh1dHhvLnV0eG9JZC50eElELnRvQnl0ZXMoKSkpO1xuXG4gICAgLy8gR2V0IG91dHB1dCBpbmRleFxuICAgIGNvbnN0IG91dHB1dGlkeCA9IHV0eG8udXR4b0lkLm91dHB1dElkeC52YWx1ZSgpLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBHZXQgdGhyZXNob2xkXG4gICAgY29uc3QgdGhyZXNob2xkID0gb3V0cHV0T3duZXJzLnRocmVzaG9sZC52YWx1ZSgpO1xuXG4gICAgLy8gR2V0IGxvY2t0aW1lXG4gICAgY29uc3QgbG9ja3RpbWUgPSBvdXRwdXRPd25lcnMubG9ja3RpbWUudmFsdWUoKS50b1N0cmluZygpO1xuXG4gICAgLy8gR2V0IGFkZHJlc3NlcyBhcyBiZWNoMzIgc3RyaW5nc1xuICAgIGNvbnN0IGFkZHJlc3NlcyA9IG91dHB1dE93bmVycy5hZGRycy5tYXAoKGFkZHIpID0+XG4gICAgICB0aGlzLmFkZHJlc3NUb1N0cmluZyhuZXR3b3JrLmhycCwgbmV0d29yay5hbGlhcywgQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICBsb2NrdGltZSxcbiAgICAgIGFtb3VudCxcbiAgICAgIHR4aWQsXG4gICAgICBvdXRwdXRpZHgsXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRyZXNzZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFycmF5IG9mIEZsYXJlSlMgVXR4b3MgdG8gRGVjb2RlZFV0eG9PYmogYXJyYXlcbiAgICogQHBhcmFtIHV0eG9zIC0gQXJyYXkgb2YgRmxhcmVKUyBVdHhvIG9iamVjdHNcbiAgICogQHBhcmFtIG5ldHdvcmsgLSBGbGFyZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgRGVjb2RlZFV0eG9PYmpcbiAgICovXG4gIHB1YmxpYyB1dHhvc1RvRGVjb2RlZCh1dHhvczogVXR4b1tdLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICByZXR1cm4gdXR4b3MubWFwKCh1dHhvKSA9PiB0aGlzLnV0eG9Ub0RlY29kZWQodXR4bywgbmV0d29yaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RcbiAgICogVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiB1dHhvVG9EZWNvZGVkXG4gICAqXG4gICAqIElNUE9SVEFOVDogQWRkcmVzc2VzIGFyZSBzb3J0ZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaFxuICAgKiBvbi1jaGFpbiBzdG9yYWdlIG9yZGVyLiBUaGUgQVBJIG1heSByZXR1cm4gYWRkcmVzc2VzIGluIGFyYml0cmFyeSBvcmRlciwgYnV0XG4gICAqIG9uLWNoYWluIFVUWE9zIGFsd2F5cyBzdG9yZSBhZGRyZXNzZXMgaW4gc29ydGVkIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZGVjb2RlZCAtIERlY29kZWRVdHhvT2JqIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIGFzc2V0SWQgLSBBc3NldCBJRCBhcyBjYjU4IGVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIE5hdGl2ZSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4byhkZWNvZGVkOiBEZWNvZGVkVXR4b09iaiwgYXNzZXRJZDogc3RyaW5nKTogVXR4byB7XG4gICAgLy8gQ3JlYXRlIFVUWE9JRCBmcm9tIHR4aWQgYW5kIG91dHB1dCBpbmRleFxuICAgIGNvbnN0IHV0eG9JZCA9IGF2YXhTZXJpYWwuVVRYT0lELmZyb21OYXRpdmUoZGVjb2RlZC50eGlkLCBwYXJzZUludChkZWNvZGVkLm91dHB1dGlkeCwgMTApKTtcblxuICAgIC8vIFBhcnNlIGFkZHJlc3NlcyBmcm9tIGJlY2gzMiBzdHJpbmdzIHRvIGJ5dGUgYnVmZmVyc1xuICAgIGNvbnN0IGFkZHJlc3NCeXRlcyA9IGRlY29kZWQuYWRkcmVzc2VzLm1hcCgoYWRkcikgPT4gdGhpcy5wYXJzZUFkZHJlc3MoYWRkcikpO1xuXG4gICAgLy8gU29ydCBhZGRyZXNzZXMgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaCBvbi1jaGFpbiBvcmRlclxuICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSB0aGUgUC1jaGFpbiBzdG9yZXMgYWRkcmVzc2VzIGluIHNvcnRlZCBvcmRlcixcbiAgICAvLyBhbmQgc2lnSW5kaWNlcyBtdXN0IHJlZmVyZW5jZSB0aGUgY29ycmVjdCBwb3NpdGlvbnMuXG4gICAgY29uc3Qgc29ydGVkQWRkcmVzc0J5dGVzID0gdGhpcy5zb3J0QWRkcmVzc0J1ZmZlcnNCeUhleChhZGRyZXNzQnl0ZXMpO1xuXG4gICAgLy8gQ3JlYXRlIE91dHB1dE93bmVycyB3aXRoIGxvY2t0aW1lLCB0aHJlc2hvbGQsIGFuZCBTT1JURUQgYWRkcmVzc2VzXG4gICAgY29uc3QgbG9ja3RpbWUgPSBkZWNvZGVkLmxvY2t0aW1lID8gQmlnSW50KGRlY29kZWQubG9ja3RpbWUpIDogQmlnSW50KDApO1xuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IE91dHB1dE93bmVycy5mcm9tTmF0aXZlKHNvcnRlZEFkZHJlc3NCeXRlcywgbG9ja3RpbWUsIGRlY29kZWQudGhyZXNob2xkKTtcblxuICAgIC8vIENyZWF0ZSBUcmFuc2Zlck91dHB1dCB3aXRoIGFtb3VudCBhbmQgb3duZXJzXG4gICAgY29uc3QgYW1vdW50ID0gQmlnSW50KGRlY29kZWQuYW1vdW50KTtcbiAgICBjb25zdCB0cmFuc2Zlck91dHB1dCA9IG5ldyBUcmFuc2Zlck91dHB1dChuZXcgQmlnSW50UHIoYW1vdW50KSwgb3V0cHV0T3duZXJzKTtcblxuICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBVdHhvXG4gICAgcmV0dXJuIG5ldyBVdHhvKHV0eG9JZCwgSWQuZnJvbVN0cmluZyhhc3NldElkKSwgdHJhbnNmZXJPdXRwdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgb2YgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqIEBwYXJhbSBkZWNvZGVkVXR4b3MgLSBBcnJheSBvZiBEZWNvZGVkVXR4b09ialxuICAgKiBAcGFyYW0gYXNzZXRJZCAtIEFzc2V0IElEIGFzIGNiNTggZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4b3MoZGVjb2RlZFV0eG9zOiBEZWNvZGVkVXR4b09ialtdLCBhc3NldElkOiBzdHJpbmcpOiBVdHhvW10ge1xuICAgIHJldHVybiBkZWNvZGVkVXR4b3MubWFwKChkZWNvZGVkKSA9PiB0aGlzLmRlY29kZWRUb1V0eG8oZGVjb2RlZCwgYXNzZXRJZCkpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -78,4 +78,25 @@ export declare const INVALID_SHORT_KEYPAIR_KEY = "82A34E";
|
|
|
78
78
|
export declare const INVALID_PRIVATE_KEY_ERROR_MESSAGE = "Unsupported private key";
|
|
79
79
|
export declare const INVALID_PUBLIC_KEY_ERROR_MESSAGE = "Unsupported public key";
|
|
80
80
|
export declare const INVALID_LONG_KEYPAIR_PRV: string;
|
|
81
|
+
/**
|
|
82
|
+
* On-chain verified test wallet keys
|
|
83
|
+
* Used for testing transactions that have been validated on Flare Coston2 testnet
|
|
84
|
+
*/
|
|
85
|
+
export declare const ON_CHAIN_TEST_WALLET: {
|
|
86
|
+
user: {
|
|
87
|
+
privateKey: string;
|
|
88
|
+
pChainAddress: string;
|
|
89
|
+
corethAddress: string;
|
|
90
|
+
};
|
|
91
|
+
bitgo: {
|
|
92
|
+
privateKey: string;
|
|
93
|
+
pChainAddress: string;
|
|
94
|
+
corethAddress: string;
|
|
95
|
+
};
|
|
96
|
+
backup: {
|
|
97
|
+
privateKey: string;
|
|
98
|
+
pChainAddress: string;
|
|
99
|
+
corethAddress: string;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
81
102
|
//# sourceMappingURL=account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../test/resources/account.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;CAcxB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;CAUrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;CAUrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;CASrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;CASrB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBnB,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAElD,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAE3E,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,eAAO,MAAM,wBAAwB,QAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../test/resources/account.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;CAcxB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;CAUrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;CAUrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;CASrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;CASrB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBnB,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAElD,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAE3E,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,eAAO,MAAM,wBAAwB,QAAiC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAgBhC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INVALID_LONG_KEYPAIR_PRV = exports.INVALID_PUBLIC_KEY_ERROR_MESSAGE = exports.INVALID_PRIVATE_KEY_ERROR_MESSAGE = exports.INVALID_SHORT_KEYPAIR_KEY = exports.CONTEXT = exports.ACCOUNT_4 = exports.ACCOUNT_3 = exports.ACCOUNT_2 = exports.ACCOUNT_1 = exports.SEED_ACCOUNT = void 0;
|
|
3
|
+
exports.ON_CHAIN_TEST_WALLET = exports.INVALID_LONG_KEYPAIR_PRV = exports.INVALID_PUBLIC_KEY_ERROR_MESSAGE = exports.INVALID_PRIVATE_KEY_ERROR_MESSAGE = exports.INVALID_SHORT_KEYPAIR_KEY = exports.CONTEXT = exports.ACCOUNT_4 = exports.ACCOUNT_3 = exports.ACCOUNT_2 = exports.ACCOUNT_1 = exports.SEED_ACCOUNT = void 0;
|
|
4
4
|
exports.SEED_ACCOUNT = {
|
|
5
5
|
seed: '4c3b89f6ca897cb729d2146913877f71',
|
|
6
6
|
privateKey: 'd8f07de5977843949bf4b81b0978117c85f2582c57d7dda9a0450ff3fbef19fe',
|
|
@@ -76,4 +76,25 @@ exports.INVALID_SHORT_KEYPAIR_KEY = '82A34E';
|
|
|
76
76
|
exports.INVALID_PRIVATE_KEY_ERROR_MESSAGE = 'Unsupported private key';
|
|
77
77
|
exports.INVALID_PUBLIC_KEY_ERROR_MESSAGE = 'Unsupported public key';
|
|
78
78
|
exports.INVALID_LONG_KEYPAIR_PRV = exports.SEED_ACCOUNT.privateKey + 'F1';
|
|
79
|
-
|
|
79
|
+
/**
|
|
80
|
+
* On-chain verified test wallet keys
|
|
81
|
+
* Used for testing transactions that have been validated on Flare Coston2 testnet
|
|
82
|
+
*/
|
|
83
|
+
exports.ON_CHAIN_TEST_WALLET = {
|
|
84
|
+
user: {
|
|
85
|
+
privateKey: 'c9e1638b866930153d06d30234ab80b34cd8af52715c881cb5a3b60a7aad3fef',
|
|
86
|
+
pChainAddress: 'P-costwo1cgpnd2v0a0qxevncn4m7st2lychuyn7czpd5k9',
|
|
87
|
+
corethAddress: 'C-costwo1cgpnd2v0a0qxevncn4m7st2lychuyn7czpd5k9',
|
|
88
|
+
},
|
|
89
|
+
bitgo: {
|
|
90
|
+
privateKey: '854309c49c8064a806b1d95964b35d23a3b01b4f8dd16884348f37669af6a0ed',
|
|
91
|
+
pChainAddress: 'P-costwo1xz2dh8g69l7almnks86l47m7dand9pzfnfpxwp',
|
|
92
|
+
corethAddress: 'C-costwo1xz2dh8g69l7almnks86l47m7dand9pzfnfpxwp',
|
|
93
|
+
},
|
|
94
|
+
backup: {
|
|
95
|
+
privateKey: '00bd5a0bfdb5e4b536c4ccdf181014bfb8b022d49e563f48fc799b9d2f20def0',
|
|
96
|
+
pChainAddress: 'P-costwo107q8ch4jsa58xdjlhl7ggazu6vgqgekhuszr7a',
|
|
97
|
+
corethAddress: 'C-costwo107q8ch4jsa58xdjlhl7ggazu6vgqgekhuszr7a',
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL2FjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxZQUFZLEdBQUc7SUFDMUIsSUFBSSxFQUFFLGtDQUFrQztJQUN4QyxVQUFVLEVBQUUsa0VBQWtFO0lBQzlFLFNBQVMsRUFBRSxvRUFBb0U7SUFDL0UsV0FBVyxFQUNULGlIQUFpSDtJQUNuSCxVQUFVLEVBQ1IsaUhBQWlIO0lBQ25ILGNBQWMsRUFBRSwrREFBK0Q7SUFDL0UsY0FBYyxFQUFFLGdEQUFnRDtJQUNoRSxjQUFjLEVBQUUsaURBQWlEO0lBQ2pFLE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLFNBQVMsRUFDUCxvSUFBb0k7Q0FDdkksQ0FBQztBQUVXLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLElBQUksRUFBRSxrQ0FBa0M7SUFDeEMsVUFBVSxFQUFFLGtFQUFrRTtJQUM5RSxTQUFTLEVBQUUsb0VBQW9FO0lBQy9FLFdBQVcsRUFDVCxpSEFBaUg7SUFDbkgsVUFBVSxFQUNSLGlIQUFpSDtJQUNuSCxjQUFjLEVBQUUsZ0RBQWdEO0lBQ2hFLGNBQWMsRUFBRSxpREFBaUQ7Q0FDbEUsQ0FBQztBQUVXLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLElBQUksRUFBRSxrQ0FBa0M7SUFDeEMsVUFBVSxFQUFFLGtFQUFrRTtJQUM5RSxTQUFTLEVBQUUsb0VBQW9FO0lBQy9FLFdBQVcsRUFDVCxpSEFBaUg7SUFDbkgsVUFBVSxFQUNSLGlIQUFpSDtJQUNuSCxjQUFjLEVBQUUsZ0RBQWdEO0lBQ2hFLGNBQWMsRUFBRSxpREFBaUQ7Q0FDbEUsQ0FBQztBQUVXLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLElBQUksRUFBRSxrQ0FBa0M7SUFDeEMsVUFBVSxFQUFFLGtFQUFrRTtJQUM5RSxTQUFTLEVBQUUsb0VBQW9FO0lBQy9FLFdBQVcsRUFDVCxpSEFBaUg7SUFDbkgsVUFBVSxFQUNSLGlIQUFpSDtJQUNuSCxPQUFPLEVBQUUsaURBQWlEO0NBQzNELENBQUM7QUFFVyxRQUFBLFNBQVMsR0FBRztJQUN2QixJQUFJLEVBQUUsa0NBQWtDO0lBQ3hDLFVBQVUsRUFBRSxrRUFBa0U7SUFDOUUsU0FBUyxFQUFFLG9FQUFvRTtJQUMvRSxXQUFXLEVBQ1QsaUhBQWlIO0lBQ25ILFVBQVUsRUFDUixpSEFBaUg7SUFDbkgsT0FBTyxFQUFFLGlEQUFpRDtDQUMzRCxDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUc7SUFDckIsYUFBYSxFQUFFLG1EQUFtRDtJQUNsRSxhQUFhLEVBQUUsdUNBQXVDO0lBQ3RELGFBQWEsRUFBRSxtREFBbUQ7SUFDbEUsV0FBVyxFQUFFLG1EQUFtRDtJQUNoRSxTQUFTLEVBQUUsUUFBUTtJQUNuQixnQkFBZ0IsRUFBRSxRQUFRO0lBQzFCLGlCQUFpQixFQUFFLFVBQVU7SUFDN0Isb0JBQW9CLEVBQUUsVUFBVTtJQUNoQyxxQkFBcUIsRUFBRSxVQUFVO0lBQ2pDLDZCQUE2QixFQUFFLEVBQUU7SUFDakMsNkJBQTZCLEVBQUUsRUFBRTtJQUNqQyxxQkFBcUIsRUFBRSxRQUFRO0lBQy9CLHFCQUFxQixFQUFFLFFBQVE7SUFDL0IsU0FBUyxFQUFFLEdBQUc7SUFDZCxHQUFHLEVBQUUsUUFBUTtJQUNiLGlCQUFpQixFQUFFO1FBQ2pCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDekMsV0FBVyxFQUFFLFFBQVE7UUFDckIsWUFBWSxFQUFFLE9BQU87UUFDckIsZUFBZSxFQUFFLE1BQU07UUFDdkIsUUFBUSxFQUFFLElBQUk7UUFDZCx3QkFBd0IsRUFBRSxRQUFRO0tBQ25DO0NBQ0YsQ0FBQztBQUVXLFFBQUEseUJBQXlCLEdBQUcsUUFBUSxDQUFDO0FBRXJDLFFBQUEsaUNBQWlDLEdBQUcseUJBQXlCLENBQUM7QUFFOUQsUUFBQSxnQ0FBZ0MsR0FBRyx3QkFBd0IsQ0FBQztBQUU1RCxRQUFBLHdCQUF3QixHQUFHLG9CQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUV2RTs7O0dBR0c7QUFDVSxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRTtRQUNKLFVBQVUsRUFBRSxrRUFBa0U7UUFDOUUsYUFBYSxFQUFFLGlEQUFpRDtRQUNoRSxhQUFhLEVBQUUsaURBQWlEO0tBQ2pFO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsVUFBVSxFQUFFLGtFQUFrRTtRQUM5RSxhQUFhLEVBQUUsaURBQWlEO1FBQ2hFLGFBQWEsRUFBRSxpREFBaUQ7S0FDakU7SUFDRCxNQUFNLEVBQUU7UUFDTixVQUFVLEVBQUUsa0VBQWtFO1FBQzlFLGFBQWEsRUFBRSxpREFBaUQ7UUFDaEUsYUFBYSxFQUFFLGlEQUFpRDtLQUNqRTtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU0VFRF9BQ0NPVU5UID0ge1xuICBzZWVkOiAnNGMzYjg5ZjZjYTg5N2NiNzI5ZDIxNDY5MTM4NzdmNzEnLFxuICBwcml2YXRlS2V5OiAnZDhmMDdkZTU5Nzc4NDM5NDliZjRiODFiMDk3ODExN2M4NWYyNTgyYzU3ZDdkZGE5YTA0NTBmZjNmYmVmMTlmZScsXG4gIHB1YmxpY0tleTogJzAzY2Q5MTk3NjU4ZmI1NjM1OTM1NjBiOTNmOGViYTJhZWIyZTRmMzc4MTI2MjU2OWIzMjc3YjhkYTdmNGY3MjdiMicsXG4gIHhQcml2YXRlS2V5OlxuICAgICd4cHJ2OXMyMVpyUUgxNDNLM3VQVDNhU2pRTmFVWUpRWDRNeUdYbWF2YkRONVdCTUFhZlMzUFE5WFYyRTVpTVhMY05VcHBOUEJoNzdVeW5uak1UTDM1dDVCRDh2dUhxQVlxOEczTU5FYm5FRVIzQlknLFxuICB4UHVibGljS2V5OlxuICAgICd4cHViNjYxTXlNd0FxUmJjR1BUdjlieWptV1hENkxGMVRwaDd0eldYUGJtaDRXdDlUVG1CdndUbjJwWVpaZVFxbkJFSDZjVFlDUUVlWUxMa3ZzN3J3RE45Y0FLcks5MXJiQnM4aXhzNTMyWkRaZ0UnLFxuICBmbHJwUHJpdmF0ZUtleTogJ1ByaXZhdGVLZXktMmVZUmpFTnJRa2pXZGl6dDZQeHhQMURQRjNFMnc2U1lXYWlTQU1XSndEYnFWV3hNTFcnLFxuICBhZGRyZXNzTWFpbm5ldDogJ1AtZmxhcmUxdXlwNW43NmdqcWx0cmRkdXI3cWxyc210M2t5aDhmbnJycXd0YWwnLFxuICBhZGRyZXNzVGVzdG5ldDogJ1AtY29zdHdvMXV5cDVuNzZnanFsdHJkZHVyN3FscnNtdDNreWg4Zm5ybXdocWs3JyxcbiAgbWVzc2FnZTogJ3Rlc3QgbWVzc2FnZScsXG4gIHNpZ25hdHVyZTpcbiAgICAnMTY5MmMwYTI1Yzg0ZDM4OWU2MzY5MmNhM2I3ZWJjODk4MzVjM2IxMWY2ZTY0YTUwNWRkZDcxNjY0ZDJhM2FlOTE0ZTBkMWJlMTNhODI0YWU5NzMzMTgwNTY1MGEwNjMxZGY5YWU5MmJhMTMzZjlhYTgxOTExZjNhNTY4MDdiYTMwMScsXG59O1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8xID0ge1xuICBzZWVkOiAnNGMzYjg5ZjZjYTg5N2NiNzI5ZDIxNDY5MTM4NzdmNzEnLFxuICBwcml2YXRlS2V5OiAnYTUzM2Q4NDE5ZDQ1MThlMTFjZDhkOWYwNDljNzNhOGJkYWYwMDNkNjYwMjMxOWY5NjdjZTNjMjQzZTY0NmJhNScsXG4gIHB1YmxpY0tleTogJzAyYTIyMGU1ZmQxMDg5OTZkMGU2Yzg1ZGI0MzM4NGRjZWY4ODg0YmNhZWUxMjAzZTk4MGY5Zjk5ZjY1YWIzZDNmMycsXG4gIHhQcml2YXRlS2V5OlxuICAgICd4cHJ2OXMyMVpyUUgxNDNLNFNLeGZhZE03VzNZcTFoaHdKZ0dBRlFpbzhzQnFhWEFEVm84eG1RaVVlMmN5Nkd3Q2t3c2ZEWk1TZTRXNkd2NXZIVHNhVUY4eW9ZdXpxOEtGSlBVdTJwOThSQVhLc0onLFxuICB4UHVibGljS2V5OlxuICAgICd4cHViNjYxTXlNd0FxUmJjR3ZRUm1jQU1VZHpIUDNZQ0xtUTdYVUxLYlhHb1B2NDk2SjhIV0ppeTJTTTZwTUhNODlzUW55R2lMRjQ2ZGZ6RkI1WlJUd1JtcGlVcTJoVWtwNVljY3JjV0c1WGtTM0QnLFxuICBhZGRyZXNzTWFpbm5ldDogJ1AtZmxhcmUxZXZ1bTVuMGFnZmZyZGhnMmRtMnZnN3N2ZmdycmE1cnV4bm1md2snLFxuICBhZGRyZXNzVGVzdG5ldDogJ1AtY29zdHdvMWV2dW01bjBhZ2ZmcmRoZzJkbTJ2ZzdzdmZncnJhNXJ1N2F6ejloJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBQ0NPVU5UXzIgPSB7XG4gIHNlZWQ6ICc0YzNiODlmNmNhODk3Y2I3MjlkMjE0NjkxMzg3N2Y3MScsXG4gIHByaXZhdGVLZXk6ICc4MzZkMjQzOTZmZjZlOTUyZTYzMmIzNTUyZmM2NTkxNTY2ZThiZTdjOTMxYTZjNjRmYTdmNjg1YmU5NjQ3ODQxJyxcbiAgcHVibGljS2V5OiAnMDNjZDQ2NjBhYzE1NzA0NzNlNzEwN2VkMWYzMTQyNWQ4MWE2MjQ5OTJiYmM1OTgzZmQ2MTc4N2M1NjBkOGZkNDIwJyxcbiAgeFByaXZhdGVLZXk6XG4gICAgJ3hwcnY5czIxWnJRSDE0M0syS2pEOHl0U2ZMV0RmZTI1ODVwQkpOZGFkTGd3c0VLb0dMYkdkSENLU0s1eURuZmNtVG9hemQzb1BMRFhwcnRYbkN2c245VDZNREp6MXF3TVBhcTIyb1RyenF2eWVEUScsXG4gIHhQdWJsaWNLZXk6XG4gICAgJ3hwcnY5czIxWnJRSDE0M0syS2pEOHl0U2ZMV0RmZTI1ODVwQkpOZGFkTGd3c0VLb0dMYkdkSENLU0s1eURuZmNtVG9hemQzb1BMRFhwcnRYbkN2c245VDZNREp6MXF3TVBhcTIyb1RyenF2eWVEUScsXG4gIGFkZHJlc3NNYWlubmV0OiAnUC1mbGFyZTF4dm5ncnJtcXpsZGo1MGtwdnF4N21oa3gzaHR2aDV4ODdua2w5aicsXG4gIGFkZHJlc3NUZXN0bmV0OiAnUC1jb3N0d28xeHZuZ3JybXF6bGRqNTBrcHZxeDdtaGt4M2h0dmg1eDhtaGdzcXknLFxufTtcblxuZXhwb3J0IGNvbnN0IEFDQ09VTlRfMyA9IHtcbiAgc2VlZDogJzRjM2I4OWY2Y2E4OTdjYjcyOWQyMTQ2OTEzODc3ZjcxJyxcbiAgcHJpdmF0ZUtleTogJzA5MDY4NDA5MjZmY2QwMzhmNDI5MjE3MDk2NTVlOGI4YjA2NjEzMjcyYTNhYzkwNDA1MTBiN2Q0YjI2ZjA5YjYnLFxuICBwdWJsaWNLZXk6ICcwMjlhYTRkOWYxOGQyOTk0ZjJkODMzYzNiOWRkMTdhNWFkOWIxYzNlNzQ0ZjBmZTBiNGNiMTU5NWY4ZjY3ZmQxMmMnLFxuICB4UHJpdmF0ZUtleTpcbiAgICAneHBydjlzMjFaclFIMTQzSzRUdG85aDFEVzNnbU1GcHhHalN5VVMzVjFyQ1VqVkVERG04eHpzMzhHQ3JzQ3J5akVickVvdkhoZzEyZDU1bUJ4NGpISzFIMTlSeXVoekp1NEdRRDlIQnFMWkNwQTZiJyxcbiAgeFB1YmxpY0tleTpcbiAgICAneHB1YjY2MU15TXdBcVJiY0d3eUdGaVlEc0JkVnVIZlNnQ0FwcWV5NXBFYzZIcG1DNlpVN1lRTU5wMUJNNDk3ZEpqQm5RWm1ORlBWUUZSVkxuRzN5SnZ6eUE4ekdqc2VpZm1UcTNIa1F5cTF6SHFxJyxcbiAgYWRkcmVzczogJ1AtY29zdHdvMXhxcjhwczhzNnF2NWprZTl3bHRjOGRjOXdtNXE3Y2syZnJ0NWhkJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBQ0NPVU5UXzQgPSB7XG4gIHNlZWQ6ICc0YzNiODlmNmNhODk3Y2I3MjlkMjE0NjkxMzg3N2Y3MScsXG4gIHByaXZhdGVLZXk6ICc2ZDE5ZWYxMjYyMmFkMmUzNjg4MDY0ODNmOTE0NDViYTgzMmEwY2FkZDczZDg1ODViZmQ5ZGU1OTAzN2U3OWI0JyxcbiAgcHVibGljS2V5OiAnMDI2YmI1MDM3ZGNlNTcxNGRjOTQyN2U0NWVhYmViZDY4OWZjNjcxYjljN2JhN2IwZmZjNzRjOTQ0Nzg5ZWNlOWQxJyxcbiAgeFByaXZhdGVLZXk6XG4gICAgJ3hwcnY5czIxWnJRSDE0M0syck5NSkFvbVNrTDdpN3JTdWRuRWtybTRZV1M0bkFBUEpBUUtHcWl0bWV6cXA1RTM4dVZlTFdrekxON1ZYbmtLeTN1cW5jM0REWHFvalEyclhHTFlCd3RWUlZjUmU3ZCcsXG4gIHhQdWJsaWNLZXk6XG4gICAgJ3hwdWI2NjFNeU13QXFSYmNGTFNwUUNMbW90R3JHOWd3SzZXNjg1Z2ZMdHFnTFZoTkF4alRwUDM5S1RLS2ZMRkJ4eHB0ZmU0azhLYnl6V0NQQ0ZibTl4dVNVWFFOUlFUTlFvZWJZaXVwVjhmU1BISicsXG4gIGFkZHJlc3M6ICdQLWNvc3R3bzFqdmpkdmc2amRxZXoyNGM1a2p4Z3N1NDdtcXd2cHllcmsyMnlsOCcsXG59O1xuXG5leHBvcnQgY29uc3QgQ09OVEVYVCA9IHtcbiAgeEJsb2NrY2hhaW5JRDogJ0ZKdVN3WnVQODVleUJwdUJyS0VDbnBQZWRHeVhvRHkyaFA5cTRKRDhxQlRaR3hZYkonLFxuICBwQmxvY2tjaGFpbklEOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFMcG9ZWScsXG4gIGNCbG9ja2NoYWluSUQ6ICd2RThNOThtRVFINndrNTZzU3REMU1MOEhBcFRnU3FmSlpMazlnUTNGc2Q0aTZtM0JpJyxcbiAgYXZheEFzc2V0SUQ6ICdmeE1BS3BCUVFwRmVkclVoV01zRFlmQ1VKeGRVdzRtbmVUY3pLQnpOZzNyYzJKVXViJyxcbiAgYmFzZVR4RmVlOiAxMDAwMDAwbixcbiAgY3JlYXRlQXNzZXRUeEZlZTogMTAwMDAwMG4sXG4gIGNyZWF0ZVN1Ym5ldFR4RmVlOiAxMDAwMDAwMDBuLFxuICB0cmFuc2Zvcm1TdWJuZXRUeEZlZTogMTAwMDAwMDAwbixcbiAgY3JlYXRlQmxvY2tjaGFpblR4RmVlOiAxMDAwMDAwMDBuLFxuICBhZGRQcmltYXJ5TmV0d29ya1ZhbGlkYXRvckZlZTogMG4sXG4gIGFkZFByaW1hcnlOZXR3b3JrRGVsZWdhdG9yRmVlOiAwbixcbiAgYWRkU3VibmV0VmFsaWRhdG9yRmVlOiAxMDAwMDAwbixcbiAgYWRkU3VibmV0RGVsZWdhdG9yRmVlOiAxMDAwMDAwbixcbiAgbmV0d29ya0lEOiAxMTQsXG4gIGhycDogJ2Nvc3R3bycsXG4gIHBsYXRmb3JtRmVlQ29uZmlnOiB7XG4gICAgd2VpZ2h0czogeyAwOiAxLCAxOiAxMDAwLCAyOiAxMDAwLCAzOiA0IH0sXG4gICAgbWF4Q2FwYWNpdHk6IDEwMDAwMDBuLFxuICAgIG1heFBlclNlY29uZDogMTAwMDAwbixcbiAgICB0YXJnZXRQZXJTZWNvbmQ6IDUwMDAwbixcbiAgICBtaW5QcmljZTogMjUwbixcbiAgICBleGNlc3NDb252ZXJzaW9uQ29uc3RhbnQ6IDIxNjQwNDNuLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IElOVkFMSURfU0hPUlRfS0VZUEFJUl9LRVkgPSAnODJBMzRFJztcblxuZXhwb3J0IGNvbnN0IElOVkFMSURfUFJJVkFURV9LRVlfRVJST1JfTUVTU0FHRSA9ICdVbnN1cHBvcnRlZCBwcml2YXRlIGtleSc7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX1BVQkxJQ19LRVlfRVJST1JfTUVTU0FHRSA9ICdVbnN1cHBvcnRlZCBwdWJsaWMga2V5JztcblxuZXhwb3J0IGNvbnN0IElOVkFMSURfTE9OR19LRVlQQUlSX1BSViA9IFNFRURfQUNDT1VOVC5wcml2YXRlS2V5ICsgJ0YxJztcblxuLyoqXG4gKiBPbi1jaGFpbiB2ZXJpZmllZCB0ZXN0IHdhbGxldCBrZXlzXG4gKiBVc2VkIGZvciB0ZXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgYmVlbiB2YWxpZGF0ZWQgb24gRmxhcmUgQ29zdG9uMiB0ZXN0bmV0XG4gKi9cbmV4cG9ydCBjb25zdCBPTl9DSEFJTl9URVNUX1dBTExFVCA9IHtcbiAgdXNlcjoge1xuICAgIHByaXZhdGVLZXk6ICdjOWUxNjM4Yjg2NjkzMDE1M2QwNmQzMDIzNGFiODBiMzRjZDhhZjUyNzE1Yzg4MWNiNWEzYjYwYTdhYWQzZmVmJyxcbiAgICBwQ2hhaW5BZGRyZXNzOiAnUC1jb3N0d28xY2dwbmQydjBhMHF4ZXZuY240bTdzdDJseWNodXluN2N6cGQ1azknLFxuICAgIGNvcmV0aEFkZHJlc3M6ICdDLWNvc3R3bzFjZ3BuZDJ2MGEwcXhldm5jbjRtN3N0Mmx5Y2h1eW43Y3pwZDVrOScsXG4gIH0sXG4gIGJpdGdvOiB7XG4gICAgcHJpdmF0ZUtleTogJzg1NDMwOWM0OWM4MDY0YTgwNmIxZDk1OTY0YjM1ZDIzYTNiMDFiNGY4ZGQxNjg4NDM0OGYzNzY2OWFmNmEwZWQnLFxuICAgIHBDaGFpbkFkZHJlc3M6ICdQLWNvc3R3bzF4ejJkaDhnNjlsN2FsbW5rczg2bDQ3bTdkYW5kOXB6Zm5mcHh3cCcsXG4gICAgY29yZXRoQWRkcmVzczogJ0MtY29zdHdvMXh6MmRoOGc2OWw3YWxtbmtzODZsNDdtN2RhbmQ5cHpmbmZweHdwJyxcbiAgfSxcbiAgYmFja3VwOiB7XG4gICAgcHJpdmF0ZUtleTogJzAwYmQ1YTBiZmRiNWU0YjUzNmM0Y2NkZjE4MTAxNGJmYjhiMDIyZDQ5ZTU2M2Y0OGZjNzk5YjlkMmYyMGRlZjAnLFxuICAgIHBDaGFpbkFkZHJlc3M6ICdQLWNvc3R3bzEwN3E4Y2g0anNhNTh4ZGpsaGw3Z2dhenU2dmdxZ2VraHVzenI3YScsXG4gICAgY29yZXRoQWRkcmVzczogJ0MtY29zdHdvMTA3cThjaDRqc2E1OHhkamxobDdnZ2F6dTZ2Z3FnZWtodXN6cjdhJyxcbiAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export declare const DELEGATION_TX_1: {
|
|
2
|
+
txhash: string;
|
|
3
|
+
signedHex: string;
|
|
4
|
+
nodeID: string;
|
|
5
|
+
stakeAmount: string;
|
|
6
|
+
startTime: number;
|
|
7
|
+
endTime: number;
|
|
8
|
+
pAddresses: string[];
|
|
9
|
+
threshold: number;
|
|
10
|
+
locktime: number;
|
|
11
|
+
context: {
|
|
12
|
+
xBlockchainID: string;
|
|
13
|
+
pBlockchainID: string;
|
|
14
|
+
cBlockchainID: string;
|
|
15
|
+
avaxAssetID: string;
|
|
16
|
+
baseTxFee: bigint;
|
|
17
|
+
createAssetTxFee: bigint;
|
|
18
|
+
createSubnetTxFee: bigint;
|
|
19
|
+
transformSubnetTxFee: bigint;
|
|
20
|
+
createBlockchainTxFee: bigint;
|
|
21
|
+
addPrimaryNetworkValidatorFee: bigint;
|
|
22
|
+
addPrimaryNetworkDelegatorFee: bigint;
|
|
23
|
+
addSubnetValidatorFee: bigint;
|
|
24
|
+
addSubnetDelegatorFee: bigint;
|
|
25
|
+
networkID: number;
|
|
26
|
+
hrp: string;
|
|
27
|
+
platformFeeConfig: {
|
|
28
|
+
weights: {
|
|
29
|
+
0: number;
|
|
30
|
+
1: number;
|
|
31
|
+
2: number;
|
|
32
|
+
3: number;
|
|
33
|
+
};
|
|
34
|
+
maxCapacity: bigint;
|
|
35
|
+
maxPerSecond: bigint;
|
|
36
|
+
targetPerSecond: bigint;
|
|
37
|
+
minPrice: bigint;
|
|
38
|
+
excessConversionConstant: bigint;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export declare const DELEGATION_TX_2: {
|
|
43
|
+
txhash: string;
|
|
44
|
+
signedHex: string;
|
|
45
|
+
nodeID: string;
|
|
46
|
+
stakeAmount: string;
|
|
47
|
+
startTime: number;
|
|
48
|
+
endTime: number;
|
|
49
|
+
pAddresses: string[];
|
|
50
|
+
threshold: number;
|
|
51
|
+
locktime: number;
|
|
52
|
+
context: {
|
|
53
|
+
xBlockchainID: string;
|
|
54
|
+
pBlockchainID: string;
|
|
55
|
+
cBlockchainID: string;
|
|
56
|
+
avaxAssetID: string;
|
|
57
|
+
baseTxFee: bigint;
|
|
58
|
+
createAssetTxFee: bigint;
|
|
59
|
+
createSubnetTxFee: bigint;
|
|
60
|
+
transformSubnetTxFee: bigint;
|
|
61
|
+
createBlockchainTxFee: bigint;
|
|
62
|
+
addPrimaryNetworkValidatorFee: bigint;
|
|
63
|
+
addPrimaryNetworkDelegatorFee: bigint;
|
|
64
|
+
addSubnetValidatorFee: bigint;
|
|
65
|
+
addSubnetDelegatorFee: bigint;
|
|
66
|
+
networkID: number;
|
|
67
|
+
hrp: string;
|
|
68
|
+
platformFeeConfig: {
|
|
69
|
+
weights: {
|
|
70
|
+
0: number;
|
|
71
|
+
1: number;
|
|
72
|
+
2: number;
|
|
73
|
+
3: number;
|
|
74
|
+
};
|
|
75
|
+
maxCapacity: bigint;
|
|
76
|
+
maxPerSecond: bigint;
|
|
77
|
+
targetPerSecond: bigint;
|
|
78
|
+
minPrice: bigint;
|
|
79
|
+
excessConversionConstant: bigint;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=delegatorTx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegatorTx.d.ts","sourceRoot":"","sources":["../../../../test/resources/transactionData/delegatorTx.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELEGATION_TX_2 = exports.DELEGATION_TX_1 = void 0;
|
|
4
|
+
exports.DELEGATION_TX_1 = {
|
|
5
|
+
txhash: '22Uff2JJeULyrtrqpcwbXHi5Kk3RyDf4yWBeKE6iEJNN9mSft',
|
|
6
|
+
signedHex: '0x00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700000000515b482e000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000d01f7dd0e5da53081c6099d8f0afa210155ad458a901526f72674f4d3526fee8e0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000019b7e281d137b2e514433fede0a9ff8c86e5a4b6c44ca4dd118ec6c68dfc3c2e0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000083faa4bd5f31b3f8341222a058a07b65fc00a8a40729d2cdec6bac4c551a45e80000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002eb2a6a000000010000000092c456b05e78c3e3c68a237b4496062e57f342552ad24b6806828f2a0e45d06b0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b03ea0000000100000000b67a44c2ce746c9169a91945d6ba9810d91f492949e96724996d5a6e1e7c90830000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b87c00000000100000000c2458a918382b12cec5f2fb3831a21af064348fbd111c72436e187e2f061a3510000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000017485863800000000100000000c63bca17b55213b6daaddb79e5a4ca70e1e339a091d919a13e509626bed1fcd20000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000001b5b8aba9ea0000000100000000cc2be401e345098f2ff0bed49defa523fe3a3b2885ff8b923b7aaff79d5242dc0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000000026351120000000100000000d018ee6fdd5b7b62a76221835906971f691e8a6827e76895ada9749d282c7d3a0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b87c00000000100000000d9da0a8661e56097be7e039458fd78d1acf7c8f483311320cf4a961eae2df5cc0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002ba7dee339ea0000000100000000f7df027fbffbf24b9340580f5c157a908a7e54622714355385e416d9b313d9600000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000253ed5f800000000100000000f938b9085f48102bbe5a037eab4391939b2dae590bb13c981fe863a93179be8d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002eb2a6a0000000100000000fe1dff2fd7db1696e05afe3f96123d9d70fbb5ca80104b2a9e322beb74bacd520000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000001e5b7df40000000010000000000000000664b4924a25af8be5f07052b2c2e582f7c10a654000000006926d93d0000000069394e3d00002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d2000000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000b000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000d00000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd01c161eee9',
|
|
7
|
+
nodeID: 'NodeID-AKt7WaK6ozEy5K8azKNacZXLzxZ9xFgC7',
|
|
8
|
+
stakeAmount: '50000000000000', // 50,000 FLR in nanoFLR
|
|
9
|
+
startTime: 1764280637,
|
|
10
|
+
endTime: 1765490237, // ~14 days later
|
|
11
|
+
pAddresses: ['P-costwo1p3jmmcpu9uxhz2wm3z6673hnnp8xavr0vy6vqn'],
|
|
12
|
+
threshold: 1,
|
|
13
|
+
locktime: 0,
|
|
14
|
+
context: {
|
|
15
|
+
xBlockchainID: 'FJuSwZuP85eyBpuBrKECnpPedGyXoDy2hP9q4JD8qBTZGxYbJ',
|
|
16
|
+
pBlockchainID: '11111111111111111111111111111111LpoYY',
|
|
17
|
+
cBlockchainID: 'vE8M98mEQH6wk56sStD1ML8HApTgSqfJZLk9gQ3Fsd4i6m3Bi',
|
|
18
|
+
avaxAssetID: 'fxMAKpBQQpFedrUhWMsDYfCUJxdUw4mneTczKBzNg3rc2JUub',
|
|
19
|
+
baseTxFee: 1000000n,
|
|
20
|
+
createAssetTxFee: 1000000n,
|
|
21
|
+
createSubnetTxFee: 100000000n,
|
|
22
|
+
transformSubnetTxFee: 100000000n,
|
|
23
|
+
createBlockchainTxFee: 100000000n,
|
|
24
|
+
addPrimaryNetworkValidatorFee: 0n,
|
|
25
|
+
addPrimaryNetworkDelegatorFee: 0n,
|
|
26
|
+
addSubnetValidatorFee: 1000000n,
|
|
27
|
+
addSubnetDelegatorFee: 1000000n,
|
|
28
|
+
networkID: 114,
|
|
29
|
+
hrp: 'costwo',
|
|
30
|
+
platformFeeConfig: {
|
|
31
|
+
weights: { 0: 1, 1: 1000, 2: 1000, 3: 4 },
|
|
32
|
+
maxCapacity: 1000000n,
|
|
33
|
+
maxPerSecond: 100000n,
|
|
34
|
+
targetPerSecond: 50000n,
|
|
35
|
+
minPrice: 250n,
|
|
36
|
+
excessConversionConstant: 2164043n,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// Second delegation transaction - simpler with 3 inputs (used for round-trip testing)
|
|
41
|
+
exports.DELEGATION_TX_2 = {
|
|
42
|
+
txhash: '2YvHZngWoddX8vS8ZR5izJJmdhRnkhqQHqpJSEiW66Mtf3CB28',
|
|
43
|
+
signedHex: '0x00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002635112000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f00000003048351567748c8fbc3ce9f638b16b1fc324ea52620d020f0881ec49968a7f1420000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002d7984ff54440000000100000000a27213128a72837d0711284e38980649d5d98d98c1d50385db69fabc181cd99d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae400000000100000000e918bf6dceb24368264cb6b9c5d67e9f94dd06021b484836363378467fcc89900000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000000000000664b4924a25af8be5f07052b2c2e582f7c10a654000000006926ca570000000069393f5700002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d2000000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000b000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f00000003000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b01000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b01000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b019d5242dc',
|
|
44
|
+
nodeID: 'NodeID-AKt7WaK6ozEy5K8azKNacZXLzxZ9xFgC7',
|
|
45
|
+
stakeAmount: '50000000000000', // 50,000 FLR in nanoFLR
|
|
46
|
+
startTime: 1764276823,
|
|
47
|
+
endTime: 1765486423, // ~14 days later
|
|
48
|
+
pAddresses: ['P-costwo1p3jmmcpu9uxhz2wm3z6673hnnp8xavr0vy6vqn'],
|
|
49
|
+
threshold: 1,
|
|
50
|
+
locktime: 0,
|
|
51
|
+
context: {
|
|
52
|
+
xBlockchainID: 'FJuSwZuP85eyBpuBrKECnpPedGyXoDy2hP9q4JD8qBTZGxYbJ',
|
|
53
|
+
pBlockchainID: '11111111111111111111111111111111LpoYY',
|
|
54
|
+
cBlockchainID: 'vE8M98mEQH6wk56sStD1ML8HApTgSqfJZLk9gQ3Fsd4i6m3Bi',
|
|
55
|
+
avaxAssetID: 'fxMAKpBQQpFedrUhWMsDYfCUJxdUw4mneTczKBzNg3rc2JUub',
|
|
56
|
+
baseTxFee: 1000000n,
|
|
57
|
+
createAssetTxFee: 1000000n,
|
|
58
|
+
createSubnetTxFee: 100000000n,
|
|
59
|
+
transformSubnetTxFee: 100000000n,
|
|
60
|
+
createBlockchainTxFee: 100000000n,
|
|
61
|
+
addPrimaryNetworkValidatorFee: 0n,
|
|
62
|
+
addPrimaryNetworkDelegatorFee: 0n,
|
|
63
|
+
addSubnetValidatorFee: 1000000n,
|
|
64
|
+
addSubnetDelegatorFee: 1000000n,
|
|
65
|
+
networkID: 114,
|
|
66
|
+
hrp: 'costwo',
|
|
67
|
+
platformFeeConfig: {
|
|
68
|
+
weights: { 0: 1, 1: 1000, 2: 1000, 3: 4 },
|
|
69
|
+
maxCapacity: 1000000n,
|
|
70
|
+
maxPerSecond: 100000n,
|
|
71
|
+
targetPerSecond: 50000n,
|
|
72
|
+
minPrice: 250n,
|
|
73
|
+
excessConversionConstant: 2164043n,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvZGVsZWdhdG9yVHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLG1EQUFtRDtJQUMzRCxTQUFTLEVBQ1AsMHdKQUEwd0o7SUFDNXdKLE1BQU0sRUFBRSwwQ0FBMEM7SUFDbEQsV0FBVyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QjtJQUN2RCxTQUFTLEVBQUUsVUFBVTtJQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQjtJQUN0QyxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztJQUMvRCxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxDQUFDO0lBQ1gsT0FBTyxFQUFFO1FBQ1AsYUFBYSxFQUFFLG1EQUFtRDtRQUNsRSxhQUFhLEVBQUUsdUNBQXVDO1FBQ3RELGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsV0FBVyxFQUFFLG1EQUFtRDtRQUNoRSxTQUFTLEVBQUUsUUFBUTtRQUNuQixnQkFBZ0IsRUFBRSxRQUFRO1FBQzFCLGlCQUFpQixFQUFFLFVBQVU7UUFDN0Isb0JBQW9CLEVBQUUsVUFBVTtRQUNoQyxxQkFBcUIsRUFBRSxVQUFVO1FBQ2pDLDZCQUE2QixFQUFFLEVBQUU7UUFDakMsNkJBQTZCLEVBQUUsRUFBRTtRQUNqQyxxQkFBcUIsRUFBRSxRQUFRO1FBQy9CLHFCQUFxQixFQUFFLFFBQVE7UUFDL0IsU0FBUyxFQUFFLEdBQUc7UUFDZCxHQUFHLEVBQUUsUUFBUTtRQUNiLGlCQUFpQixFQUFFO1lBQ2pCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekMsV0FBVyxFQUFFLFFBQVE7WUFDckIsWUFBWSxFQUFFLE9BQU87WUFDckIsZUFBZSxFQUFFLE1BQU07WUFDdkIsUUFBUSxFQUFFLElBQUk7WUFDZCx3QkFBd0IsRUFBRSxRQUFRO1NBQ25DO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsc0ZBQXNGO0FBQ3pFLFFBQUEsZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxvREFBb0Q7SUFDNUQsU0FBUyxFQUNQLHNuREFBc25EO0lBQ3huRCxNQUFNLEVBQUUsMENBQTBDO0lBQ2xELFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0I7SUFDdkQsU0FBUyxFQUFFLFVBQVU7SUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUI7SUFDdEMsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7SUFDL0QsU0FBUyxFQUFFLENBQUM7SUFDWixRQUFRLEVBQUUsQ0FBQztJQUNYLE9BQU8sRUFBRTtRQUNQLGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxhQUFhLEVBQUUsbURBQW1EO1FBQ2xFLFdBQVcsRUFBRSxtREFBbUQ7UUFDaEUsU0FBUyxFQUFFLFFBQVE7UUFDbkIsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixpQkFBaUIsRUFBRSxVQUFVO1FBQzdCLG9CQUFvQixFQUFFLFVBQVU7UUFDaEMscUJBQXFCLEVBQUUsVUFBVTtRQUNqQyw2QkFBNkIsRUFBRSxFQUFFO1FBQ2pDLDZCQUE2QixFQUFFLEVBQUU7UUFDakMscUJBQXFCLEVBQUUsUUFBUTtRQUMvQixxQkFBcUIsRUFBRSxRQUFRO1FBQy9CLFNBQVMsRUFBRSxHQUFHO1FBQ2QsR0FBRyxFQUFFLFFBQVE7UUFDYixpQkFBaUIsRUFBRTtZQUNqQixPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2Qsd0JBQXdCLEVBQUUsUUFBUTtTQUNuQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1RYXzEgPSB7XG4gIHR4aGFzaDogJzIyVWZmMkpKZVVMeXJ0cnFwY3diWEhpNUtrM1J5RGY0eVdCZUtFNmlFSk5OOW1TZnQnLFxuICBzaWduZWRIZXg6XG4gICAgJzB4MDAwMDAwMDAwMDFhMDAwMDAwNzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMDAwMDUxNWI0ODJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMGQwMWY3ZGQwZTVkYTUzMDgxYzYwOTlkOGYwYWZhMjEwMTU1YWQ0NThhOTAxNTI2ZjcyNjc0ZjRkMzUyNmZlZThlMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMDAyZWJhZTQwMDAwMDAwMDEwMDAwMDAwMDE5YjdlMjgxZDEzN2IyZTUxNDQzM2ZlZGUwYTlmZjhjODZlNWE0YjZjNDRjYTRkZDExOGVjNmM2OGRmYzNjMmUwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDJlYmFlNDAwMDAwMDAwMTAwMDAwMDAwODNmYWE0YmQ1ZjMxYjNmODM0MTIyMmEwNThhMDdiNjVmYzAwYThhNDA3MjlkMmNkZWM2YmFjNGM1NTFhNDVlODAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViMmE2YTAwMDAwMDAxMDAwMDAwMDA5MmM0NTZiMDVlNzhjM2UzYzY4YTIzN2I0NDk2MDYyZTU3ZjM0MjU1MmFkMjRiNjgwNjgyOGYyYTBlNDVkMDZiMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMDNiOGIwM2VhMDAwMDAwMDEwMDAwMDAwMGI2N2E0NGMyY2U3NDZjOTE2OWE5MTk0NWQ2YmE5ODEwZDkxZjQ5Mjk0OWU5NjcyNDk5NmQ1YTZlMWU3YzkwODMwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwM2I4Yjg3YzAwMDAwMDAwMTAwMDAwMDAwYzI0NThhOTE4MzgyYjEyY2VjNWYyZmIzODMxYTIxYWYwNjQzNDhmYmQxMTFjNzI0MzZlMTg3ZTJmMDYxYTM1MTAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMTc0ODU4NjM4MDAwMDAwMDAxMDAwMDAwMDBjNjNiY2ExN2I1NTIxM2I2ZGFhZGRiNzllNWE0Y2E3MGUxZTMzOWEwOTFkOTE5YTEzZTUwOTYyNmJlZDFmY2QyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDFiNWI4YWJhOWVhMDAwMDAwMDEwMDAwMDAwMGNjMmJlNDAxZTM0NTA5OGYyZmYwYmVkNDlkZWZhNTIzZmUzYTNiMjg4NWZmOGI5MjNiN2FhZmY3OWQ1MjQyZGMwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDI2MzUxMTIwMDAwMDAwMTAwMDAwMDAwZDAxOGVlNmZkZDViN2I2MmE3NjIyMTgzNTkwNjk3MWY2OTFlOGE2ODI3ZTc2ODk1YWRhOTc0OWQyODJjN2QzYTAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAzYjhiODdjMDAwMDAwMDAxMDAwMDAwMDBkOWRhMGE4NjYxZTU2MDk3YmU3ZTAzOTQ1OGZkNzhkMWFjZjdjOGY0ODMzMTEzMjBjZjRhOTYxZWFlMmRmNWNjMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmJhN2RlZTMzOWVhMDAwMDAwMDEwMDAwMDAwMGY3ZGYwMjdmYmZmYmYyNGI5MzQwNTgwZjVjMTU3YTkwOGE3ZTU0NjIyNzE0MzU1Mzg1ZTQxNmQ5YjMxM2Q5NjAwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAyNTNlZDVmODAwMDAwMDAwMTAwMDAwMDAwZjkzOGI5MDg1ZjQ4MTAyYmJlNWEwMzdlYWI0MzkxOTM5YjJkYWU1OTBiYjEzYzk4MWZlODYzYTkzMTc5YmU4ZDAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViMmE2YTAwMDAwMDAxMDAwMDAwMDBmZTFkZmYyZmQ3ZGIxNjk2ZTA1YWZlM2Y5NjEyM2Q5ZDcwZmJiNWNhODAxMDRiMmE5ZTMyMmJlYjc0YmFjZDUyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMWU1YjdkZjQwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwNjY0YjQ5MjRhMjVhZjhiZTVmMDcwNTJiMmMyZTU4MmY3YzEwYTY1NDAwMDAwMDAwNjkyNmQ5M2QwMDAwMDAwMDY5Mzk0ZTNkMDAwMDJkNzk4ODNkMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNzAwMDAyZDc5ODgzZDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTBjNjViZGUwM2MyZjBkNzEyOWRiODhiNWFmNDZmMzk4NGU2ZWIwNmYwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMGM2NWJkZTAzYzJmMGQ3MTI5ZGI4OGI1YWY0NmYzOTg0ZTZlYjA2ZjAwMDAwMDBkMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDFjMTYxZWVlOScsXG4gIG5vZGVJRDogJ05vZGVJRC1BS3Q3V2FLNm96RXk1SzhhektOYWNaWEx6eFo5eEZnQzcnLFxuICBzdGFrZUFtb3VudDogJzUwMDAwMDAwMDAwMDAwJywgLy8gNTAsMDAwIEZMUiBpbiBuYW5vRkxSXG4gIHN0YXJ0VGltZTogMTc2NDI4MDYzNyxcbiAgZW5kVGltZTogMTc2NTQ5MDIzNywgLy8gfjE0IGRheXMgbGF0ZXJcbiAgcEFkZHJlc3NlczogWydQLWNvc3R3bzFwM2ptbWNwdTl1eGh6MndtM3o2NjczaG5ucDh4YXZyMHZ5NnZxbiddLFxuICB0aHJlc2hvbGQ6IDEsXG4gIGxvY2t0aW1lOiAwLFxuICBjb250ZXh0OiB7XG4gICAgeEJsb2NrY2hhaW5JRDogJ0ZKdVN3WnVQODVleUJwdUJyS0VDbnBQZWRHeVhvRHkyaFA5cTRKRDhxQlRaR3hZYkonLFxuICAgIHBCbG9ja2NoYWluSUQ6ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZJyxcbiAgICBjQmxvY2tjaGFpbklEOiAndkU4TTk4bUVRSDZ3azU2c1N0RDFNTDhIQXBUZ1NxZkpaTGs5Z1EzRnNkNGk2bTNCaScsXG4gICAgYXZheEFzc2V0SUQ6ICdmeE1BS3BCUVFwRmVkclVoV01zRFlmQ1VKeGRVdzRtbmVUY3pLQnpOZzNyYzJKVXViJyxcbiAgICBiYXNlVHhGZWU6IDEwMDAwMDBuLFxuICAgIGNyZWF0ZUFzc2V0VHhGZWU6IDEwMDAwMDBuLFxuICAgIGNyZWF0ZVN1Ym5ldFR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIHRyYW5zZm9ybVN1Ym5ldFR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIGNyZWF0ZUJsb2NrY2hhaW5UeEZlZTogMTAwMDAwMDAwbixcbiAgICBhZGRQcmltYXJ5TmV0d29ya1ZhbGlkYXRvckZlZTogMG4sXG4gICAgYWRkUHJpbWFyeU5ldHdvcmtEZWxlZ2F0b3JGZWU6IDBuLFxuICAgIGFkZFN1Ym5ldFZhbGlkYXRvckZlZTogMTAwMDAwMG4sXG4gICAgYWRkU3VibmV0RGVsZWdhdG9yRmVlOiAxMDAwMDAwbixcbiAgICBuZXR3b3JrSUQ6IDExNCxcbiAgICBocnA6ICdjb3N0d28nLFxuICAgIHBsYXRmb3JtRmVlQ29uZmlnOiB7XG4gICAgICB3ZWlnaHRzOiB7IDA6IDEsIDE6IDEwMDAsIDI6IDEwMDAsIDM6IDQgfSxcbiAgICAgIG1heENhcGFjaXR5OiAxMDAwMDAwbixcbiAgICAgIG1heFBlclNlY29uZDogMTAwMDAwbixcbiAgICAgIHRhcmdldFBlclNlY29uZDogNTAwMDBuLFxuICAgICAgbWluUHJpY2U6IDI1MG4sXG4gICAgICBleGNlc3NDb252ZXJzaW9uQ29uc3RhbnQ6IDIxNjQwNDNuLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vLyBTZWNvbmQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiAtIHNpbXBsZXIgd2l0aCAzIGlucHV0cyAodXNlZCBmb3Igcm91bmQtdHJpcCB0ZXN0aW5nKVxuZXhwb3J0IGNvbnN0IERFTEVHQVRJT05fVFhfMiA9IHtcbiAgdHhoYXNoOiAnMll2SFpuZ1dvZGRYOHZTOFpSNWl6SkptZGhSbmtocVFIcXBKU0VpVzY2TXRmM0NCMjgnLFxuICBzaWduZWRIZXg6XG4gICAgJzB4MDAwMDAwMDAwMDFhMDAwMDAwNzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMDAwMDAyNjM1MTEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMDMwNDgzNTE1Njc3NDhjOGZiYzNjZTlmNjM4YjE2YjFmYzMyNGVhNTI2MjBkMDIwZjA4ODFlYzQ5OTY4YTdmMTQyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmQ3OTg0ZmY1NDQ0MDAwMDAwMDEwMDAwMDAwMGEyNzIxMzEyOGE3MjgzN2QwNzExMjg0ZTM4OTgwNjQ5ZDVkOThkOThjMWQ1MDM4NWRiNjlmYWJjMTgxY2Q5OWQwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDJlYmFlNDAwMDAwMDAwMTAwMDAwMDAwZTkxOGJmNmRjZWIyNDM2ODI2NGNiNmI5YzVkNjdlOWY5NGRkMDYwMjFiNDg0ODM2MzYzMzc4NDY3ZmNjODk5MDAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViYWU0MDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDY2NGI0OTI0YTI1YWY4YmU1ZjA3MDUyYjJjMmU1ODJmN2MxMGE2NTQwMDAwMDAwMDY5MjZjYTU3MDAwMDAwMDA2OTM5M2Y1NzAwMDAyZDc5ODgzZDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMmQ3OTg4M2QyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTBjNjViZGUwM2MyZjBkNzEyOWRiODhiNWFmNDZmMzk4NGU2ZWIwNmYwMDAwMDAwMzAwMDAwMDA5MDAwMDAwMDE0NWJhNDU1ZjI3NjZlNmI5YzhhYTkxM2FjZWFiMmM1MTJkYjI5ZWZhODU1YjIzMDNhMGRiYTcyY2I5MGFjMTJlNWQ5YTk0MjQxOWQ2ODU0ZjA1NDlkNDMyNDhhNGVmMjIzMzE2NjVmNzhlZTQ2YjhhNTY1NWViNjFjOTQxNjQxYjAxMDAwMDAwMDkwMDAwMDAwMTQ1YmE0NTVmMjc2NmU2YjljOGFhOTEzYWNlYWIyYzUxMmRiMjllZmE4NTViMjMwM2EwZGJhNzJjYjkwYWMxMmU1ZDlhOTQyNDE5ZDY4NTRmMDU0OWQ0MzI0OGE0ZWYyMjMzMTY2NWY3OGVlNDZiOGE1NjU1ZWI2MWM5NDE2NDFiMDEwMDAwMDAwOTAwMDAwMDAxNDViYTQ1NWYyNzY2ZTZiOWM4YWE5MTNhY2VhYjJjNTEyZGIyOWVmYTg1NWIyMzAzYTBkYmE3MmNiOTBhYzEyZTVkOWE5NDI0MTlkNjg1NGYwNTQ5ZDQzMjQ4YTRlZjIyMzMxNjY1Zjc4ZWU0NmI4YTU2NTVlYjYxYzk0MTY0MWIwMTlkNTI0MmRjJyxcbiAgbm9kZUlEOiAnTm9kZUlELUFLdDdXYUs2b3pFeTVLOGF6S05hY1pYTHp4Wjl4RmdDNycsXG4gIHN0YWtlQW1vdW50OiAnNTAwMDAwMDAwMDAwMDAnLCAvLyA1MCwwMDAgRkxSIGluIG5hbm9GTFJcbiAgc3RhcnRUaW1lOiAxNzY0Mjc2ODIzLFxuICBlbmRUaW1lOiAxNzY1NDg2NDIzLCAvLyB+MTQgZGF5cyBsYXRlclxuICBwQWRkcmVzc2VzOiBbJ1AtY29zdHdvMXAzam1tY3B1OXV4aHoyd20zejY2NzNobm5wOHhhdnIwdnk2dnFuJ10sXG4gIHRocmVzaG9sZDogMSxcbiAgbG9ja3RpbWU6IDAsXG4gIGNvbnRleHQ6IHtcbiAgICB4QmxvY2tjaGFpbklEOiAnRkp1U3dadVA4NWV5QnB1QnJLRUNucFBlZEd5WG9EeTJoUDlxNEpEOHFCVFpHeFliSicsXG4gICAgcEJsb2NrY2hhaW5JRDogJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVknLFxuICAgIGNCbG9ja2NoYWluSUQ6ICd2RThNOThtRVFINndrNTZzU3REMU1MOEhBcFRnU3FmSlpMazlnUTNGc2Q0aTZtM0JpJyxcbiAgICBhdmF4QXNzZXRJRDogJ2Z4TUFLcEJRUXBGZWRyVWhXTXNEWWZDVUp4ZFV3NG1uZVRjektCek5nM3JjMkpVdWInLFxuICAgIGJhc2VUeEZlZTogMTAwMDAwMG4sXG4gICAgY3JlYXRlQXNzZXRUeEZlZTogMTAwMDAwMG4sXG4gICAgY3JlYXRlU3VibmV0VHhGZWU6IDEwMDAwMDAwMG4sXG4gICAgdHJhbnNmb3JtU3VibmV0VHhGZWU6IDEwMDAwMDAwMG4sXG4gICAgY3JlYXRlQmxvY2tjaGFpblR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIGFkZFByaW1hcnlOZXR3b3JrVmFsaWRhdG9yRmVlOiAwbixcbiAgICBhZGRQcmltYXJ5TmV0d29ya0RlbGVnYXRvckZlZTogMG4sXG4gICAgYWRkU3VibmV0VmFsaWRhdG9yRmVlOiAxMDAwMDAwbixcbiAgICBhZGRTdWJuZXREZWxlZ2F0b3JGZWU6IDEwMDAwMDBuLFxuICAgIG5ldHdvcmtJRDogMTE0LFxuICAgIGhycDogJ2Nvc3R3bycsXG4gICAgcGxhdGZvcm1GZWVDb25maWc6IHtcbiAgICAgIHdlaWdodHM6IHsgMDogMSwgMTogMTAwMCwgMjogMTAwMCwgMzogNCB9LFxuICAgICAgbWF4Q2FwYWNpdHk6IDEwMDAwMDBuLFxuICAgICAgbWF4UGVyU2Vjb25kOiAxMDAwMDBuLFxuICAgICAgdGFyZ2V0UGVyU2Vjb25kOiA1MDAwMG4sXG4gICAgICBtaW5QcmljZTogMjUwbixcbiAgICAgIGV4Y2Vzc0NvbnZlcnNpb25Db25zdGFudDogMjE2NDA0M24sXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportInP.d.ts","sourceRoot":"","sources":["../../../../test/resources/transactionData/exportInP.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exportInP.d.ts","sourceRoot":"","sources":["../../../../test/resources/transactionData/exportInP.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGvB,CAAC"}
|