@bitgo-beta/utxo-lib
Advanced tools
Comparing version 2.4.2-beta.66 to 2.4.2-beta.67
/// <reference types="node" /> | ||
import { TxInput } from 'bitcoinjs-lib'; | ||
import { ScriptType } from './outputScripts'; | ||
declare const inputTypes: readonly ["multisig", "nonstandard", "nulldata", "pubkey", "pubkeyhash", "scripthash", "witnesspubkeyhash", "witnessscripthash", "taproot", "taprootnofn", "witnesscommitment"]; | ||
declare type InputType = typeof inputTypes[number]; | ||
export declare function isPlaceholderSignature(v: number | Buffer): boolean; | ||
export interface ParsedSignatureScript { | ||
scriptType: ScriptType | 'p2pkh' | undefined; | ||
isSegwitInput: boolean; | ||
inputClassification: InputType; | ||
p2shOutputClassification?: string; | ||
scriptType: ScriptType; | ||
} | ||
export interface ParsedSignatureScriptUnknown extends ParsedSignatureScript { | ||
scriptType: undefined; | ||
} | ||
export interface ParsedSignatureScriptP2PK extends ParsedSignatureScript { | ||
export interface ParsedSignatureScriptP2shP2pk extends ParsedSignatureScript { | ||
scriptType: 'p2shP2pk'; | ||
inputClassification: 'scripthash'; | ||
} | ||
export interface ParsedSignatureScriptP2PKH extends ParsedSignatureScript { | ||
scriptType: 'p2pkh'; | ||
inputClassification: 'pubkeyhash'; | ||
publicKeys: [Buffer]; | ||
signatures: [Buffer]; | ||
publicKeys: [Buffer]; | ||
pubScript?: Buffer; | ||
} | ||
export interface ParsedSignatureScript2Of3 extends ParsedSignatureScript { | ||
scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'; | ||
inputClassification: 'scripthash' | 'witnessscripthash'; | ||
publicKeys: [Buffer, Buffer, Buffer]; | ||
@@ -39,3 +24,2 @@ signatures: [Buffer, Buffer] | [Buffer | 0, Buffer | 0, Buffer | 0]; | ||
scriptType: 'p2tr'; | ||
inputClassification: 'taproot'; | ||
publicKeys: [Buffer]; | ||
@@ -51,3 +35,2 @@ signatures: [Buffer]; | ||
scriptType: 'p2tr'; | ||
inputClassification: 'taproot'; | ||
publicKeys: [Buffer, Buffer]; | ||
@@ -71,5 +54,4 @@ signatures: [Buffer, Buffer]; | ||
*/ | ||
export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptP2PK | ParsedSignatureScriptP2PKH | ParsedSignatureScript2Of3 | ParsedSignatureScriptTaproot; | ||
export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptP2shP2pk | ParsedSignatureScript2Of3 | ParsedSignatureScriptTaproot; | ||
export declare function parseSignatureScript2Of3(input: TxInput): ParsedSignatureScript2Of3 | ParsedSignatureScriptTaproot; | ||
export {}; | ||
//# sourceMappingURL=parseInput.d.ts.map |
@@ -7,15 +7,2 @@ "use strict"; | ||
const types_1 = require("./types"); | ||
const inputTypes = [ | ||
'multisig', | ||
'nonstandard', | ||
'nulldata', | ||
'pubkey', | ||
'pubkeyhash', | ||
'scripthash', | ||
'witnesspubkeyhash', | ||
'witnessscripthash', | ||
'taproot', | ||
'taprootnofn', | ||
'witnesscommitment', | ||
]; | ||
function isPlaceholderSignature(v) { | ||
@@ -154,3 +141,3 @@ if (Buffer.isBuffer(v)) { | ||
} | ||
const parseP2PK = (p) => { | ||
const parseP2shP2pk = (p) => { | ||
if (!isLegacy(p)) { | ||
@@ -165,5 +152,4 @@ return new MatchError(`expected legacy input`); | ||
scriptType: 'p2shP2pk', | ||
inputClassification: 'scripthash', | ||
p2shOutputClassification: 'pubkey', | ||
isSegwitInput: false, | ||
publicKeys: match[':script'][0].match[':pubkey'], | ||
signatures: match[':signature'], | ||
}; | ||
@@ -199,5 +185,2 @@ }; | ||
scriptType: 'p2sh', | ||
inputClassification: 'scripthash', | ||
p2shOutputClassification: 'multisig', | ||
isSegwitInput: false, | ||
}); | ||
@@ -211,5 +194,2 @@ }; | ||
scriptType: 'p2shP2wsh', | ||
inputClassification: 'scripthash', | ||
p2shOutputClassification: 'multisig', | ||
isSegwitInput: true, | ||
}); | ||
@@ -223,5 +203,2 @@ }; | ||
scriptType: 'p2wsh', | ||
inputClassification: 'witnessscripthash', | ||
p2shOutputClassification: 'multisig', | ||
isSegwitInput: true, | ||
}); | ||
@@ -251,4 +228,2 @@ }; | ||
scriptType: 'p2tr', | ||
isSegwitInput: true, | ||
inputClassification: 'taproot', | ||
pubScript: match[':script'][0].buffer, | ||
@@ -273,3 +248,3 @@ publicKeys: match[':script'][0].match[':pubkey-xonly'], | ||
const decScript = bitcoinjs_lib_1.script.decompile(input.script); | ||
const parsers = [parseP2PK, parseP2sh2Of3, parseP2shP2wsh2Of3, parseP2wsh2Of3, parseP2tr2Of3]; | ||
const parsers = [parseP2sh2Of3, parseP2shP2wsh2Of3, parseP2wsh2Of3, parseP2tr2Of3, parseP2shP2pk]; | ||
for (const f of parsers) { | ||
@@ -302,2 +277,2 @@ const parsed = f({ | ||
exports.parseSignatureScript2Of3 = parseSignatureScript2Of3; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VJbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9wYXJzZUlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUF1QztBQUN2QyxpREFBMkQ7QUFHM0QsbUNBQW1DO0FBRW5DLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLFVBQVU7SUFDVixhQUFhO0lBQ2IsVUFBVTtJQUNWLFFBQVE7SUFDUixZQUFZO0lBQ1osWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsU0FBUztJQUNULGFBQWE7SUFDYixtQkFBbUI7Q0FDWCxDQUFDO0FBSVgsU0FBZ0Isc0JBQXNCLENBQUMsQ0FBa0I7SUFDdkQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDdkI7SUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakIsQ0FBQztBQUxELHdEQUtDO0FBd0dELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU87UUFDTCxTQUFTLEVBQUUsRUFBRTtRQUNiLGVBQWUsRUFBRSxFQUFFO1FBQ25CLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEVBQUU7S0FDZCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVyxTQUFRLEtBQUs7SUFHNUIsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhqQix1R0FBdUc7UUFDdkcsV0FBTSxHQUFHLFlBQVksQ0FBQztJQUd0QixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQXVCO1FBQzlDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsT0FBTyxJQUFJLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3ZE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IGFzIG9wY29kZXMgZnJvbSAnYml0Y29pbi1vcHMnO1xuaW1wb3J0IHsgVHhJbnB1dCwgc2NyaXB0IGFzIGJzY3JpcHQgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgU2NyaXB0VHlwZSB9IGZyb20gJy4vb3V0cHV0U2NyaXB0cyc7XG5pbXBvcnQgeyBpc1RyaXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBpbnB1dFR5cGVzID0gW1xuICAnbXVsdGlzaWcnLFxuICAnbm9uc3RhbmRhcmQnLFxuICAnbnVsbGRhdGEnLFxuICAncHVia2V5JyxcbiAgJ3B1YmtleWhhc2gnLFxuICAnc2NyaXB0aGFzaCcsXG4gICd3aXRuZXNzcHVia2V5aGFzaCcsXG4gICd3aXRuZXNzc2NyaXB0aGFzaCcsXG4gICd0YXByb290JyxcbiAgJ3RhcHJvb3Rub2ZuJyxcbiAgJ3dpdG5lc3Njb21taXRtZW50Jyxcbl0gYXMgY29uc3Q7XG5cbnR5cGUgSW5wdXRUeXBlID0gdHlwZW9mIGlucHV0VHlwZXNbbnVtYmVyXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhY2Vob2xkZXJTaWduYXR1cmUodjogbnVtYmVyIHwgQnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodikpIHtcbiAgICByZXR1cm4gdi5sZW5ndGggPT09IDA7XG4gIH1cbiAgcmV0dXJuIHYgPT09IDA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZSB8ICdwMnBraCcgfCB1bmRlZmluZWQ7XG4gIGlzU2Vnd2l0SW5wdXQ6IGJvb2xlYW47XG4gIGlucHV0Q2xhc3NpZmljYXRpb246IElucHV0VHlwZTtcbiAgcDJzaE91dHB1dENsYXNzaWZpY2F0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFVua25vd24gZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJQSyBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoUDJwayc7XG4gIGlucHV0Q2xhc3NpZmljYXRpb246ICdzY3JpcHRoYXNoJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMlBLSCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnBraCc7XG4gIGlucHV0Q2xhc3NpZmljYXRpb246ICdwdWJrZXloYXNoJztcbiAgc2lnbmF0dXJlczogW0J1ZmZlcl07XG4gIHB1YmxpY0tleXM6IFtCdWZmZXJdO1xuICBwdWJTY3JpcHQ/OiBCdWZmZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJztcbiAgaW5wdXRDbGFzc2lmaWNhdGlvbjogJ3NjcmlwdGhhc2gnIHwgJ3dpdG5lc3NzY3JpcHRoYXNoJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdO1xuICBzaWduYXR1cmVzOlxuICAgIHwgW0J1ZmZlciwgQnVmZmVyXSAvLyBmdWxseS1zaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggc2lnbmF0dXJlc1xuICAgIC8qIFBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggcGxhY2Vob2xkZXIgc2lnbmF0dXJlcy5cbiAgICAgICBGb3IgcDJzaCwgdGhlIHBsYWNlaG9sZGVyIGlzIE9QXzAgKG51bWJlciAwKSAqL1xuICAgIHwgW0J1ZmZlciB8IDAsIEJ1ZmZlciB8IDAsIEJ1ZmZlciB8IDBdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuLyoqXG4gKiBLZXlwYXRoIHNwZW5kcyBvbmx5IGhhdmUgYSBzaW5nbGUgcHVia2V5IGFuZCBzaW5nbGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGggZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAncDJ0cic7XG4gIGlucHV0Q2xhc3NpZmljYXRpb246ICd0YXByb290JztcbiAgcHVibGljS2V5czogW0J1ZmZlcl07XG4gIHNpZ25hdHVyZXM6IFtCdWZmZXJdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuLyoqXG4gKiBUYXByb290IFNjcmlwdHBhdGggc3BlbmRzIGFyZSBtb3JlIHNpbWlsYXIgdG8gcmVndWxhciBwMm1zIHNwZW5kcyBhbmQgaGF2ZSB0d28gcHVibGljIGtleXMgYW5kXG4gKiB0d28gc2lnbmF0dXJlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RTY3JpcHRQYXRoIGV4dGVuZHMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0IHtcbiAgc2NyaXB0VHlwZTogJ3AydHInO1xuICBpbnB1dENsYXNzaWZpY2F0aW9uOiAndGFwcm9vdCc7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIHNpZ25hdHVyZXM6IFtCdWZmZXIsIEJ1ZmZlcl07XG4gIGNvbnRyb2xCbG9jazogQnVmZmVyO1xuICBsZWFmVmVyc2lvbjogbnVtYmVyO1xuICAvKiogSW5kaWNhdGVzIHRoZSBsZXZlbCBpbnNpZGUgdGhlIHRhcHRyZWUuICovXG4gIHNjcmlwdFBhdGhMZXZlbDogbnVtYmVyO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdCA9IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3RLZXlQYXRoIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFNjcmlwdFBhdGg7XG5cbnR5cGUgRGVjb21waWxlZFNjcmlwdCA9IEFycmF5PEJ1ZmZlciB8IG51bWJlcj47XG5cbi8qKlxuICogU3RhdGljIHNjcmlwdCBlbGVtZW50c1xuICovXG50eXBlIFNjcmlwdFBhdHRlcm5Db25zdGFudCA9XG4gIHwgJ09QXzAnXG4gIHwgJ09QXzEnXG4gIHwgJ09QXzInXG4gIHwgJ09QXzMnXG4gIHwgJ09QX0NIRUNLTVVMVElTSUcnXG4gIHwgJ09QX0NIRUNLU0lHJ1xuICB8ICdPUF9DSEVDS1NJR1ZFUklGWSc7XG5cbi8qKlxuICogU2NyaXB0IGVsZW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkXG4gKi9cbnR5cGUgU2NyaXB0UGF0dGVybkNhcHR1cmUgPVxuICB8ICc6cHVia2V5J1xuICB8ICc6cHVia2V5LXhvbmx5J1xuICB8ICc6c2lnbmF0dXJlJ1xuICB8ICc6Y29udHJvbC1ibG9jaydcbiAgfCB7ICc6c2NyaXB0JzogU2NyaXB0UGF0dGVybkVsZW1lbnRbXSB9O1xuXG50eXBlIFNjcmlwdFBhdHRlcm5FbGVtZW50ID0gU2NyaXB0UGF0dGVybkNvbnN0YW50IHwgU2NyaXB0UGF0dGVybkNhcHR1cmU7XG5cbi8qKlxuICogUmVzdWx0IGZvciBhIHN1Y2Nlc3NmdWwgc2NyaXB0IG1hdGNoXG4gKi9cbnR5cGUgTWF0Y2hSZXN1bHQgPSB7XG4gICc6cHVia2V5JzogQnVmZmVyW107XG4gICc6cHVia2V5LXhvbmx5JzogQnVmZmVyW107XG4gICc6Y29udHJvbC1ibG9jayc6IEJ1ZmZlcltdO1xuICAnOnNpZ25hdHVyZSc6IChCdWZmZXIgfCAwKVtdO1xuICAnOnNjcmlwdCc6IHsgYnVmZmVyOiBCdWZmZXI7IG1hdGNoOiBNYXRjaFJlc3VsdCB9W107XG59O1xuXG5mdW5jdGlvbiBlbXB0eU1hdGNoUmVzdWx0KCk6IE1hdGNoUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICAnOnB1YmtleSc6IFtdLFxuICAgICc6cHVia2V5LXhvbmx5JzogW10sXG4gICAgJzpjb250cm9sLWJsb2NrJzogW10sXG4gICAgJzpzaWduYXR1cmUnOiBbXSxcbiAgICAnOnNjcmlwdCc6IFtdLFxuICB9O1xufVxuXG5jbGFzcyBNYXRjaEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvLyB0aGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHRvIHByb2hpYml0IGByZXR1cm4gbmV3IEVycm9yKClgIHdoZW4gdGhlIHJldHVybiB0eXBlIGRlbWFuZHMgYE1hdGNoRXJyb3JgXG4gIF9fdHlwZSA9ICdNYXRjaEVycm9yJztcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBzdGF0aWMgZm9yUGF0dGVybkVsZW1lbnQocDogU2NyaXB0UGF0dGVybkVsZW1lbnQpOiBNYXRjaEVycm9yIHtcbiAgICBpZiAodHlwZW9mIHAgPT09ICdvYmplY3QnICYmICc6c2NyaXB0JyBpbiBwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIG1hdGNoaW5nIG5lc3RlZCBzY3JpcHRgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBlcnJvciBtYXRjaGluZyAke3B9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gcGF0dGVyblxuICogQHJldHVybiBNYXRjaFJlc3VsdCBpZiBzY3JpcHQgbWF0Y2hlcyBwYXR0ZXJuLiBUaGUgcmVzdWx0IHdpbGwgY29udGFpbiB0aGUgbWF0Y2hlZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoU2NyaXB0KHNjcmlwdDogRGVjb21waWxlZFNjcmlwdCwgcGF0dGVybjogU2NyaXB0UGF0dGVybkVsZW1lbnRbXSk6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciB7XG4gIC8qKlxuICAgKiBNYXRjaCBhIHNpbmdsZSBzY3JpcHQgZWxlbWVudCB3aXRoIGEgU2NyaXB0UGF0dGVybkVsZW1lbnRcbiAgICovXG4gIGZ1bmN0aW9uIG1hdGNoRWxlbWVudChlOiBCdWZmZXIgfCBudW1iZXIsIHA6IFNjcmlwdFBhdHRlcm5FbGVtZW50KTogTWF0Y2hSZXN1bHQgfCBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHApIHtcbiAgICAgIGNhc2UgJ09QXzAnOlxuICAgICAgICByZXR1cm4gZSA9PT0gb3Bjb2Rlcy5PUF8wIHx8IChCdWZmZXIuaXNCdWZmZXIoZSkgJiYgZS5sZW5ndGggPT09IDApO1xuICAgICAgY2FzZSAnT1BfMSc6XG4gICAgICBjYXNlICdPUF8yJzpcbiAgICAgIGNhc2UgJ09QXzMnOlxuICAgICAgY2FzZSAnT1BfQ0hFQ0tNVUxUSVNJRyc6XG4gICAgICBjYXNlICdPUF9DSEVDS1NJRyc6XG4gICAgICBjYXNlICdPUF9DSEVDS1NJR1ZFUklGWSc6XG4gICAgICAgIHJldHVybiBlID09PSBvcGNvZGVzW3BdO1xuICAgICAgY2FzZSAnOnB1YmtleSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgJiYgZS5sZW5ndGggPT09IDMzO1xuICAgICAgY2FzZSAnOnB1YmtleS14b25seSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgJiYgZS5sZW5ndGggPT09IDMyO1xuICAgICAgY2FzZSAnOnNpZ25hdHVyZSc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoZSkgfHwgaXNQbGFjZWhvbGRlclNpZ25hdHVyZShlKTtcbiAgICAgIGNhc2UgJzpjb250cm9sLWJsb2NrJzpcbiAgICAgICAgLy8gVGhlIGxhc3Qgc3RhY2sgZWxlbWVudCBpcyBjYWxsZWQgdGhlIGNvbnRyb2wgYmxvY2sgYywgYW5kIG11c3QgaGF2ZSBsZW5ndGggMzMgKyAzMm1cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiAzMyA8PSBlLmxlbmd0aCAmJiBlLmxlbmd0aCAlIDMyID09PSAxO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHBhdHRlcm4gZWxlbWVudCAke3B9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNjcmlwdC5sZW5ndGggIT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBsZW5ndGggbWlzbWF0Y2hgKTtcbiAgfVxuXG4gIC8vIEdvIG92ZXIgZWFjaCBwYXR0ZXJuIGVsZW1lbnQuXG4gIC8vIENvbGxlY3QgY2FwdHVyZXMgaW50byBhIHJlc3VsdCBvYmplY3QuXG4gIHJldHVybiBwYXR0ZXJuLnJlZHVjZSgob2JqOiBNYXRjaFJlc3VsdCB8IE1hdGNoRXJyb3IsIHAsIGkpOiBNYXRjaFJlc3VsdCB8IE1hdGNoRXJyb3IgPT4ge1xuICAgIC8vIGlmIHdlIGhhZCBhIHByZXZpb3VzIG1pc21hdGNoLCBzaG9ydC1jaXJjdWl0XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgY29uc3QgZSA9IHNjcmlwdFtpXTtcblxuICAgIC8vIGZvciAnOnNjcmlwdCcgcGF0dGVybiBlbGVtZW50cywgZGVjb21waWxlIHNjcmlwdCBlbGVtZW50IGFuZCByZWN1cnNlXG4gICAgaWYgKHR5cGVvZiBwID09PSAnb2JqZWN0JyAmJiAnOnNjcmlwdCcgaW4gcCkge1xuICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBidWZmZXIgZm9yIDpzY3JpcHRgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlYyA9IGJzY3JpcHQuZGVjb21waWxlKGUpO1xuICAgICAgaWYgKCFkZWMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBlcnJvciBkZWNvbXBpbGluZyBuZXN0ZWQgc2NyaXB0YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KGRlYywgcFsnOnNjcmlwdCddKTtcbiAgICAgIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfVxuICAgICAgb2JqWyc6c2NyaXB0J10ucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZSxcbiAgICAgICAgbWF0Y2gsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2ggPSBtYXRjaEVsZW1lbnQoZSwgcCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIE1hdGNoRXJyb3IuZm9yUGF0dGVybkVsZW1lbnQocCk7XG4gICAgfVxuXG4gICAgLy8gaWYgcGF0dGVybiBlbGVtZW50IGlzIGEgY2FwdHVyZSwgYWRkIGl0IHRvIHRoZSByZXN1bHQgb2JqXG4gICAgaWYgKHAgPT09ICc6c2lnbmF0dXJlJyAmJiBlID09PSAwKSB7XG4gICAgICBvYmpbcF0ucHVzaChlKTtcbiAgICB9IGVsc2UgaWYgKHAgaW4gb2JqKSB7XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgY2FwdHVyZSB2YWx1ZWApO1xuICAgICAgfVxuICAgICAgb2JqW3BdLnB1c2goZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbiAgfSwgZW1wdHlNYXRjaFJlc3VsdCgpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gcGF0dGVybnNcbiAqIEByZXR1cm4gZmlyc3QgbWF0Y2hcbiAqL1xuZnVuY3Rpb24gbWF0Y2hTY3JpcHRTb21lKHNjcmlwdDogRGVjb21waWxlZFNjcmlwdCwgcGF0dGVybnM6IFNjcmlwdFBhdHRlcm5FbGVtZW50W11bXSk6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciB7XG4gIGZvciAoY29uc3QgcCBvZiBwYXR0ZXJucykge1xuICAgIGNvbnN0IG0gPSBtYXRjaFNjcmlwdChzY3JpcHQsIHApO1xuICAgIGlmIChtIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJldHVybiBtO1xuICB9XG4gIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgbm8gbWF0Y2ggZm9yIHNjcmlwdGApO1xufVxuXG50eXBlIElucHV0U2NyaXB0czxUU2NyaXB0LCBUV2l0bmVzcz4gPSB7XG4gIHNjcmlwdDogVFNjcmlwdDtcbiAgd2l0bmVzczogVFdpdG5lc3M7XG59O1xuXG50eXBlIElucHV0U2NyaXB0c0xlZ2FjeSA9IElucHV0U2NyaXB0czxEZWNvbXBpbGVkU2NyaXB0LCBudWxsPjtcbnR5cGUgSW5wdXRTY3JpcHRzV3JhcHBlZFNlZ3dpdCA9IElucHV0U2NyaXB0czxEZWNvbXBpbGVkU2NyaXB0LCBCdWZmZXJbXT47XG50eXBlIElucHV0U2NyaXB0c05hdGl2ZVNlZ3dpdCA9IElucHV0U2NyaXB0czxudWxsLCBCdWZmZXJbXT47XG5cbnR5cGUgSW5wdXRTY3JpcHRzVW5rbm93biA9IElucHV0U2NyaXB0czxEZWNvbXBpbGVkU2NyaXB0IHwgbnVsbCwgQnVmZmVyW10gfCBudWxsPjtcblxudHlwZSBJbnB1dFBhcnNlcjxcbiAgVCBleHRlbmRzXG4gICAgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMlBLSFxuICAgIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJQS1xuICAgIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mM1xuICAgIHwgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdFxuPiA9IChwOiBJbnB1dFNjcmlwdHNVbmtub3duKSA9PiBUIHwgTWF0Y2hFcnJvcjtcblxuZnVuY3Rpb24gaXNMZWdhY3kocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTGVnYWN5IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgIXAud2l0bmVzcyk7XG59XG5cbmZ1bmN0aW9uIGlzV3JhcHBlZFNlZ3dpdChwOiBJbnB1dFNjcmlwdHNVbmtub3duKTogcCBpcyBJbnB1dFNjcmlwdHNXcmFwcGVkU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgcC53aXRuZXNzKTtcbn1cblxuZnVuY3Rpb24gaXNOYXRpdmVTZWd3aXQocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTmF0aXZlU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4oIXAuc2NyaXB0ICYmIHAud2l0bmVzcyk7XG59XG5cbmNvbnN0IHBhcnNlUDJQSzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJQSz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTGVnYWN5KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBsZWdhY3kgaW5wdXRgKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KHAuc2NyaXB0LCBbJzpzaWduYXR1cmUnLCB7ICc6c2NyaXB0JzogWyc6cHVia2V5JywgJ09QX0NIRUNLU0lHJ10gfV0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZTogJ3Ayc2hQMnBrJyxcbiAgICBpbnB1dENsYXNzaWZpY2F0aW9uOiAnc2NyaXB0aGFzaCcsXG4gICAgcDJzaE91dHB1dENsYXNzaWZpY2F0aW9uOiAncHVia2V5JyxcbiAgICBpc1NlZ3dpdElucHV0OiBmYWxzZSxcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlUDJtcyhcbiAgZGVjU2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LFxuICBwYXJhbXM6IFBpY2s8XG4gICAgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyxcbiAgICAnc2NyaXB0VHlwZScgfCAnaW5wdXRDbGFzc2lmaWNhdGlvbicgfCAncDJzaE91dHB1dENsYXNzaWZpY2F0aW9uJyB8ICdpc1NlZ3dpdElucHV0J1xuICA+XG4pOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzIHwgTWF0Y2hFcnJvciB7XG4gIGNvbnN0IHBhdHRlcm4yT2YzOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdID0gWydPUF8yJywgJzpwdWJrZXknLCAnOnB1YmtleScsICc6cHVia2V5JywgJ09QXzMnLCAnT1BfQ0hFQ0tNVUxUSVNJRyddO1xuXG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHRTb21lKGRlY1NjcmlwdCwgW1xuICAgIC8qIGZ1bGwtc2lnbmVkLCBubyBwbGFjZWhvbGRlciBzaWduYXR1cmUgKi9cbiAgICBbJ09QXzAnLCAnOnNpZ25hdHVyZScsICc6c2lnbmF0dXJlJywgeyAnOnNjcmlwdCc6IHBhdHRlcm4yT2YzIH1dLFxuICAgIC8qIGhhbGYtc2lnbmVkLCBwbGFjZWhvbGRlciBzaWduYXR1cmVzICovXG4gICAgWydPUF8wJywgJzpzaWduYXR1cmUnLCAnOnNpZ25hdHVyZScsICc6c2lnbmF0dXJlJywgeyAnOnNjcmlwdCc6IHBhdHRlcm4yT2YzIH1dLFxuICBdKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuXG4gIGNvbnN0IFtyZWRlZW1TY3JpcHRdID0gbWF0Y2hbJzpzY3JpcHQnXTtcblxuICBpZiAoIWlzVHJpcGxlKHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdWJrZXkgY291bnRgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ucGFyYW1zLFxuICAgIHB1YmxpY0tleXM6IHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddLFxuICAgIHB1YlNjcmlwdDogcmVkZWVtU2NyaXB0LmJ1ZmZlcixcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjNbJ3NpZ25hdHVyZXMnXSxcbiAgfTtcbn1cblxuY29uc3QgcGFyc2VQMnNoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTGVnYWN5KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBsZWdhY3kgaW5wdXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAuc2NyaXB0LCB7XG4gICAgc2NyaXB0VHlwZTogJ3Ayc2gnLFxuICAgIGlucHV0Q2xhc3NpZmljYXRpb246ICdzY3JpcHRoYXNoJyxcbiAgICBwMnNoT3V0cHV0Q2xhc3NpZmljYXRpb246ICdtdWx0aXNpZycsXG4gICAgaXNTZWd3aXRJbnB1dDogZmFsc2UsXG4gIH0pO1xufTtcblxuY29uc3QgcGFyc2VQMnNoUDJ3c2gyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzPiA9IChwKSA9PiB7XG4gIGlmICghaXNXcmFwcGVkU2Vnd2l0KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCB3cmFwcGVkIHNlZ3dpdCBpbnB1dGApO1xuICB9XG4gIHJldHVybiBwYXJzZVAybXMocC53aXRuZXNzLCB7XG4gICAgc2NyaXB0VHlwZTogJ3Ayc2hQMndzaCcsXG4gICAgaW5wdXRDbGFzc2lmaWNhdGlvbjogJ3NjcmlwdGhhc2gnLFxuICAgIHAyc2hPdXRwdXRDbGFzc2lmaWNhdGlvbjogJ211bHRpc2lnJyxcbiAgICBpc1NlZ3dpdElucHV0OiB0cnVlLFxuICB9KTtcbn07XG5cbmNvbnN0IHBhcnNlUDJ3c2gyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzPiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAud2l0bmVzcywge1xuICAgIHNjcmlwdFR5cGU6ICdwMndzaCcsXG4gICAgaW5wdXRDbGFzc2lmaWNhdGlvbjogJ3dpdG5lc3NzY3JpcHRoYXNoJyxcbiAgICBwMnNoT3V0cHV0Q2xhc3NpZmljYXRpb246ICdtdWx0aXNpZycsXG4gICAgaXNTZWd3aXRJbnB1dDogdHJ1ZSxcbiAgfSk7XG59O1xuXG5jb25zdCBwYXJzZVAydHIyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290PiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICAvLyBhc3N1bWVzIG5vIGFubmV4XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQocC53aXRuZXNzLCBbXG4gICAgJzpzaWduYXR1cmUnLFxuICAgICc6c2lnbmF0dXJlJyxcbiAgICB7ICc6c2NyaXB0JzogWyc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHVkVSSUZZJywgJzpwdWJrZXkteG9ubHknLCAnT1BfQ0hFQ0tTSUcnXSB9LFxuICAgICc6Y29udHJvbC1ibG9jaycsXG4gIF0pO1xuICBpZiAobWF0Y2ggaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG4gIGNvbnN0IFtjb250cm9sQmxvY2tdID0gbWF0Y2hbJzpjb250cm9sLWJsb2NrJ107XG4gIGNvbnN0IHNjcmlwdFBhdGhMZXZlbCA9IGNvbnRyb2xCbG9jay5sZW5ndGggPT09IDY1ID8gMSA6IGNvbnRyb2xCbG9jay5sZW5ndGggPT09IDk3ID8gMiA6IHVuZGVmaW5lZDtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoc2NyaXB0UGF0aExldmVsID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgY29udHJvbCBibG9jayBsZW5ndGggJHtjb250cm9sQmxvY2subGVuZ3RofWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAncDJ0cicsXG4gICAgaXNTZWd3aXRJbnB1dDogdHJ1ZSxcbiAgICBpbnB1dENsYXNzaWZpY2F0aW9uOiAndGFwcm9vdCcsXG4gICAgcHViU2NyaXB0OiBtYXRjaFsnOnNjcmlwdCddWzBdLmJ1ZmZlcixcbiAgICBwdWJsaWNLZXlzOiBtYXRjaFsnOnNjcmlwdCddWzBdLm1hdGNoWyc6cHVia2V5LXhvbmx5J10gYXMgW0J1ZmZlciwgQnVmZmVyXSxcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFtCdWZmZXIsIEJ1ZmZlcl0sXG4gICAgY29udHJvbEJsb2NrLFxuICAgIHNjcmlwdFBhdGhMZXZlbCxcbiAgICBsZWFmVmVyc2lvbjogY29udHJvbEJsb2NrWzBdICYgMHhmZSxcbiAgfTtcbn07XG5cbi8qKlxuICogUGFyc2UgYSB0cmFuc2FjdGlvbidzIHNpZ25hdHVyZSBzY3JpcHQgdG8gb2J0YWluIHB1YmxpYyBrZXlzLCBzaWduYXR1cmVzLCB0aGUgc2lnIHNjcmlwdCxcbiAqIGFuZCBvdGhlciBwcm9wZXJ0aWVzLlxuICpcbiAqIE9ubHkgc3VwcG9ydHMgc2NyaXB0IHR5cGVzIHVzZWQgaW4gQml0R28gdHJhbnNhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBpbnB1dFxuICogQHJldHVybnMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpZ25hdHVyZVNjcmlwdChcbiAgaW5wdXQ6IFR4SW5wdXRcbik6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyUEsgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMlBLSCB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290IHtcbiAgY29uc3QgZGVjU2NyaXB0ID0gYnNjcmlwdC5kZWNvbXBpbGUoaW5wdXQuc2NyaXB0KTtcbiAgY29uc3QgcGFyc2VycyA9IFtwYXJzZVAyUEssIHBhcnNlUDJzaDJPZjMsIHBhcnNlUDJzaFAyd3NoMk9mMywgcGFyc2VQMndzaDJPZjMsIHBhcnNlUDJ0cjJPZjNdIGFzIGNvbnN0O1xuICBmb3IgKGNvbnN0IGYgb2YgcGFyc2Vycykge1xuICAgIGNvbnN0IHBhcnNlZCA9IGYoe1xuICAgICAgc2NyaXB0OiBkZWNTY3JpcHQ/Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiBkZWNTY3JpcHQsXG4gICAgICB3aXRuZXNzOiBpbnB1dC53aXRuZXNzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiBpbnB1dC53aXRuZXNzLFxuICAgIH0pO1xuICAgIGlmIChwYXJzZWQgaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCBwYXJzZSBpbnB1dGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQyT2YzKGlucHV0OiBUeElucHV0KTogUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Qge1xuICBjb25zdCByZXN1bHQgPSBwYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCkgYXMgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdFRhcHJvb3Q7XG5cbiAgaWYgKCFyZXN1bHQuc2lnbmF0dXJlcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyBzaWduYXR1cmVzYCk7XG4gIH1cbiAgaWYgKHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMyAmJiAocmVzdWx0LnB1YmxpY0tleXMubGVuZ3RoICE9PSAyIHx8IHJlc3VsdC5zY3JpcHRUeXBlICE9PSAncDJ0cicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHB1YmtleSBjb3VudGApO1xuICB9XG4gIGlmICghcmVzdWx0LnB1YlNjcmlwdCB8fCByZXN1bHQucHViU2NyaXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHViU2NyaXB0IG1pc3Npbmcgb3IgZW1wdHlgKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VJbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaXRnby9wYXJzZUlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUF1QztBQUN2QyxpREFBMkQ7QUFHM0QsbUNBQW1DO0FBRW5DLFNBQWdCLHNCQUFzQixDQUFDLENBQWtCO0lBQ3ZELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QixPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFMRCx3REFLQztBQXVGRCxTQUFTLGdCQUFnQjtJQUN2QixPQUFPO1FBQ0wsU0FBUyxFQUFFLEVBQUU7UUFDYixlQUFlLEVBQUUsRUFBRTtRQUNuQixnQkFBZ0IsRUFBRSxFQUFFO1FBQ3BCLFlBQVksRUFBRSxFQUFFO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVcsU0FBUSxLQUFLO0lBRzVCLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIakIsdUdBQXVHO1FBQ3ZHLFdBQU0sR0FBRyxZQUFZLENBQUM7SUFHdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUF1QjtRQUM5QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFO1lBQzNDLE9BQU8sSUFBSSxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUN2RDtRQUNELE9BQU8sSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsV0FBVyxDQUFDLE1BQXdCLEVBQUUsT0FBK0I7SUFDNUU7O09BRUc7SUFDSCxTQUFTLFlBQVksQ0FB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QUM7QUFoQkQsb0RBZ0JDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsS0FBYztJQUNyRCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQTZELENBQUM7SUFFdkcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3ZDO0lBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsRUFBRTtRQUN0RyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUM7SUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0tBQy9DO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWRELDREQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3Bjb2RlcyBmcm9tICdiaXRjb2luLW9wcyc7XG5pbXBvcnQgeyBUeElucHV0LCBzY3JpcHQgYXMgYnNjcmlwdCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBTY3JpcHRUeXBlIH0gZnJvbSAnLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IGlzVHJpcGxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWNlaG9sZGVyU2lnbmF0dXJlKHY6IG51bWJlciB8IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHYpKSB7XG4gICAgcmV0dXJuIHYubGVuZ3RoID09PSAwO1xuICB9XG4gIHJldHVybiB2ID09PSAwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0UDJzaFAycGsgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAncDJzaFAycGsnO1xuICBwdWJsaWNLZXlzOiBbQnVmZmVyXTtcbiAgc2lnbmF0dXJlczogW0J1ZmZlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMyBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdO1xuICBzaWduYXR1cmVzOlxuICAgIHwgW0J1ZmZlciwgQnVmZmVyXSAvLyBmdWxseS1zaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggc2lnbmF0dXJlc1xuICAgIC8qIFBhcnRpYWxseSBzaWduZWQgdHJhbnNhY3Rpb25zIHdpdGggcGxhY2Vob2xkZXIgc2lnbmF0dXJlcy5cbiAgICAgICBGb3IgcDJzaCwgdGhlIHBsYWNlaG9sZGVyIGlzIE9QXzAgKG51bWJlciAwKSAqL1xuICAgIHwgW0J1ZmZlciB8IDAsIEJ1ZmZlciB8IDAsIEJ1ZmZlciB8IDBdO1xuICBwdWJTY3JpcHQ6IEJ1ZmZlcjtcbn1cblxuLyoqXG4gKiBLZXlwYXRoIHNwZW5kcyBvbmx5IGhhdmUgYSBzaW5nbGUgcHVia2V5IGFuZCBzaW5nbGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGggZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHQge1xuICBzY3JpcHRUeXBlOiAncDJ0cic7XG4gIHB1YmxpY0tleXM6IFtCdWZmZXJdO1xuICBzaWduYXR1cmVzOiBbQnVmZmVyXTtcbiAgcHViU2NyaXB0OiBCdWZmZXI7XG59XG5cbi8qKlxuICogVGFwcm9vdCBTY3JpcHRwYXRoIHNwZW5kcyBhcmUgbW9yZSBzaW1pbGFyIHRvIHJlZ3VsYXIgcDJtcyBzcGVuZHMgYW5kIGhhdmUgdHdvIHB1YmxpYyBrZXlzIGFuZFxuICogdHdvIHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290U2NyaXB0UGF0aCBleHRlbmRzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdCB7XG4gIHNjcmlwdFR5cGU6ICdwMnRyJztcbiAgcHVibGljS2V5czogW0J1ZmZlciwgQnVmZmVyXTtcbiAgc2lnbmF0dXJlczogW0J1ZmZlciwgQnVmZmVyXTtcbiAgY29udHJvbEJsb2NrOiBCdWZmZXI7XG4gIGxlYWZWZXJzaW9uOiBudW1iZXI7XG4gIC8qKiBJbmRpY2F0ZXMgdGhlIGxldmVsIGluc2lkZSB0aGUgdGFwdHJlZS4gKi9cbiAgc2NyaXB0UGF0aExldmVsOiBudW1iZXI7XG4gIHB1YlNjcmlwdDogQnVmZmVyO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290ID0gUGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdEtleVBhdGggfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290U2NyaXB0UGF0aDtcblxudHlwZSBEZWNvbXBpbGVkU2NyaXB0ID0gQXJyYXk8QnVmZmVyIHwgbnVtYmVyPjtcblxuLyoqXG4gKiBTdGF0aWMgc2NyaXB0IGVsZW1lbnRzXG4gKi9cbnR5cGUgU2NyaXB0UGF0dGVybkNvbnN0YW50ID1cbiAgfCAnT1BfMCdcbiAgfCAnT1BfMSdcbiAgfCAnT1BfMidcbiAgfCAnT1BfMydcbiAgfCAnT1BfQ0hFQ0tNVUxUSVNJRydcbiAgfCAnT1BfQ0hFQ0tTSUcnXG4gIHwgJ09QX0NIRUNLU0lHVkVSSUZZJztcblxuLyoqXG4gKiBTY3JpcHQgZWxlbWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWRcbiAqL1xudHlwZSBTY3JpcHRQYXR0ZXJuQ2FwdHVyZSA9XG4gIHwgJzpwdWJrZXknXG4gIHwgJzpwdWJrZXkteG9ubHknXG4gIHwgJzpzaWduYXR1cmUnXG4gIHwgJzpjb250cm9sLWJsb2NrJ1xuICB8IHsgJzpzY3JpcHQnOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdIH07XG5cbnR5cGUgU2NyaXB0UGF0dGVybkVsZW1lbnQgPSBTY3JpcHRQYXR0ZXJuQ29uc3RhbnQgfCBTY3JpcHRQYXR0ZXJuQ2FwdHVyZTtcblxuLyoqXG4gKiBSZXN1bHQgZm9yIGEgc3VjY2Vzc2Z1bCBzY3JpcHQgbWF0Y2hcbiAqL1xudHlwZSBNYXRjaFJlc3VsdCA9IHtcbiAgJzpwdWJrZXknOiBCdWZmZXJbXTtcbiAgJzpwdWJrZXkteG9ubHknOiBCdWZmZXJbXTtcbiAgJzpjb250cm9sLWJsb2NrJzogQnVmZmVyW107XG4gICc6c2lnbmF0dXJlJzogKEJ1ZmZlciB8IDApW107XG4gICc6c2NyaXB0JzogeyBidWZmZXI6IEJ1ZmZlcjsgbWF0Y2g6IE1hdGNoUmVzdWx0IH1bXTtcbn07XG5cbmZ1bmN0aW9uIGVtcHR5TWF0Y2hSZXN1bHQoKTogTWF0Y2hSZXN1bHQge1xuICByZXR1cm4ge1xuICAgICc6cHVia2V5JzogW10sXG4gICAgJzpwdWJrZXkteG9ubHknOiBbXSxcbiAgICAnOmNvbnRyb2wtYmxvY2snOiBbXSxcbiAgICAnOnNpZ25hdHVyZSc6IFtdLFxuICAgICc6c2NyaXB0JzogW10sXG4gIH07XG59XG5cbmNsYXNzIE1hdGNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8vIHRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgdG8gcHJvaGliaXQgYHJldHVybiBuZXcgRXJyb3IoKWAgd2hlbiB0aGUgcmV0dXJuIHR5cGUgZGVtYW5kcyBgTWF0Y2hFcnJvcmBcbiAgX190eXBlID0gJ01hdGNoRXJyb3InO1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JQYXR0ZXJuRWxlbWVudChwOiBTY3JpcHRQYXR0ZXJuRWxlbWVudCk6IE1hdGNoRXJyb3Ige1xuICAgIGlmICh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgJzpzY3JpcHQnIGluIHApIHtcbiAgICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXJyb3IgbWF0Y2hpbmcgbmVzdGVkIHNjcmlwdGApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIG1hdGNoaW5nICR7cH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBwYXR0ZXJuXG4gKiBAcmV0dXJuIE1hdGNoUmVzdWx0IGlmIHNjcmlwdCBtYXRjaGVzIHBhdHRlcm4uIFRoZSByZXN1bHQgd2lsbCBjb250YWluIHRoZSBtYXRjaGVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hTY3JpcHQoc2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LCBwYXR0ZXJuOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdKTogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yIHtcbiAgLyoqXG4gICAqIE1hdGNoIGEgc2luZ2xlIHNjcmlwdCBlbGVtZW50IHdpdGggYSBTY3JpcHRQYXR0ZXJuRWxlbWVudFxuICAgKi9cbiAgZnVuY3Rpb24gbWF0Y2hFbGVtZW50KGU6IEJ1ZmZlciB8IG51bWJlciwgcDogU2NyaXB0UGF0dGVybkVsZW1lbnQpOiBNYXRjaFJlc3VsdCB8IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAocCkge1xuICAgICAgY2FzZSAnT1BfMCc6XG4gICAgICAgIHJldHVybiBlID09PSBvcGNvZGVzLk9QXzAgfHwgKEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMCk7XG4gICAgICBjYXNlICdPUF8xJzpcbiAgICAgIGNhc2UgJ09QXzInOlxuICAgICAgY2FzZSAnT1BfMyc6XG4gICAgICBjYXNlICdPUF9DSEVDS01VTFRJU0lHJzpcbiAgICAgIGNhc2UgJ09QX0NIRUNLU0lHJzpcbiAgICAgIGNhc2UgJ09QX0NIRUNLU0lHVkVSSUZZJzpcbiAgICAgICAgcmV0dXJuIGUgPT09IG9wY29kZXNbcF07XG4gICAgICBjYXNlICc6cHVia2V5JzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMzM7XG4gICAgICBjYXNlICc6cHVia2V5LXhvbmx5JzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSAmJiBlLmxlbmd0aCA9PT0gMzI7XG4gICAgICBjYXNlICc6c2lnbmF0dXJlJzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKSB8fCBpc1BsYWNlaG9sZGVyU2lnbmF0dXJlKGUpO1xuICAgICAgY2FzZSAnOmNvbnRyb2wtYmxvY2snOlxuICAgICAgICAvLyBUaGUgbGFzdCBzdGFjayBlbGVtZW50IGlzIGNhbGxlZCB0aGUgY29udHJvbCBibG9jayBjLCBhbmQgbXVzdCBoYXZlIGxlbmd0aCAzMyArIDMybVxuICAgICAgICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGUpICYmIDMzIDw9IGUubGVuZ3RoICYmIGUubGVuZ3RoICUgMzIgPT09IDE7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gcGF0dGVybiBlbGVtZW50ICR7cH1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2NyaXB0Lmxlbmd0aCAhPT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGxlbmd0aCBtaXNtYXRjaGApO1xuICB9XG5cbiAgLy8gR28gb3ZlciBlYWNoIHBhdHRlcm4gZWxlbWVudC5cbiAgLy8gQ29sbGVjdCBjYXB0dXJlcyBpbnRvIGEgcmVzdWx0IG9iamVjdC5cbiAgcmV0dXJuIHBhdHRlcm4ucmVkdWNlKChvYmo6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciwgcCwgaSk6IE1hdGNoUmVzdWx0IHwgTWF0Y2hFcnJvciA9PiB7XG4gICAgLy8gaWYgd2UgaGFkIGEgcHJldmlvdXMgbWlzbWF0Y2gsIHNob3J0LWNpcmN1aXRcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBjb25zdCBlID0gc2NyaXB0W2ldO1xuXG4gICAgLy8gZm9yICc6c2NyaXB0JyBwYXR0ZXJuIGVsZW1lbnRzLCBkZWNvbXBpbGUgc2NyaXB0IGVsZW1lbnQgYW5kIHJlY3Vyc2VcbiAgICBpZiAodHlwZW9mIHAgPT09ICdvYmplY3QnICYmICc6c2NyaXB0JyBpbiBwKSB7XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihlKSkge1xuICAgICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIGJ1ZmZlciBmb3IgOnNjcmlwdGApO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVjID0gYnNjcmlwdC5kZWNvbXBpbGUoZSk7XG4gICAgICBpZiAoIWRlYykge1xuICAgICAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGVycm9yIGRlY29tcGlsaW5nIG5lc3RlZCBzY3JpcHRgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQoZGVjLCBwWyc6c2NyaXB0J10pO1xuICAgICAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9XG4gICAgICBvYmpbJzpzY3JpcHQnXS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBlLFxuICAgICAgICBtYXRjaCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoRWxlbWVudChlLCBwKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gTWF0Y2hFcnJvci5mb3JQYXR0ZXJuRWxlbWVudChwKTtcbiAgICB9XG5cbiAgICAvLyBpZiBwYXR0ZXJuIGVsZW1lbnQgaXMgYSBjYXB0dXJlLCBhZGQgaXQgdG8gdGhlIHJlc3VsdCBvYmpcbiAgICBpZiAocCA9PT0gJzpzaWduYXR1cmUnICYmIGUgPT09IDApIHtcbiAgICAgIG9ialtwXS5wdXNoKGUpO1xuICAgIH0gZWxzZSBpZiAocCBpbiBvYmopIHtcbiAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjYXB0dXJlIHZhbHVlYCk7XG4gICAgICB9XG4gICAgICBvYmpbcF0ucHVzaChlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xuICB9LCBlbXB0eU1hdGNoUmVzdWx0KCkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBwYXR0ZXJuc1xuICogQHJldHVybiBmaXJzdCBtYXRjaFxuICovXG5mdW5jdGlvbiBtYXRjaFNjcmlwdFNvbWUoc2NyaXB0OiBEZWNvbXBpbGVkU2NyaXB0LCBwYXR0ZXJuczogU2NyaXB0UGF0dGVybkVsZW1lbnRbXVtdKTogTWF0Y2hSZXN1bHQgfCBNYXRjaEVycm9yIHtcbiAgZm9yIChjb25zdCBwIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IG1hdGNoU2NyaXB0KHNjcmlwdCwgcCk7XG4gICAgaWYgKG0gaW5zdGFuY2VvZiBNYXRjaEVycm9yKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmV0dXJuIG07XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBubyBtYXRjaCBmb3Igc2NyaXB0YCk7XG59XG5cbnR5cGUgSW5wdXRTY3JpcHRzPFRTY3JpcHQsIFRXaXRuZXNzPiA9IHtcbiAgc2NyaXB0OiBUU2NyaXB0O1xuICB3aXRuZXNzOiBUV2l0bmVzcztcbn07XG5cbnR5cGUgSW5wdXRTY3JpcHRzTGVnYWN5ID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQsIG51bGw+O1xudHlwZSBJbnB1dFNjcmlwdHNXcmFwcGVkU2Vnd2l0ID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQsIEJ1ZmZlcltdPjtcbnR5cGUgSW5wdXRTY3JpcHRzTmF0aXZlU2Vnd2l0ID0gSW5wdXRTY3JpcHRzPG51bGwsIEJ1ZmZlcltdPjtcblxudHlwZSBJbnB1dFNjcmlwdHNVbmtub3duID0gSW5wdXRTY3JpcHRzPERlY29tcGlsZWRTY3JpcHQgfCBudWxsLCBCdWZmZXJbXSB8IG51bGw+O1xuXG50eXBlIElucHV0UGFyc2VyPFQgZXh0ZW5kcyBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwayB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290PiA9IChcbiAgcDogSW5wdXRTY3JpcHRzVW5rbm93blxuKSA9PiBUIHwgTWF0Y2hFcnJvcjtcblxuZnVuY3Rpb24gaXNMZWdhY3kocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTGVnYWN5IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgIXAud2l0bmVzcyk7XG59XG5cbmZ1bmN0aW9uIGlzV3JhcHBlZFNlZ3dpdChwOiBJbnB1dFNjcmlwdHNVbmtub3duKTogcCBpcyBJbnB1dFNjcmlwdHNXcmFwcGVkU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4ocC5zY3JpcHQgJiYgcC53aXRuZXNzKTtcbn1cblxuZnVuY3Rpb24gaXNOYXRpdmVTZWd3aXQocDogSW5wdXRTY3JpcHRzVW5rbm93bik6IHAgaXMgSW5wdXRTY3JpcHRzTmF0aXZlU2Vnd2l0IHtcbiAgcmV0dXJuIEJvb2xlYW4oIXAuc2NyaXB0ICYmIHAud2l0bmVzcyk7XG59XG5cbmNvbnN0IHBhcnNlUDJzaFAycGs6IElucHV0UGFyc2VyPFBhcnNlZFNpZ25hdHVyZVNjcmlwdFAyc2hQMnBrPiA9IChwKSA9PiB7XG4gIGlmICghaXNMZWdhY3kocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIGxlZ2FjeSBpbnB1dGApO1xuICB9XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHQocC5zY3JpcHQsIFsnOnNpZ25hdHVyZScsIHsgJzpzY3JpcHQnOiBbJzpwdWJrZXknLCAnT1BfQ0hFQ0tTSUcnXSB9XSk7XG4gIGlmIChtYXRjaCBpbnN0YW5jZW9mIE1hdGNoRXJyb3IpIHtcbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JpcHRUeXBlOiAncDJzaFAycGsnLFxuICAgIHB1YmxpY0tleXM6IG1hdGNoWyc6c2NyaXB0J11bMF0ubWF0Y2hbJzpwdWJrZXknXSBhcyBbQnVmZmVyXSxcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFtCdWZmZXJdLFxuICB9O1xufTtcblxuZnVuY3Rpb24gcGFyc2VQMm1zKFxuICBkZWNTY3JpcHQ6IERlY29tcGlsZWRTY3JpcHQsXG4gIHBhcmFtczogUGljazxQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzLCAnc2NyaXB0VHlwZSc+XG4pOiBQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzIHwgTWF0Y2hFcnJvciB7XG4gIGNvbnN0IHBhdHRlcm4yT2YzOiBTY3JpcHRQYXR0ZXJuRWxlbWVudFtdID0gWydPUF8yJywgJzpwdWJrZXknLCAnOnB1YmtleScsICc6cHVia2V5JywgJ09QXzMnLCAnT1BfQ0hFQ0tNVUxUSVNJRyddO1xuXG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hTY3JpcHRTb21lKGRlY1NjcmlwdCwgW1xuICAgIC8qIGZ1bGwtc2lnbmVkLCBubyBwbGFjZWhvbGRlciBzaWduYXR1cmUgKi9cbiAgICBbJ09QXzAnLCAnOnNpZ25hdHVyZScsICc6c2lnbmF0dXJlJywgeyAnOnNjcmlwdCc6IHBhdHRlcm4yT2YzIH1dLFxuICAgIC8qIGhhbGYtc2lnbmVkLCBwbGFjZWhvbGRlciBzaWduYXR1cmVzICovXG4gICAgWydPUF8wJywgJzpzaWduYXR1cmUnLCAnOnNpZ25hdHVyZScsICc6c2lnbmF0dXJlJywgeyAnOnNjcmlwdCc6IHBhdHRlcm4yT2YzIH1dLFxuICBdKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuXG4gIGNvbnN0IFtyZWRlZW1TY3JpcHRdID0gbWF0Y2hbJzpzY3JpcHQnXTtcblxuICBpZiAoIWlzVHJpcGxlKHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdWJrZXkgY291bnRgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ucGFyYW1zLFxuICAgIHB1YmxpY0tleXM6IHJlZGVlbVNjcmlwdC5tYXRjaFsnOnB1YmtleSddLFxuICAgIHB1YlNjcmlwdDogcmVkZWVtU2NyaXB0LmJ1ZmZlcixcbiAgICBzaWduYXR1cmVzOiBtYXRjaFsnOnNpZ25hdHVyZSddIGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjNbJ3NpZ25hdHVyZXMnXSxcbiAgfTtcbn1cblxuY29uc3QgcGFyc2VQMnNoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMz4gPSAocCkgPT4ge1xuICBpZiAoIWlzTGVnYWN5KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBsZWdhY3kgaW5wdXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAuc2NyaXB0LCB7XG4gICAgc2NyaXB0VHlwZTogJ3Ayc2gnLFxuICB9KTtcbn07XG5cbmNvbnN0IHBhcnNlUDJzaFAyd3NoMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0Mk9mMz4gPSAocCkgPT4ge1xuICBpZiAoIWlzV3JhcHBlZFNlZ3dpdChwKSkge1xuICAgIHJldHVybiBuZXcgTWF0Y2hFcnJvcihgZXhwZWN0ZWQgd3JhcHBlZCBzZWd3aXQgaW5wdXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAud2l0bmVzcywge1xuICAgIHNjcmlwdFR5cGU6ICdwMnNoUDJ3c2gnLFxuICB9KTtcbn07XG5cbmNvbnN0IHBhcnNlUDJ3c2gyT2YzOiBJbnB1dFBhcnNlcjxQYXJzZWRTaWduYXR1cmVTY3JpcHQyT2YzPiA9IChwKSA9PiB7XG4gIGlmICghaXNOYXRpdmVTZWd3aXQocCkpIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoRXJyb3IoYGV4cGVjdGVkIG5hdGl2ZSBzZWd3aXRgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VQMm1zKHAud2l0bmVzcywge1xuICAgIHNjcmlwdFR5cGU6ICdwMndzaCcsXG4gIH0pO1xufTtcblxuY29uc3QgcGFyc2VQMnRyMk9mMzogSW5wdXRQYXJzZXI8UGFyc2VkU2lnbmF0dXJlU2NyaXB0VGFwcm9vdD4gPSAocCkgPT4ge1xuICBpZiAoIWlzTmF0aXZlU2Vnd2l0KHApKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaEVycm9yKGBleHBlY3RlZCBuYXRpdmUgc2Vnd2l0YCk7XG4gIH1cbiAgLy8gYXNzdW1lcyBubyBhbm5leFxuICBjb25zdCBtYXRjaCA9IG1hdGNoU2NyaXB0KHAud2l0bmVzcywgW1xuICAgICc6c2lnbmF0dXJlJyxcbiAgICAnOnNpZ25hdHVyZScsXG4gICAgeyAnOnNjcmlwdCc6IFsnOnB1YmtleS14b25seScsICdPUF9DSEVDS1NJR1ZFUklGWScsICc6cHVia2V5LXhvbmx5JywgJ09QX0NIRUNLU0lHJ10gfSxcbiAgICAnOmNvbnRyb2wtYmxvY2snLFxuICBdKTtcbiAgaWYgKG1hdGNoIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuICBjb25zdCBbY29udHJvbEJsb2NrXSA9IG1hdGNoWyc6Y29udHJvbC1ibG9jayddO1xuICBjb25zdCBzY3JpcHRQYXRoTGV2ZWwgPSBjb250cm9sQmxvY2subGVuZ3RoID09PSA2NSA/IDEgOiBjb250cm9sQmxvY2subGVuZ3RoID09PSA5NyA/IDIgOiB1bmRlZmluZWQ7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHNjcmlwdFBhdGhMZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGNvbnRyb2wgYmxvY2sgbGVuZ3RoICR7Y29udHJvbEJsb2NrLmxlbmd0aH1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NyaXB0VHlwZTogJ3AydHInLFxuICAgIHB1YlNjcmlwdDogbWF0Y2hbJzpzY3JpcHQnXVswXS5idWZmZXIsXG4gICAgcHVibGljS2V5czogbWF0Y2hbJzpzY3JpcHQnXVswXS5tYXRjaFsnOnB1YmtleS14b25seSddIGFzIFtCdWZmZXIsIEJ1ZmZlcl0sXG4gICAgc2lnbmF0dXJlczogbWF0Y2hbJzpzaWduYXR1cmUnXSBhcyBbQnVmZmVyLCBCdWZmZXJdLFxuICAgIGNvbnRyb2xCbG9jayxcbiAgICBzY3JpcHRQYXRoTGV2ZWwsXG4gICAgbGVhZlZlcnNpb246IGNvbnRyb2xCbG9ja1swXSAmIDB4ZmUsXG4gIH07XG59O1xuXG4vKipcbiAqIFBhcnNlIGEgdHJhbnNhY3Rpb24ncyBzaWduYXR1cmUgc2NyaXB0IHRvIG9idGFpbiBwdWJsaWMga2V5cywgc2lnbmF0dXJlcywgdGhlIHNpZyBzY3JpcHQsXG4gKiBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAqXG4gKiBPbmx5IHN1cHBvcnRzIHNjcmlwdCB0eXBlcyB1c2VkIGluIEJpdEdvIHRyYW5zYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqIEByZXR1cm5zIFBhcnNlZFNpZ25hdHVyZVNjcmlwdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaWduYXR1cmVTY3JpcHQoXG4gIGlucHV0OiBUeElucHV0XG4pOiBQYXJzZWRTaWduYXR1cmVTY3JpcHRQMnNoUDJwayB8IFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290IHtcbiAgY29uc3QgZGVjU2NyaXB0ID0gYnNjcmlwdC5kZWNvbXBpbGUoaW5wdXQuc2NyaXB0KTtcbiAgY29uc3QgcGFyc2VycyA9IFtwYXJzZVAyc2gyT2YzLCBwYXJzZVAyc2hQMndzaDJPZjMsIHBhcnNlUDJ3c2gyT2YzLCBwYXJzZVAydHIyT2YzLCBwYXJzZVAyc2hQMnBrXSBhcyBjb25zdDtcbiAgZm9yIChjb25zdCBmIG9mIHBhcnNlcnMpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBmKHtcbiAgICAgIHNjcmlwdDogZGVjU2NyaXB0Py5sZW5ndGggPT09IDAgPyBudWxsIDogZGVjU2NyaXB0LFxuICAgICAgd2l0bmVzczogaW5wdXQud2l0bmVzcy5sZW5ndGggPT09IDAgPyBudWxsIDogaW5wdXQud2l0bmVzcyxcbiAgICB9KTtcbiAgICBpZiAocGFyc2VkIGluc3RhbmNlb2YgTWF0Y2hFcnJvcikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgcGFyc2UgaW5wdXRgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dDogVHhJbnB1dCk6IFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290IHtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VTaWduYXR1cmVTY3JpcHQoaW5wdXQpIGFzIFBhcnNlZFNpZ25hdHVyZVNjcmlwdDJPZjMgfCBQYXJzZWRTaWduYXR1cmVTY3JpcHRUYXByb290O1xuXG4gIGlmICghcmVzdWx0LnNpZ25hdHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3Npbmcgc2lnbmF0dXJlc2ApO1xuICB9XG4gIGlmIChyZXN1bHQucHVibGljS2V5cy5sZW5ndGggIT09IDMgJiYgKHJlc3VsdC5wdWJsaWNLZXlzLmxlbmd0aCAhPT0gMiB8fCByZXN1bHQuc2NyaXB0VHlwZSAhPT0gJ3AydHInKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBwdWJrZXkgY291bnRgKTtcbiAgfVxuICBpZiAoIXJlc3VsdC5wdWJTY3JpcHQgfHwgcmVzdWx0LnB1YlNjcmlwdC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHB1YlNjcmlwdCBtaXNzaW5nIG9yIGVtcHR5YCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19 |
@@ -7,3 +7,2 @@ "use strict"; | ||
const outputScripts_1 = require("./outputScripts"); | ||
const __1 = require("../"); | ||
const networks_1 = require("../networks"); | ||
@@ -52,3 +51,3 @@ const noble_ecc_1 = require("../noble_ecc"); | ||
} | ||
if (parsedScript.inputClassification === __1.classify.types.P2TR) { | ||
if (parsedScript.scriptType === 'p2tr') { | ||
if (verificationSettings.signatureIndex !== undefined) { | ||
@@ -81,3 +80,3 @@ throw new Error(`signatureIndex parameter not supported for p2tr`); | ||
const { signature, hashType } = bitcoinjs_lib_1.ScriptSignature.decode(signatureBuffer); | ||
const transactionHash = parsedScript.isSegwitInput | ||
const transactionHash = parsedScript.scriptType === 'p2shP2wsh' || parsedScript.scriptType === 'p2wsh' | ||
? transaction.hashForWitnessV0(inputIndex, parsedScript.pubScript, amount, hashType) | ||
@@ -211,2 +210,2 @@ : transaction.hashForSignatureByNetwork(inputIndex, parsedScript.pubScript, amount, hashType); | ||
exports.signInput2Of3 = signInput2Of3; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFBZ0Y7QUFFaEYsdURBQW9EO0FBRXBELG1EQU15QjtBQUV6QiwyQkFBK0I7QUFDL0IsMENBQTREO0FBQzVELDRDQUE2QztBQUM3Qyw2Q0FBd0Q7QUEwQnhEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLHlCQUF5QixDQUN2QyxXQUFxQyxFQUNyQyxVQUFrQixFQUNsQixNQUFlLEVBQ2YsdUJBQTZDLEVBQUUsRUFDL0MsV0FBaUM7SUFFakMsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztLQUN4QztJQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDOUUsaUNBQWlDO1FBQ2pDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxNQUFNLFlBQVksR0FBRyxxQ0FBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVTtTQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQzVCLE1BQU0sQ0FBQyxD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UUFDTCxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLHNDQUFzQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ2pGO0lBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBRXBDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDYixHQUFHO1FBQ0gsaUJBQWlCO1FBQ2pCLE9BQU87UUFDUCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQWtCLEVBQUUsVUFBVSxDQUFDO1FBQ3JFLFlBQVk7UUFDWixhQUFhO1FBQ2IsWUFBWSxFQUFFLE1BQU07UUFDcEIsWUFBWTtLQUNiLENBQUMsQ0FBQztBQUNMLENBQUM7QUFoQ0Qsc0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uLCB0YXByb290LCBUeE91dHB1dCwgU2NyaXB0U2lnbmF0dXJlIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyxcbiAgY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGssXG4gIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0cixcbiAgU2NyaXB0VHlwZTJPZjMsXG4gIHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZSxcbn0gZnJvbSAnLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY2xhc3NpZnkgfSBmcm9tICcuLi8nO1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCwgTmV0d29yaywgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBlY2MgYXMgZWNjTGliIH0gZnJvbSAnLi4vbm9ibGVfZWNjJztcbmltcG9ydCB7IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyB9IGZyb20gJy4vcGFyc2VJbnB1dCc7XG5cbi8qKlxuICogQ29uc3RyYWludHMgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25zLlxuICogUGFyYW1ldGVycyBhcmUgY29uanVuY3RpdmU6IGlmIG11bHRpcGxlIHBhcmFtZXRlcnMgYXJlIHNldCwgYSB2ZXJpZmljYXRpb24gZm9yIGFuIGluZGl2aWR1YWxcbiAqIHNpZ25hdHVyZSBtdXN0IHNhdGlzZnkgYWxsIG9mIHRoZW0uXG4gKi9cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvblNldHRpbmdzID0ge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LiBPbmx5IGl0ZXJhdGVzIG92ZXIgbm9uLWVtcHR5IHNpZ25hdHVyZXMuXG4gICAqL1xuICBzaWduYXR1cmVJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeS5cbiAgICovXG4gIHB1YmxpY0tleT86IEJ1ZmZlcjtcbn07XG5cbi8qKlxuICogUmVzdWx0IGZvciBhIGluZGl2aWR1YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICovXG5leHBvcnQgdHlwZSBTaWduYXR1cmVWZXJpZmljYXRpb24gPSB7XG4gIC8qKiBTZXQgdG8gdGhlIHB1YmxpYyBrZXkgdGhhdCBzaWduZWQgZm9yIHRoZSBzaWduYXR1cmUgKi9cbiAgc2lnbmVkQnk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgLSB1c2Uge0BzZWUgdmVyaWZ5U2lnbmF0dXJlc1dpdGhQdWJsaWNLZXlzfSBpbnN0ZWFkXG4gKiBHZXQgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbnMgZm9yIG11bHRzaWcgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGlucHV0SW5kZXhcbiAqIEBwYXJhbSBhbW91bnQgLSBtdXN0IGJlIHNldCBmb3Igc2Vnd2l0IHRyYW5zYWN0aW9ucyBhbmQgQklQMTQzIHRyYW5zYWN0aW9uc1xuICogQHBhcmFtIHZlcmlmaWNhdGlvblNldHRpbmdzXG4gKiBAcGFyYW0gcHJldk91dHB1dHMgLSBtdXN0IGJlIHNldCBmb3IgcDJ0ciB0cmFuc2FjdGlvbnNcbiAqIEByZXR1cm5zIFNpZ25hdHVyZVZlcmlmaWNhdGlvbltdIC0gaW4gb3JkZXIgb2YgcGFyc2VkIG5vbi1lbXB0eSBzaWduYXR1cmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIGFtb3VudDogVE51bWJlcixcbiAgdmVyaWZpY2F0aW9uU2V0dGluZ3M6IFZlcmlmaWNhdGlvblNldHRpbmdzID0ge30sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXQ8VE51bWJlcj5bXVxuKTogU2lnbmF0dXJlVmVyaWZpY2F0aW9uW10ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIXRyYW5zYWN0aW9uLmlucykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbmApO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSB0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghaW5wdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlucHV0IGF0IGluZGV4ICR7aW5wdXRJbmRleH1gKTtcbiAgfVxuXG4gIGlmICgoIWlucHV0LnNjcmlwdCB8fCBpbnB1dC5zY3JpcHQubGVuZ3RoID09PSAwKSAmJiBpbnB1dC53aXRuZXNzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFVuc2lnbmVkIGlucHV0OiBubyBzaWduYXR1cmVzLlxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFNjcmlwdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dCk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHBhcnNlZFNjcmlwdC5zaWduYXR1cmVzXG4gICAgLmZpbHRlcigocykgPT4gcyAmJiBzLmxlbmd0aClcbiAgICAuZmlsdGVyKChzLCBpKSA9PiB2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHZlcmlmaWNhdGlvblNldHRpbmdzLnNpZ25hdHVyZUluZGV4ID09PSBpKTtcblxuICBjb25zdCBwdWJsaWNLZXlzID0gcGFyc2VkU2NyaXB0LnB1YmxpY0tleXMuZmlsdGVyKFxuICAgIChidWYpID0+XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyhidWYpIHx8XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuc2xpY2UoMSkuZXF1YWxzKGJ1ZilcbiAgKTtcblxuICByZXR1cm4gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZUJ1ZmZlcikgPT4ge1xuICAgIGlmIChzaWduYXR1cmVCdWZmZXIgPT09IDAgfHwgc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGxldCBoYXNoVHlwZSA9IFRyYW5zYWN0aW9uLlNJR0hBU0hfREVGQVVMVDtcblxuICAgIGlmIChzaWduYXR1cmVCdWZmZXIubGVuZ3RoID09PSA2NSkge1xuICAgICAgaGFzaFR5cGUgPSBzaWduYXR1cmVCdWZmZXJbc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgc2lnbmF0dXJlQnVmZmVyID0gc2lnbmF0dXJlQnVmZmVyLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkU2NyaXB0LmlucHV0Q2xhc3NpZmljYXRpb24gPT09IGNsYXNzaWZ5LnR5cGVzLlAyVFIpIHtcbiAgICAgIGlmICh2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmF0dXJlSW5kZXggcGFyYW1ldGVyIG5vdCBzdXBwb3J0ZWQgZm9yIHAydHJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIG5vdCBzZXRgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZPdXRwdXRzLmxlbmd0aCAhPT0gdHJhbnNhY3Rpb24uaW5zLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXZPdXRwdXRzIGxlbmd0aCAke3ByZXZPdXRwdXRzLmxlbmd0aH0sIGV4cGVjdGVkICR7dHJhbnNhY3Rpb24uaW5zLmxlbmd0aH1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEoJ2NvbnRyb2xCbG9jaycgaW4gcGFyc2VkU2NyaXB0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIGNvbnRyb2xCbG9jaycpO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBjb250cm9sQmxvY2ssIHB1YlNjcmlwdCB9ID0gcGFyc2VkU2NyaXB0O1xuICAgICAgY29uc3QgbGVhZkhhc2ggPSB0YXByb290LmdldFRhcGxlYWZIYXNoKGVjY0xpYiwgY29udHJvbEJsb2NrLCBwdWJTY3JpcHQpO1xuICAgICAgY29uc3Qgc2lnbmF0dXJlSGFzaCA9IHRyYW5zYWN0aW9uLmhhc2hGb3JXaXRuZXNzVjEoXG4gICAgICAgIGlucHV0SW5kZXgsXG4gICAgICAgIHByZXZPdXRwdXRzLm1hcCgoeyBzY3JpcHQgfSkgPT4gc2NyaXB0KSxcbiAgICAgICAgcHJldk91dHB1dHMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgICAgaGFzaFR5cGUsXG4gICAgICAgIGxlYWZIYXNoXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzaWduZWRCeSA9IHB1YmxpY0tleXMuZmlsdGVyKFxuICAgICAgICAoaykgPT4gQnVmZmVyLmlzQnVmZmVyKHNpZ25hdHVyZUJ1ZmZlcikgJiYgZWNjTGliLnZlcmlmeVNjaG5vcnIoc2lnbmF0dXJlSGFzaCwgaywgc2lnbmF0dXJlQnVmZmVyKVxuICAgICAgKTtcblxuICAgICAgaWYgKHNpZ25lZEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4geyBzaWduZWRCeTogdW5kZWZpbmVkIH07XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmVkQnkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7IHNpZ25lZEJ5OiBzaWduZWRCeVswXSB9O1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbGxlZ2FsIHN0YXRlOiBzaWduZWQgYnkgbXVsdGlwbGUgcHVibGljIGtleXNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2xpY2UgdGhlIGxhc3QgYnl0ZSBmcm9tIHRoZSBzaWduYXR1cmUgaGFzaCBpbnB1dCBiZWNhdXNlIGl0J3MgdGhlIGhhc2ggdHlwZVxuICAgICAgY29uc3QgeyBzaWduYXR1cmUsIGhhc2hUeXBlIH0gPSBTY3JpcHRTaWduYXR1cmUuZGVjb2RlKHNpZ25hdHVyZUJ1ZmZlcik7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbkhhc2ggPSBwYXJzZWRTY3JpcHQuaXNTZWd3aXRJbnB1dFxuICAgICAgICA/IHRyYW5zYWN0aW9uLmhhc2hGb3JXaXRuZXNzVjAoaW5wdXRJbmRleCwgcGFyc2VkU2NyaXB0LnB1YlNjcmlwdCwgYW1vdW50LCBoYXNoVHlwZSlcbiAgICAgICAgOiB0cmFuc2FjdGlvbi5oYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKGlucHV0SW5kZXgsIHBhcnNlZFNjcmlwdC5wdWJTY3JpcHQsIGFtb3VudCwgaGFzaFR5cGUpO1xuICAgICAgY29uc3Qgc2lnbmVkQnkgPSBwdWJsaWNLZXlzLmZpbHRlcigocHVibGljS2V5KSA9PlxuICAgICAgICBlY2NMaWIudmVyaWZ5KFxuICAgICAgICAgIHRyYW5zYWN0aW9uSGFzaCxcbiAgICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgIC8qXG4gICAgICAgICAgICBTdHJpY3QgdmVyaWZpY2F0aW9uIChyZXF1aXJlIGxvd2VyLVMgdmFsdWUpLCBhcyByZXF1aXJlZCBieSBCSVAtMDE0NlxuICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDE0Ni5tZWRpYXdpa2lcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luLWNvcmUvc2VjcDI1NmsxL2Jsb2IvYWM4M2JlMzMvaW5jbHVkZS9zZWNwMjU2azEuaCNMNDc4LUw1MDhcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvdGlueS1zZWNwMjU2azEvYmxvYi92MS4xLjYvanMuanMjTDIzMS1MMjMzXG4gICAgICAgICAgKi9cbiAgICAgICAgICB0cnVlXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgICAgfVxuICAgICAgaWYgKHNpZ25lZEJ5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4geyBzaWduZWRCeTogc2lnbmVkQnlbMF0gfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaWxsZWdhbCBzdGF0ZTogc2lnbmVkIGJ5IG11bHRpcGxlIHB1YmxpYyBrZXlzYCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BzZWUgdmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleXN9IGluc3RlYWRcbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGlucHV0SW5kZXhcbiAqIEBwYXJhbSBhbW91bnRcbiAqIEBwYXJhbSB2ZXJpZmljYXRpb25TZXR0aW5ncyAtIGlmIHB1YmxpY0tleSBpcyBzcGVjaWZpZWQsIHJldHVybnMgdHJ1ZSBpZmYgYW55IHNpZ25hdHVyZSBpcyBzaWduZWQgYnkgcHVibGljS2V5LlxuICogQHBhcmFtIHByZXZPdXRwdXRzIC0gbXVzdCBiZSBzZXQgZm9yIHAydHIgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmU8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHRyYW5zYWN0aW9uOiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgYW1vdW50OiBUTnVtYmVyLFxuICB2ZXJpZmljYXRpb25TZXR0aW5nczogVmVyaWZpY2F0aW9uU2V0dGluZ3MgPSB7fSxcbiAgcHJldk91dHB1dHM/OiBUeE91dHB1dDxUTnVtYmVyPltdXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgc2lnbmF0dXJlVmVyaWZpY2F0aW9ucyA9IGdldFNpZ25hdHVyZVZlcmlmaWNhdGlvbnMoXG4gICAgdHJhbnNhY3Rpb24sXG4gICAgaW5wdXRJbmRleCxcbiAgICBhbW91bnQsXG4gICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MsXG4gICAgcHJldk91dHB1dHNcbiAgKS5maWx0ZXIoXG4gICAgKHYpID0+XG4gICAgICAvLyBJZiBubyBwdWJsaWNLZXkgaXMgc2V0IGluIHZlcmlmaWNhdGlvblNldHRpbmdzLCBhbGwgc2lnbmF0dXJlcyBtdXN0IGJlIHZhbGlkLlxuICAgICAgLy8gT3RoZXJ3aXNlLCBhIHNpbmdsZSB2YWxpZCBzaWduYXR1cmUgYnkgdGhlIHNwZWNpZmllZCBwdWJrZXkgaXMgc3VmZmljaWVudC5cbiAgICAgIHZlcmlmaWNhdGlvblNldHRpbmdzLnB1YmxpY0tleSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAodi5zaWduZWRCeSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuZXF1YWxzKHYuc2lnbmVkQnkpIHx8XG4gICAgICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LnNsaWNlKDEpLmVxdWFscyh2LnNpZ25lZEJ5KSkpXG4gICk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZVZlcmlmaWNhdGlvbnMubGVuZ3RoID4gMCAmJiBzaWduYXR1cmVWZXJpZmljYXRpb25zLmV2ZXJ5KCh2KSA9PiB2LnNpZ25lZEJ5ICE9PSB1bmRlZmluZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB2XG4gKiBAcGFyYW0gcHVibGljS2V5XG4gKiBAcmV0dXJuIHRydWUgaWZmIHNpZ25hdHVyZSBpcyBieSBwdWJsaWNLZXkgKG9yIHhvbmx5IHZhcmlhbnQgb2YgcHVibGljS2V5KVxuICovXG5mdW5jdGlvbiBpc1NpZ25hdHVyZUJ5UHVibGljS2V5KHY6IFNpZ25hdHVyZVZlcmlmaWNhdGlvbiwgcHVibGljS2V5OiBCdWZmZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXYuc2lnbmVkQnkgJiZcbiAgICAodi5zaWduZWRCeS5lcXVhbHMocHVibGljS2V5KSB8fFxuICAgICAgLyogZm9yIHAydHIgc2lnbmF0dXJlcywgd2UgcGFzcyB0aGUgcHVia2V5IGluIDMzLWJ5dGUgZm9ybWF0IHJlY292ZXIgaXQgZnJvbSB0aGUgc2lnbmF0dXJlIGluIDMyLWJ5dGUgZm9ybWF0ICovXG4gICAgICAocHVibGljS2V5Lmxlbmd0aCA9PT0gMzMgJiYgaXNTaWduYXR1cmVCeVB1YmxpY0tleSh2LCBwdWJsaWNLZXkuc2xpY2UoMSkpKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBpbnB1dEluZGV4XG4gKiBAcGFyYW0gcHJldk91dHB1dHMgLSB0cmFuc2FjdGlvbiBvdXRwdXRzIGZvciBpbnB1dHNcbiAqIEBwYXJhbSBwdWJsaWNLZXlzIC0gcHVibGljIGtleXMgdG8gY2hlY2sgc2lnbmF0dXJlcyBmb3JcbiAqIEByZXR1cm4gYXJyYXkgb2YgYm9vbGVhbnMgaW5kaWNhdGluZyBhIHZhbGlkIHNpZ25hdHVyZSBmb3IgZXZlcnkgcHVia2V5IGluIF9wdWJsaWNLZXlzX1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleXM8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHRyYW5zYWN0aW9uOiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgcHJldk91dHB1dHM6IFR4T3V0cHV0PFROdW1iZXI+W10sXG4gIHB1YmxpY0tleXM6IEJ1ZmZlcltdXG4pOiBib29sZWFuW10ge1xuICBpZiAodHJhbnNhY3Rpb24uaW5zLmxlbmd0aCAhPT0gcHJldk91dHB1dHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnB1dCBsZW5ndGggbXVzdCBtYXRjaCBwcmV2T3V0cHV0cyBsZW5ndGhgKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25hdHVyZVZlcmlmaWNhdGlvbnMgPSBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIGlucHV0SW5kZXgsXG4gICAgcHJldk91dHB1dHNbaW5wdXRJbmRleF0udmFsdWUsXG4gICAge30sXG4gICAgcHJldk91dHB1dHNcbiAgKTtcblxuICByZXR1cm4gcHVibGljS2V5cy5tYXAoKHB1YmxpY0tleSkgPT4gISFzaWduYXR1cmVWZXJpZmljYXRpb25zLmZpbmQoKHYpID0+IGlzU2lnbmF0dXJlQnlQdWJsaWNLZXkodiwgcHVibGljS2V5KSkpO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgZm9yIHtAc2VlIHZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXlzfSBmb3Igc2luZ2xlIHB1YmtleVxuICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gaW5wdXRJbmRleFxuICogQHBhcmFtIHByZXZPdXRwdXRzXG4gKiBAcGFyYW0gcHVibGljS2V5XG4gKiBAcmV0dXJuIHRydWUgaWZmIHNpZ25hdHVyZSBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleTxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHJhbnNhY3Rpb246IFV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICBwcmV2T3V0cHV0czogVHhPdXRwdXQ8VE51bWJlcj5bXSxcbiAgcHVibGljS2V5OiBCdWZmZXJcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gdmVyaWZ5U2lnbmF0dXJlV2l0aFB1YmxpY0tleXModHJhbnNhY3Rpb24sIGlucHV0SW5kZXgsIHByZXZPdXRwdXRzLCBbcHVibGljS2V5XSlbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0U2lnSGFzaChuZXR3b3JrOiBOZXR3b3JrLCBzY3JpcHRUeXBlPzogU2NyaXB0VHlwZTJPZjMpOiBudW1iZXIge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb24uU0lHSEFTSF9BTEwgfCBVdHhvVHJhbnNhY3Rpb24uU0lHSEFTSF9GT1JLSUQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzY3JpcHRUeXBlID09PSAncDJ0cicgPyBUcmFuc2FjdGlvbi5TSUdIQVNIX0RFRkFVTFQgOiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FMTDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbklucHV0UDJzaFAycGs8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4QnVpbGRlcjogVXR4b1RyYW5zYWN0aW9uQnVpbGRlcjxUTnVtYmVyPixcbiAgdmluOiBudW1iZXIsXG4gIGtleVBhaXI6IEJJUDMySW50ZXJmYWNlXG4pOiB2b2lkIHtcbiAgY29uc3QgcHJldk91dFNjcmlwdFR5cGUgPSAncDJzaC1wMnBrJztcbiAgY29uc3QgeyByZWRlZW1TY3JpcHQsIHdpdG5lc3NTY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrKGtleVBhaXIucHVibGljS2V5KTtcbiAga2V5UGFpci5uZXR3b3JrID0gdHhCdWlsZGVyLm5ldHdvcms7XG5cbiAgdHhCdWlsZGVyLnNpZ24oe1xuICAgIHZpbixcbiAgICBwcmV2T3V0U2NyaXB0VHlwZSxcbiAgICBrZXlQYWlyLFxuICAgIGhhc2hUeXBlOiBnZXREZWZhdWx0U2lnSGFzaCh0eEJ1aWxkZXIubmV0d29yayBhcyBOZXR3b3JrKSxcbiAgICByZWRlZW1TY3JpcHQsXG4gICAgd2l0bmVzc1NjcmlwdCxcbiAgICB3aXRuZXNzVmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduSW5wdXQyT2YzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eEJ1aWxkZXI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHZpbjogbnVtYmVyLFxuICBzY3JpcHRUeXBlOiBTY3JpcHRUeXBlMk9mMyxcbiAgcHVia2V5czogVHJpcGxlPEJ1ZmZlcj4sXG4gIGtleVBhaXI6IEJJUDMySW50ZXJmYWNlLFxuICBjb3NpZ25lcjogQnVmZmVyLFxuICBhbW91bnQ6IFROdW1iZXJcbik6IHZvaWQge1xuICBsZXQgY29udHJvbEJsb2NrO1xuICBsZXQgcmVkZWVtU2NyaXB0O1xuICBsZXQgd2l0bmVzc1NjcmlwdDtcblxuICBjb25zdCBwcmV2T3V0U2NyaXB0VHlwZSA9IHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZShzY3JpcHRUeXBlKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJykge1xuICAgICh7IHdpdG5lc3NTY3JpcHQsIGNvbnRyb2xCbG9jayB9ID0gY3JlYXRlU3BlbmRTY3JpcHRQMnRyKHB1YmtleXMsIFtrZXlQYWlyLnB1YmxpY0tleSwgY29zaWduZXJdKSk7XG4gIH0gZWxzZSB7XG4gICAgKHsgcmVkZWVtU2NyaXB0LCB3aXRuZXNzU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHB1YmtleXMsIHNjcmlwdFR5cGUpKTtcbiAgfVxuXG4gIGtleVBhaXIubmV0d29yayA9IHR4QnVpbGRlci5uZXR3b3JrO1xuXG4gIHR4QnVpbGRlci5zaWduKHtcbiAgICB2aW4sXG4gICAgcHJldk91dFNjcmlwdFR5cGUsXG4gICAga2V5UGFpcixcbiAgICBoYXNoVHlwZTogZ2V0RGVmYXVsdFNpZ0hhc2godHhCdWlsZGVyLm5ldHdvcmsgYXMgTmV0d29yaywgc2NyaXB0VHlwZSksXG4gICAgcmVkZWVtU2NyaXB0LFxuICAgIHdpdG5lc3NTY3JpcHQsXG4gICAgd2l0bmVzc1ZhbHVlOiBhbW91bnQsXG4gICAgY29udHJvbEJsb2NrLFxuICB9KTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFBZ0Y7QUFFaEYsdURBQW9EO0FBRXBELG1EQU15QjtBQUV6QiwwQ0FBNEQ7QUFDNUQsNENBQTZDO0FBQzdDLDZDQUF3RDtBQTBCeEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQ3ZDLFdBQXFDLEVBQ3JDLFVBQWtCLEVBQ2xCLE1BQWUsRUFDZix1QkFBNkMsRUFBRSxFQUMvQyxXQUFpQztJQUVqQywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFVBQVUsRUFBRSxDQUFDLENBQUM7S0FDcEQ7SUFFRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM5RSxpQ0FBaUM7UUFDakMsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE1BQU0sWUFBWSxHQUFHLHFDQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVO1NBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFF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O1NBQU07UUFDTCxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLHNDQUFzQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ2pGO0lBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBRXBDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDYixHQUFHO1FBQ0gsaUJBQWlCO1FBQ2pCLE9BQU87UUFDUCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQWtCLEVBQUUsVUFBVSxDQUFDO1FBQ3JFLFlBQVk7UUFDWixhQUFhO1FBQ2IsWUFBWSxFQUFFLE1BQU07UUFDcEIsWUFBWTtLQUNiLENBQUMsQ0FBQztBQUNMLENBQUM7QUFoQ0Qsc0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uLCB0YXByb290LCBUeE91dHB1dCwgU2NyaXB0U2lnbmF0dXJlIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyxcbiAgY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGssXG4gIGNyZWF0ZVNwZW5kU2NyaXB0UDJ0cixcbiAgU2NyaXB0VHlwZTJPZjMsXG4gIHNjcmlwdFR5cGUyT2YzQXNQcmV2T3V0VHlwZSxcbn0gZnJvbSAnLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCwgTmV0d29yaywgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBlY2MgYXMgZWNjTGliIH0gZnJvbSAnLi4vbm9ibGVfZWNjJztcbmltcG9ydCB7IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyB9IGZyb20gJy4vcGFyc2VJbnB1dCc7XG5cbi8qKlxuICogQ29uc3RyYWludHMgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25zLlxuICogUGFyYW1ldGVycyBhcmUgY29uanVuY3RpdmU6IGlmIG11bHRpcGxlIHBhcmFtZXRlcnMgYXJlIHNldCwgYSB2ZXJpZmljYXRpb24gZm9yIGFuIGluZGl2aWR1YWxcbiAqIHNpZ25hdHVyZSBtdXN0IHNhdGlzZnkgYWxsIG9mIHRoZW0uXG4gKi9cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvblNldHRpbmdzID0ge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LiBPbmx5IGl0ZXJhdGVzIG92ZXIgbm9uLWVtcHR5IHNpZ25hdHVyZXMuXG4gICAqL1xuICBzaWduYXR1cmVJbmRleD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeS5cbiAgICovXG4gIHB1YmxpY0tleT86IEJ1ZmZlcjtcbn07XG5cbi8qKlxuICogUmVzdWx0IGZvciBhIGluZGl2aWR1YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICovXG5leHBvcnQgdHlwZSBTaWduYXR1cmVWZXJpZmljYXRpb24gPSB7XG4gIC8qKiBTZXQgdG8gdGhlIHB1YmxpYyBrZXkgdGhhdCBzaWduZWQgZm9yIHRoZSBzaWduYXR1cmUgKi9cbiAgc2lnbmVkQnk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgLSB1c2Uge0BzZWUgdmVyaWZ5U2lnbmF0dXJlc1dpdGhQdWJsaWNLZXlzfSBpbnN0ZWFkXG4gKiBHZXQgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbnMgZm9yIG11bHRzaWcgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGlucHV0SW5kZXhcbiAqIEBwYXJhbSBhbW91bnQgLSBtdXN0IGJlIHNldCBmb3Igc2Vnd2l0IHRyYW5zYWN0aW9ucyBhbmQgQklQMTQzIHRyYW5zYWN0aW9uc1xuICogQHBhcmFtIHZlcmlmaWNhdGlvblNldHRpbmdzXG4gKiBAcGFyYW0gcHJldk91dHB1dHMgLSBtdXN0IGJlIHNldCBmb3IgcDJ0ciB0cmFuc2FjdGlvbnNcbiAqIEByZXR1cm5zIFNpZ25hdHVyZVZlcmlmaWNhdGlvbltdIC0gaW4gb3JkZXIgb2YgcGFyc2VkIG5vbi1lbXB0eSBzaWduYXR1cmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIGFtb3VudDogVE51bWJlcixcbiAgdmVyaWZpY2F0aW9uU2V0dGluZ3M6IFZlcmlmaWNhdGlvblNldHRpbmdzID0ge30sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXQ8VE51bWJlcj5bXVxuKTogU2lnbmF0dXJlVmVyaWZpY2F0aW9uW10ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIXRyYW5zYWN0aW9uLmlucykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbmApO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSB0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghaW5wdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGlucHV0IGF0IGluZGV4ICR7aW5wdXRJbmRleH1gKTtcbiAgfVxuXG4gIGlmICgoIWlucHV0LnNjcmlwdCB8fCBpbnB1dC5zY3JpcHQubGVuZ3RoID09PSAwKSAmJiBpbnB1dC53aXRuZXNzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFVuc2lnbmVkIGlucHV0OiBubyBzaWduYXR1cmVzLlxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFNjcmlwdCA9IHBhcnNlU2lnbmF0dXJlU2NyaXB0Mk9mMyhpbnB1dCk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHBhcnNlZFNjcmlwdC5zaWduYXR1cmVzXG4gICAgLmZpbHRlcigocykgPT4gcyAmJiBzLmxlbmd0aClcbiAgICAuZmlsdGVyKChzLCBpKSA9PiB2ZXJpZmljYXRpb25TZXR0aW5ncy5zaWduYXR1cmVJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHZlcmlmaWNhdGlvblNldHRpbmdzLnNpZ25hdHVyZUluZGV4ID09PSBpKTtcblxuICBjb25zdCBwdWJsaWNLZXlzID0gcGFyc2VkU2NyaXB0LnB1YmxpY0tleXMuZmlsdGVyKFxuICAgIChidWYpID0+XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyhidWYpIHx8XG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkuc2xpY2UoMSkuZXF1YWxzKGJ1ZilcbiAgKTtcblxuICByZXR1cm4gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZUJ1ZmZlcikgPT4ge1xuICAgIGlmIChzaWduYXR1cmVCdWZmZXIgPT09IDAgfHwgc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGxldCBoYXNoVHlwZSA9IFRyYW5zYWN0aW9uLlNJR0hBU0hfREVGQVVMVDtcblxuICAgIGlmIChzaWduYXR1cmVCdWZmZXIubGVuZ3RoID09PSA2NSkge1xuICAgICAgaGFzaFR5cGUgPSBzaWduYXR1cmVCdWZmZXJbc2lnbmF0dXJlQnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgc2lnbmF0dXJlQnVmZmVyID0gc2lnbmF0dXJlQnVmZmVyLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkU2NyaXB0LnNjcmlwdFR5cGUgPT09ICdwMnRyJykge1xuICAgICAgaWYgKHZlcmlmaWNhdGlvblNldHRpbmdzLnNpZ25hdHVyZUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduYXR1cmVJbmRleCBwYXJhbWV0ZXIgbm90IHN1cHBvcnRlZCBmb3IgcDJ0cmApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXByZXZPdXRwdXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJldk91dHB1dHMgbm90IHNldGApO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldk91dHB1dHMubGVuZ3RoICE9PSB0cmFuc2FjdGlvbi5pbnMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJldk91dHB1dHMgbGVuZ3RoICR7cHJldk91dHB1dHMubGVuZ3RofSwgZXhwZWN0ZWQgJHt0cmFuc2FjdGlvbi5pbnMubGVuZ3RofWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoISgnY29udHJvbEJsb2NrJyBpbiBwYXJzZWRTY3JpcHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgY29udHJvbEJsb2NrJyk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IGNvbnRyb2xCbG9jaywgcHViU2NyaXB0IH0gPSBwYXJzZWRTY3JpcHQ7XG4gICAgICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBjb250cm9sQmxvY2ssIHB1YlNjcmlwdCk7XG4gICAgICBjb25zdCBzaWduYXR1cmVIYXNoID0gdHJhbnNhY3Rpb24uaGFzaEZvcldpdG5lc3NWMShcbiAgICAgICAgaW5wdXRJbmRleCxcbiAgICAgICAgcHJldk91dHB1dHMubWFwKCh7IHNjcmlwdCB9KSA9PiBzY3JpcHQpLFxuICAgICAgICBwcmV2T3V0cHV0cy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLFxuICAgICAgICBoYXNoVHlwZSxcbiAgICAgICAgbGVhZkhhc2hcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gcHVibGljS2V5cy5maWx0ZXIoXG4gICAgICAgIChrKSA9PiBCdWZmZXIuaXNCdWZmZXIoc2lnbmF0dXJlQnVmZmVyKSAmJiBlY2NMaWIudmVyaWZ5U2Nobm9ycihzaWduYXR1cmVIYXNoLCBrLCBzaWduYXR1cmVCdWZmZXIpXG4gICAgICApO1xuXG4gICAgICBpZiAoc2lnbmVkQnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IHNpZ25lZEJ5OiB1bmRlZmluZWQgfTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHNpZ25lZEJ5WzBdIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgc3RhdGU6IHNpZ25lZCBieSBtdWx0aXBsZSBwdWJsaWMga2V5c2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzbGljZSB0aGUgbGFzdCBieXRlIGZyb20gdGhlIHNpZ25hdHVyZSBoYXNoIGlucHV0IGJlY2F1c2UgaXQncyB0aGUgaGFzaCB0eXBlXG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSwgaGFzaFR5cGUgfSA9IFNjcmlwdFNpZ25hdHVyZS5kZWNvZGUoc2lnbmF0dXJlQnVmZmVyKTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uSGFzaCA9XG4gICAgICAgIHBhcnNlZFNjcmlwdC5zY3JpcHRUeXBlID09PSAncDJzaFAyd3NoJyB8fCBwYXJzZWRTY3JpcHQuc2NyaXB0VHlwZSA9PT0gJ3Ayd3NoJ1xuICAgICAgICAgID8gdHJhbnNhY3Rpb24uaGFzaEZvcldpdG5lc3NWMChpbnB1dEluZGV4LCBwYXJzZWRTY3JpcHQucHViU2NyaXB0LCBhbW91bnQsIGhhc2hUeXBlKVxuICAgICAgICAgIDogdHJhbnNhY3Rpb24uaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhpbnB1dEluZGV4LCBwYXJzZWRTY3JpcHQucHViU2NyaXB0LCBhbW91bnQsIGhhc2hUeXBlKTtcbiAgICAgIGNvbnN0IHNpZ25lZEJ5ID0gcHVibGljS2V5cy5maWx0ZXIoKHB1YmxpY0tleSkgPT5cbiAgICAgICAgZWNjTGliLnZlcmlmeShcbiAgICAgICAgICB0cmFuc2FjdGlvbkhhc2gsXG4gICAgICAgICAgcHVibGljS2V5LFxuICAgICAgICAgIHNpZ25hdHVyZSxcbiAgICAgICAgICAvKlxuICAgICAgICAgICAgU3RyaWN0IHZlcmlmaWNhdGlvbiAocmVxdWlyZSBsb3dlci1TIHZhbHVlKSwgYXMgcmVxdWlyZWQgYnkgQklQLTAxNDZcbiAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAxNDYubWVkaWF3aWtpXG4gICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi1jb3JlL3NlY3AyNTZrMS9ibG9iL2FjODNiZTMzL2luY2x1ZGUvc2VjcDI1NmsxLmgjTDQ3OC1MNTA4XG4gICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL3Rpbnktc2VjcDI1NmsxL2Jsb2IvdjEuMS42L2pzLmpzI0wyMzEtTDIzM1xuICAgICAgICAgICovXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBpZiAoc2lnbmVkQnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IHNpZ25lZEJ5OiB1bmRlZmluZWQgfTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWduZWRCeS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHsgc2lnbmVkQnk6IHNpZ25lZEJ5WzBdIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgc3RhdGU6IHNpZ25lZCBieSBtdWx0aXBsZSBwdWJsaWMga2V5c2ApO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAc2VlIHZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXlzfSBpbnN0ZWFkXG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBpbnB1dEluZGV4XG4gKiBAcGFyYW0gYW1vdW50XG4gKiBAcGFyYW0gdmVyaWZpY2F0aW9uU2V0dGluZ3MgLSBpZiBwdWJsaWNLZXkgaXMgc3BlY2lmaWVkLCByZXR1cm5zIHRydWUgaWZmIGFueSBzaWduYXR1cmUgaXMgc2lnbmVkIGJ5IHB1YmxpY0tleS5cbiAqIEBwYXJhbSBwcmV2T3V0cHV0cyAtIG11c3QgYmUgc2V0IGZvciBwMnRyIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIGFtb3VudDogVE51bWJlcixcbiAgdmVyaWZpY2F0aW9uU2V0dGluZ3M6IFZlcmlmaWNhdGlvblNldHRpbmdzID0ge30sXG4gIHByZXZPdXRwdXRzPzogVHhPdXRwdXQ8VE51bWJlcj5bXVxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNpZ25hdHVyZVZlcmlmaWNhdGlvbnMgPSBnZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIGlucHV0SW5kZXgsXG4gICAgYW1vdW50LFxuICAgIHZlcmlmaWNhdGlvblNldHRpbmdzLFxuICAgIHByZXZPdXRwdXRzXG4gICkuZmlsdGVyKFxuICAgICh2KSA9PlxuICAgICAgLy8gSWYgbm8gcHVibGljS2V5IGlzIHNldCBpbiB2ZXJpZmljYXRpb25TZXR0aW5ncywgYWxsIHNpZ25hdHVyZXMgbXVzdCBiZSB2YWxpZC5cbiAgICAgIC8vIE90aGVyd2lzZSwgYSBzaW5nbGUgdmFsaWQgc2lnbmF0dXJlIGJ5IHRoZSBzcGVjaWZpZWQgcHVia2V5IGlzIHN1ZmZpY2llbnQuXG4gICAgICB2ZXJpZmljYXRpb25TZXR0aW5ncy5wdWJsaWNLZXkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgKHYuc2lnbmVkQnkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAodmVyaWZpY2F0aW9uU2V0dGluZ3MucHVibGljS2V5LmVxdWFscyh2LnNpZ25lZEJ5KSB8fFxuICAgICAgICAgIHZlcmlmaWNhdGlvblNldHRpbmdzLnB1YmxpY0tleS5zbGljZSgxKS5lcXVhbHModi5zaWduZWRCeSkpKVxuICApO1xuXG4gIHJldHVybiBzaWduYXR1cmVWZXJpZmljYXRpb25zLmxlbmd0aCA+IDAgJiYgc2lnbmF0dXJlVmVyaWZpY2F0aW9ucy5ldmVyeSgodikgPT4gdi5zaWduZWRCeSAhPT0gdW5kZWZpbmVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gdlxuICogQHBhcmFtIHB1YmxpY0tleVxuICogQHJldHVybiB0cnVlIGlmZiBzaWduYXR1cmUgaXMgYnkgcHVibGljS2V5IChvciB4b25seSB2YXJpYW50IG9mIHB1YmxpY0tleSlcbiAqL1xuZnVuY3Rpb24gaXNTaWduYXR1cmVCeVB1YmxpY0tleSh2OiBTaWduYXR1cmVWZXJpZmljYXRpb24sIHB1YmxpY0tleTogQnVmZmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgISF2LnNpZ25lZEJ5ICYmXG4gICAgKHYuc2lnbmVkQnkuZXF1YWxzKHB1YmxpY0tleSkgfHxcbiAgICAgIC8qIGZvciBwMnRyIHNpZ25hdHVyZXMsIHdlIHBhc3MgdGhlIHB1YmtleSBpbiAzMy1ieXRlIGZvcm1hdCByZWNvdmVyIGl0IGZyb20gdGhlIHNpZ25hdHVyZSBpbiAzMi1ieXRlIGZvcm1hdCAqL1xuICAgICAgKHB1YmxpY0tleS5sZW5ndGggPT09IDMzICYmIGlzU2lnbmF0dXJlQnlQdWJsaWNLZXkodiwgcHVibGljS2V5LnNsaWNlKDEpKSkpXG4gICk7XG59XG5cbi8qKlxuICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gaW5wdXRJbmRleFxuICogQHBhcmFtIHByZXZPdXRwdXRzIC0gdHJhbnNhY3Rpb24gb3V0cHV0cyBmb3IgaW5wdXRzXG4gKiBAcGFyYW0gcHVibGljS2V5cyAtIHB1YmxpYyBrZXlzIHRvIGNoZWNrIHNpZ25hdHVyZXMgZm9yXG4gKiBAcmV0dXJuIGFycmF5IG9mIGJvb2xlYW5zIGluZGljYXRpbmcgYSB2YWxpZCBzaWduYXR1cmUgZm9yIGV2ZXJ5IHB1YmtleSBpbiBfcHVibGljS2V5c19cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXlzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0cmFuc2FjdGlvbjogVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBpbnB1dEluZGV4OiBudW1iZXIsXG4gIHByZXZPdXRwdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdLFxuICBwdWJsaWNLZXlzOiBCdWZmZXJbXVxuKTogYm9vbGVhbltdIHtcbiAgaWYgKHRyYW5zYWN0aW9uLmlucy5sZW5ndGggIT09IHByZXZPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW5wdXQgbGVuZ3RoIG11c3QgbWF0Y2ggcHJldk91dHB1dHMgbGVuZ3RoYCk7XG4gIH1cblxuICBjb25zdCBzaWduYXR1cmVWZXJpZmljYXRpb25zID0gZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyhcbiAgICB0cmFuc2FjdGlvbixcbiAgICBpbnB1dEluZGV4LFxuICAgIHByZXZPdXRwdXRzW2lucHV0SW5kZXhdLnZhbHVlLFxuICAgIHt9LFxuICAgIHByZXZPdXRwdXRzXG4gICk7XG5cbiAgcmV0dXJuIHB1YmxpY0tleXMubWFwKChwdWJsaWNLZXkpID0+ICEhc2lnbmF0dXJlVmVyaWZpY2F0aW9ucy5maW5kKCh2KSA9PiBpc1NpZ25hdHVyZUJ5UHVibGljS2V5KHYsIHB1YmxpY0tleSkpKTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB7QHNlZSB2ZXJpZnlTaWduYXR1cmVXaXRoUHVibGljS2V5c30gZm9yIHNpbmdsZSBwdWJrZXlcbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGlucHV0SW5kZXhcbiAqIEBwYXJhbSBwcmV2T3V0cHV0c1xuICogQHBhcmFtIHB1YmxpY0tleVxuICogQHJldHVybiB0cnVlIGlmZiBzaWduYXR1cmUgaXMgdmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXk8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHRyYW5zYWN0aW9uOiBVdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgcHJldk91dHB1dHM6IFR4T3V0cHV0PFROdW1iZXI+W10sXG4gIHB1YmxpY0tleTogQnVmZmVyXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHZlcmlmeVNpZ25hdHVyZVdpdGhQdWJsaWNLZXlzKHRyYW5zYWN0aW9uLCBpbnB1dEluZGV4LCBwcmV2T3V0cHV0cywgW3B1YmxpY0tleV0pWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNpZ0hhc2gobmV0d29yazogTmV0d29yaywgc2NyaXB0VHlwZT86IFNjcmlwdFR5cGUyT2YzKTogbnVtYmVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uLlNJR0hBU0hfQUxMIHwgVXR4b1RyYW5zYWN0aW9uLlNJR0hBU0hfRk9SS0lEO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gVHJhbnNhY3Rpb24uU0lHSEFTSF9ERUZBVUxUIDogVHJhbnNhY3Rpb24uU0lHSEFTSF9BTEw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25JbnB1dFAyc2hQMnBrPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eEJ1aWxkZXI6IFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXI8VE51bWJlcj4sXG4gIHZpbjogbnVtYmVyLFxuICBrZXlQYWlyOiBCSVAzMkludGVyZmFjZVxuKTogdm9pZCB7XG4gIGNvbnN0IHByZXZPdXRTY3JpcHRUeXBlID0gJ3Ayc2gtcDJwayc7XG4gIGNvbnN0IHsgcmVkZWVtU2NyaXB0LCB3aXRuZXNzU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhrZXlQYWlyLnB1YmxpY0tleSk7XG4gIGtleVBhaXIubmV0d29yayA9IHR4QnVpbGRlci5uZXR3b3JrO1xuXG4gIHR4QnVpbGRlci5zaWduKHtcbiAgICB2aW4sXG4gICAgcHJldk91dFNjcmlwdFR5cGUsXG4gICAga2V5UGFpcixcbiAgICBoYXNoVHlwZTogZ2V0RGVmYXVsdFNpZ0hhc2godHhCdWlsZGVyLm5ldHdvcmsgYXMgTmV0d29yayksXG4gICAgcmVkZWVtU2NyaXB0LFxuICAgIHdpdG5lc3NTY3JpcHQsXG4gICAgd2l0bmVzc1ZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbklucHV0Mk9mMzxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHhCdWlsZGVyOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyPFROdW1iZXI+LFxuICB2aW46IG51bWJlcixcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTJPZjMsXG4gIHB1YmtleXM6IFRyaXBsZTxCdWZmZXI+LFxuICBrZXlQYWlyOiBCSVAzMkludGVyZmFjZSxcbiAgY29zaWduZXI6IEJ1ZmZlcixcbiAgYW1vdW50OiBUTnVtYmVyXG4pOiB2b2lkIHtcbiAgbGV0IGNvbnRyb2xCbG9jaztcbiAgbGV0IHJlZGVlbVNjcmlwdDtcbiAgbGV0IHdpdG5lc3NTY3JpcHQ7XG5cbiAgY29uc3QgcHJldk91dFNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlMk9mM0FzUHJldk91dFR5cGUoc2NyaXB0VHlwZSk7XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicpIHtcbiAgICAoeyB3aXRuZXNzU2NyaXB0LCBjb250cm9sQmxvY2sgfSA9IGNyZWF0ZVNwZW5kU2NyaXB0UDJ0cihwdWJrZXlzLCBba2V5UGFpci5wdWJsaWNLZXksIGNvc2lnbmVyXSkpO1xuICB9IGVsc2Uge1xuICAgICh7IHJlZGVlbVNjcmlwdCwgd2l0bmVzc1NjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhwdWJrZXlzLCBzY3JpcHRUeXBlKSk7XG4gIH1cblxuICBrZXlQYWlyLm5ldHdvcmsgPSB0eEJ1aWxkZXIubmV0d29yaztcblxuICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgdmluLFxuICAgIHByZXZPdXRTY3JpcHRUeXBlLFxuICAgIGtleVBhaXIsXG4gICAgaGFzaFR5cGU6IGdldERlZmF1bHRTaWdIYXNoKHR4QnVpbGRlci5uZXR3b3JrIGFzIE5ldHdvcmssIHNjcmlwdFR5cGUpLFxuICAgIHJlZGVlbVNjcmlwdCxcbiAgICB3aXRuZXNzU2NyaXB0LFxuICAgIHdpdG5lc3NWYWx1ZTogYW1vdW50LFxuICAgIGNvbnRyb2xCbG9jayxcbiAgfSk7XG59XG4iXX0= |
{ | ||
"name": "@bitgo-beta/utxo-lib", | ||
"version": "2.4.2-beta.66", | ||
"version": "2.4.2-beta.67", | ||
"description": "Client-side Bitcoin JavaScript library", | ||
@@ -49,3 +49,3 @@ "main": "./dist/src/index.js", | ||
"dependencies": { | ||
"@bitgo-beta/blake2b": "3.0.4-beta.66", | ||
"@bitgo-beta/blake2b": "3.0.4-beta.67", | ||
"@noble/secp256k1": "1.6.3", | ||
@@ -85,3 +85,3 @@ "bip174": "npm:@bitgo/bip174@3.0.0", | ||
"license": "MIT", | ||
"gitHead": "d7e54ac84becaba22f48818704964dcc76ec5853" | ||
"gitHead": "691028a59b83799092a1c40f4d188e80ce2442ec" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
927093
7300
+ Added@bitgo-beta/blake2b@3.0.4-beta.67(transitive)
+ Added@bitgo-beta/blake2b-wasm@3.0.4-beta.67(transitive)
- Removed@bitgo-beta/blake2b@3.0.4-beta.66(transitive)
- Removed@bitgo-beta/blake2b-wasm@3.0.4-beta.66(transitive)