Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@bitgo/utxo-lib

Package Overview
Dependencies
Maintainers
7
Versions
171
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bitgo/utxo-lib - npm Package Compare versions

Comparing version 2.2.2 to 2.3.0-dev.0

dist/src/bitgo/bitcoincash/index.d.ts

8

dist/src/addressFormat.js

@@ -12,3 +12,3 @@ "use strict";

const address_1 = require("./address");
const bcashAddress = require("./bitgo/bitcoincash/address");
const bitgo_1 = require("./bitgo");
exports.addressFormats = ['default', 'cashaddr'];

@@ -42,3 +42,3 @@ /**

case networks_1.networks.bitcoincash:
return bcashAddress.fromOutputScriptWithFormat(outputScript, format, network);
return bitgo_1.bcashAddress.fromOutputScriptWithFormat(outputScript, format, network);
default:

@@ -61,3 +61,3 @@ return address_1.fromOutputScript(outputScript, network);

case networks_1.networks.bitcoincash:
return bcashAddress.toOutputScriptWithFormat(address, format, network);
return bitgo_1.bcashAddress.toOutputScriptWithFormat(address, format, network);
default:

@@ -111,2 +111,2 @@ return address_1.toOutputScript(address, network);

exports.toCanonicalFormat = toCanonicalFormat;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0Zvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGRyZXNzRm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7OztHQUtHO0FBQ0gseUNBQTJFO0FBQzNFLHVDQUE2RDtBQUU3RCw0REFBNEQ7QUFFL0MsUUFBQSxjQUFjLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFJL0Q7Ozs7R0FJRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE1BQXFCLEVBQUUsT0FBZ0I7SUFDOUUsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLFNBQVM7WUFDWixPQUFPLElBQUksQ0FBQztRQUNkLEtBQUssVUFBVTtZQUNiLE9BQU8scUJBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztLQUN2RDtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQVJELDREQVFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxZQUFvQixFQUFFLE1BQXFCLEVBQUUsT0FBZ0I7SUFDdEcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLGdCQUFnQix5QkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNoRztJQUVELFFBQVEscUJBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixLQUFLLG1CQUFRLENBQUMsV0FBVztZQUN2QixPQUFPLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGO1lBQ0UsT0FBTywwQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBWEQsZ0VBV0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE9BQWUsRUFBRSxNQUFxQixFQUFFLE9BQWdCO0lBQy9GLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsTUFBTSxnQkFBZ0IseUJBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDaEc7SUFFRCxRQUFRLHFCQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsS0FBSyxtQkFBUSxDQUFDLFdBQVc7WUFDdkIsT0FBTyxZQUFZLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RTtZQUNFLE9BQU8sd0JBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDM0M7QUFDSCxDQUFDO0FBWEQsNERBV0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsT0FBZSxFQUNmLE9BQWdCLEVBQ2hCLE9BQXlCO0lBRXpCLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLEdBQUcsc0JBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQzlFO0lBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDNUIsSUFBSTtZQUNGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixXQUFXO1NBQ1o7S0FDRjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQWxCRCwwREFrQkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUFlLEVBQUUsT0FBZ0IsRUFBRSxPQUF5QjtJQUNuRyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFIRCw0REFHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsT0FBZ0I7SUFDakUsT0FBTywwQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUZELDhDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbXBsZW1lbnRzIG1ldGhvZHMgZm9yIG5vbnN0YW5kYXJkIChub24tY2Fub25pY2FsKSBhZGRyZXNzIGZvcm1hdHMuXG4gKlxuICogVXNlIGB0b091dHB1dFNjcmlwdFRyeUZvcm1hdHMoKWAgaW5zdGVhZCBvZiBgdG9PdXRwdXRTY3JpcHQoKWAgdG8gcGFyc2UgYWRkcmVzc2VzIGluXG4gKiBub24tY2Fub25pY2FsIGZvcm1hdHNcbiAqL1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCwgZ2V0TmV0d29ya05hbWUsIE5ldHdvcmssIG5ldHdvcmtzIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBmcm9tT3V0cHV0U2NyaXB0LCB0b091dHB1dFNjcmlwdCB9IGZyb20gJy4vYWRkcmVzcyc7XG5cbmltcG9ydCAqIGFzIGJjYXNoQWRkcmVzcyBmcm9tICcuL2JpdGdvL2JpdGNvaW5jYXNoL2FkZHJlc3MnO1xuXG5leHBvcnQgY29uc3QgYWRkcmVzc0Zvcm1hdHMgPSBbJ2RlZmF1bHQnLCAnY2FzaGFkZHInXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWRkcmVzc0Zvcm1hdCA9IHR5cGVvZiBhZGRyZXNzRm9ybWF0c1tudW1iZXJdO1xuXG4vKipcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJuIHRydWUgaWZmIGZvcm1hdCBpcyBzdXBwb3J0ZWQgZm9yIG5ldHdvcmtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VwcG9ydGVkQWRkcmVzc0Zvcm1hdChmb3JtYXQ6IEFkZHJlc3NGb3JtYXQsIG5ldHdvcms6IE5ldHdvcmspOiBib29sZWFuIHtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNhc2UgJ2Nhc2hhZGRyJzpcbiAgICAgIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy5iaXRjb2luY2FzaDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gYWRkcmVzcyBmb3JtYXQgJHtmb3JtYXR9YCk7XG59XG5cbi8qKlxuICogQHBhcmFtIG91dHB1dFNjcmlwdFxuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4gYWRkcmVzcyBmb3JtYXR0ZWQgdXNpbmcgcHJvdmlkZWQgQWRkcmVzc0Zvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbU91dHB1dFNjcmlwdFdpdGhGb3JtYXQob3V0cHV0U2NyaXB0OiBCdWZmZXIsIGZvcm1hdDogQWRkcmVzc0Zvcm1hdCwgbmV0d29yazogTmV0d29yayk6IHN0cmluZyB7XG4gIGlmICghaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGZvcm1hdCwgbmV0d29yaykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGFkZHJlc3MgZm9ybWF0ICR7Zm9ybWF0fSBmb3IgbmV0d29yayAke2dldE5ldHdvcmtOYW1lKG5ldHdvcmspfWApO1xuICB9XG5cbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICAgIHJldHVybiBiY2FzaEFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhGb3JtYXQob3V0cHV0U2NyaXB0LCBmb3JtYXQsIG5ldHdvcmspO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZnJvbU91dHB1dFNjcmlwdChvdXRwdXRTY3JpcHQsIG5ldHdvcmspO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJuIG91dHB1dCBzY3JpcHQgcGFyc2VkIHdpdGggcHJvdmlkZWQgQWRkcmVzc0Zvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KGFkZHJlc3M6IHN0cmluZywgZm9ybWF0OiBBZGRyZXNzRm9ybWF0LCBuZXR3b3JrOiBOZXR3b3JrKTogQnVmZmVyIHtcbiAgaWYgKCFpc1N1cHBvcnRlZEFkZHJlc3NGb3JtYXQoZm9ybWF0LCBuZXR3b3JrKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgYWRkcmVzcyBmb3JtYXQgJHtmb3JtYXR9IGZvciBuZXR3b3JrICR7Z2V0TmV0d29ya05hbWUobmV0d29yayl9YCk7XG4gIH1cblxuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgICAgcmV0dXJuIGJjYXNoQWRkcmVzcy50b091dHB1dFNjcmlwdFdpdGhGb3JtYXQoYWRkcmVzcywgZm9ybWF0LCBuZXR3b3JrKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gcGFyc2UgYWRkcmVzcyB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIGZvcm1hdHMsIHJldHVybnMgZmlyc3QgaGl0LlxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcGFyYW0gZm9ybWF0cyAtIGRlZmF1bHRzIHRvIGFsbCBzdXBwb3J0ZWQgYWRkcmVzcyBmb3JtYXRzIGZvciBuZXR3b3JrXG4gKiBAcmV0dXJuIHR1cGxlIHdpdGggW0FkZHJlc3NGb3JtYXQsIEJ1ZmZlcl0gY29udGFpbmluZyBmb3JtYXQgYW5kIHBhcnNlZCBvdXRwdXQgc2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b091dHB1dFNjcmlwdEFuZEZvcm1hdChcbiAgYWRkcmVzczogc3RyaW5nLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICBmb3JtYXRzPzogQWRkcmVzc0Zvcm1hdFtdXG4pOiBbQWRkcmVzc0Zvcm1hdCwgQnVmZmVyXSB7XG4gIGlmICghZm9ybWF0cykge1xuICAgIGZvcm1hdHMgPSBhZGRyZXNzRm9ybWF0cy5maWx0ZXIoKGYpID0+IGlzU3VwcG9ydGVkQWRkcmVzc0Zvcm1hdChmLCBuZXR3b3JrKSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBmb3JtYXRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBbZm9ybWF0LCB0b091dHB1dFNjcmlwdFdpdGhGb3JtYXQoYWRkcmVzcywgZm9ybWF0LCBuZXR3b3JrKV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdHJ5IG5leHRcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCBwYXJzZSBvdXRwdXRTY3JpcHQgW2Zvcm1hdHM9JHtmb3JtYXRzfV1gKTtcbn1cblxuLyoqXG4gKiBTYW1lIGFzIGB0b091dHB1dFNjcmlwdEFuZEZvcm1hdGAsIG9ubHkgcmV0dXJuaW5nIHNjcmlwdFxuICogQHBhcmFtIGFkZHJlc3MgLSB7QHNlZSB0b091dHB1dFNjcmlwdEFuZEZvcm1hdH1cbiAqIEBwYXJhbSBuZXR3b3JrIC0ge0BzZWUgdG9PdXRwdXRTY3JpcHRBbmRGb3JtYXR9XG4gKiBAcGFyYW0gZm9ybWF0cyAtIHtAc2VlIHRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0fVxuICogQHJldHVybiBwYXJzZWQgb3V0cHV0IHNjcmlwdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9PdXRwdXRTY3JpcHRUcnlGb3JtYXRzKGFkZHJlc3M6IHN0cmluZywgbmV0d29yazogTmV0d29yaywgZm9ybWF0cz86IEFkZHJlc3NGb3JtYXRbXSk6IEJ1ZmZlciB7XG4gIGNvbnN0IFssIG91dHB1dFNjcmlwdF0gPSB0b091dHB1dFNjcmlwdEFuZEZvcm1hdChhZGRyZXNzLCBuZXR3b3JrLCBmb3JtYXRzKTtcbiAgcmV0dXJuIG91dHB1dFNjcmlwdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4gYWRkcmVzcyBpbiBjYW5vbmljYWwgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Nhbm9uaWNhbEZvcm1hdChhZGRyZXNzOiBzdHJpbmcsIG5ldHdvcms6IE5ldHdvcmspOiBzdHJpbmcge1xuICByZXR1cm4gZnJvbU91dHB1dFNjcmlwdCh0b091dHB1dFNjcmlwdFRyeUZvcm1hdHMoYWRkcmVzcywgbmV0d29yayksIG5ldHdvcmspO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0Zvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGRyZXNzRm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7OztHQUtHO0FBQ0gseUNBQTJFO0FBQzNFLHVDQUE2RDtBQUU3RCxtQ0FBdUM7QUFFMUIsUUFBQSxjQUFjLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFJL0Q7Ozs7R0FJRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE1BQXFCLEVBQUUsT0FBZ0I7SUFDOUUsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLFNBQVM7WUFDWixPQUFPLElBQUksQ0FBQztRQUNkLEtBQUssVUFBVTtZQUNiLE9BQU8scUJBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztLQUN2RDtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQVJELDREQVFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxZQUFvQixFQUFFLE1BQXFCLEVBQUUsT0FBZ0I7SUFDdEcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLGdCQUFnQix5QkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNoRztJQUVELFFBQVEscUJBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixLQUFLLG1CQUFRLENBQUMsV0FBVztZQUN2QixPQUFPLG9CQUFZLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRjtZQUNFLE9BQU8sMEJBQWdCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQVhELGdFQVdDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUFlLEVBQUUsTUFBcUIsRUFBRSxPQUFnQjtJQUMvRixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLE1BQU0sZ0JBQWdCLHlCQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2hHO0lBRUQsUUFBUSxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssbUJBQVEsQ0FBQyxXQUFXO1lBQ3ZCLE9BQU8sb0JBQVksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFO1lBQ0UsT0FBTyx3QkFBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzQztBQUNILENBQUM7QUFYRCw0REFXQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxPQUFlLEVBQ2YsT0FBZ0IsRUFDaEIsT0FBeUI7SUFFekIsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sR0FBRyxzQkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDOUU7SUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtRQUM1QixJQUFJO1lBQ0YsT0FBTyxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDckU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLFdBQVc7U0FDWjtLQUNGO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBbEJELDBEQWtCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE9BQWUsRUFBRSxPQUFnQixFQUFFLE9BQXlCO0lBQ25HLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUhELDREQUdDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE9BQWUsRUFBRSxPQUFnQjtJQUNqRSxPQUFPLDBCQUFnQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRkQsOENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEltcGxlbWVudHMgbWV0aG9kcyBmb3Igbm9uc3RhbmRhcmQgKG5vbi1jYW5vbmljYWwpIGFkZHJlc3MgZm9ybWF0cy5cbiAqXG4gKiBVc2UgYHRvT3V0cHV0U2NyaXB0VHJ5Rm9ybWF0cygpYCBpbnN0ZWFkIG9mIGB0b091dHB1dFNjcmlwdCgpYCB0byBwYXJzZSBhZGRyZXNzZXMgaW5cbiAqIG5vbi1jYW5vbmljYWwgZm9ybWF0c1xuICovXG5pbXBvcnQgeyBnZXRNYWlubmV0LCBnZXROZXR3b3JrTmFtZSwgTmV0d29yaywgbmV0d29ya3MgfSBmcm9tICcuL25ldHdvcmtzJztcbmltcG9ydCB7IGZyb21PdXRwdXRTY3JpcHQsIHRvT3V0cHV0U2NyaXB0IH0gZnJvbSAnLi9hZGRyZXNzJztcblxuaW1wb3J0IHsgYmNhc2hBZGRyZXNzIH0gZnJvbSAnLi9iaXRnbyc7XG5cbmV4cG9ydCBjb25zdCBhZGRyZXNzRm9ybWF0cyA9IFsnZGVmYXVsdCcsICdjYXNoYWRkciddIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBZGRyZXNzRm9ybWF0ID0gdHlwZW9mIGFkZHJlc3NGb3JtYXRzW251bWJlcl07XG5cbi8qKlxuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgZm9ybWF0IGlzIHN1cHBvcnRlZCBmb3IgbmV0d29ya1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGZvcm1hdDogQWRkcmVzc0Zvcm1hdCwgbmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSAnY2FzaGFkZHInOlxuICAgICAgcmV0dXJuIGdldE1haW5uZXQobmV0d29yaykgPT09IG5ldHdvcmtzLmJpdGNvaW5jYXNoO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBhZGRyZXNzIGZvcm1hdCAke2Zvcm1hdH1gKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gb3V0cHV0U2NyaXB0XG4gKiBAcGFyYW0gZm9ybWF0XG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHJldHVybiBhZGRyZXNzIGZvcm1hdHRlZCB1c2luZyBwcm92aWRlZCBBZGRyZXNzRm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChvdXRwdXRTY3JpcHQ6IEJ1ZmZlciwgZm9ybWF0OiBBZGRyZXNzRm9ybWF0LCBuZXR3b3JrOiBOZXR3b3JrKTogc3RyaW5nIHtcbiAgaWYgKCFpc1N1cHBvcnRlZEFkZHJlc3NGb3JtYXQoZm9ybWF0LCBuZXR3b3JrKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgYWRkcmVzcyBmb3JtYXQgJHtmb3JtYXR9IGZvciBuZXR3b3JrICR7Z2V0TmV0d29ya05hbWUobmV0d29yayl9YCk7XG4gIH1cblxuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgICAgcmV0dXJuIGJjYXNoQWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChvdXRwdXRTY3JpcHQsIGZvcm1hdCwgbmV0d29yayk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmcm9tT3V0cHV0U2NyaXB0KG91dHB1dFNjcmlwdCwgbmV0d29yayk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4gb3V0cHV0IHNjcmlwdCBwYXJzZWQgd2l0aCBwcm92aWRlZCBBZGRyZXNzRm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b091dHB1dFNjcmlwdFdpdGhGb3JtYXQoYWRkcmVzczogc3RyaW5nLCBmb3JtYXQ6IEFkZHJlc3NGb3JtYXQsIG5ldHdvcms6IE5ldHdvcmspOiBCdWZmZXIge1xuICBpZiAoIWlzU3VwcG9ydGVkQWRkcmVzc0Zvcm1hdChmb3JtYXQsIG5ldHdvcmspKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBhZGRyZXNzIGZvcm1hdCAke2Zvcm1hdH0gZm9yIG5ldHdvcmsgJHtnZXROZXR3b3JrTmFtZShuZXR3b3JrKX1gKTtcbiAgfVxuXG4gIHN3aXRjaCAoZ2V0TWFpbm5ldChuZXR3b3JrKSkge1xuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgICByZXR1cm4gYmNhc2hBZGRyZXNzLnRvT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChhZGRyZXNzLCBmb3JtYXQsIG5ldHdvcmspO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdG9PdXRwdXRTY3JpcHQoYWRkcmVzcywgbmV0d29yayk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB0byBwYXJzZSBhZGRyZXNzIHdpdGggZGlmZmVyZW50IGFkZHJlc3MgZm9ybWF0cywgcmV0dXJucyBmaXJzdCBoaXQuXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHBhcmFtIG5ldHdvcmtcbiAqIEBwYXJhbSBmb3JtYXRzIC0gZGVmYXVsdHMgdG8gYWxsIHN1cHBvcnRlZCBhZGRyZXNzIGZvcm1hdHMgZm9yIG5ldHdvcmtcbiAqIEByZXR1cm4gdHVwbGUgd2l0aCBbQWRkcmVzc0Zvcm1hdCwgQnVmZmVyXSBjb250YWluaW5nIGZvcm1hdCBhbmQgcGFyc2VkIG91dHB1dCBzY3JpcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KFxuICBhZGRyZXNzOiBzdHJpbmcsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIGZvcm1hdHM/OiBBZGRyZXNzRm9ybWF0W11cbik6IFtBZGRyZXNzRm9ybWF0LCBCdWZmZXJdIHtcbiAgaWYgKCFmb3JtYXRzKSB7XG4gICAgZm9ybWF0cyA9IGFkZHJlc3NGb3JtYXRzLmZpbHRlcigoZikgPT4gaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGYsIG5ldHdvcmspKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgZm9ybWF0IG9mIGZvcm1hdHMpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIFtmb3JtYXQsIHRvT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChhZGRyZXNzLCBmb3JtYXQsIG5ldHdvcmspXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0cnkgbmV4dFxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHBhcnNlIG91dHB1dFNjcmlwdCBbZm9ybWF0cz0ke2Zvcm1hdHN9XWApO1xufVxuXG4vKipcbiAqIFNhbWUgYXMgYHRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0YCwgb25seSByZXR1cm5pbmcgc2NyaXB0XG4gKiBAcGFyYW0gYWRkcmVzcyAtIHtAc2VlIHRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0fVxuICogQHBhcmFtIG5ldHdvcmsgLSB7QHNlZSB0b091dHB1dFNjcmlwdEFuZEZvcm1hdH1cbiAqIEBwYXJhbSBmb3JtYXRzIC0ge0BzZWUgdG9PdXRwdXRTY3JpcHRBbmRGb3JtYXR9XG4gKiBAcmV0dXJuIHBhcnNlZCBvdXRwdXQgc2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b091dHB1dFNjcmlwdFRyeUZvcm1hdHMoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBOZXR3b3JrLCBmb3JtYXRzPzogQWRkcmVzc0Zvcm1hdFtdKTogQnVmZmVyIHtcbiAgY29uc3QgWywgb3V0cHV0U2NyaXB0XSA9IHRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KGFkZHJlc3MsIG5ldHdvcmssIGZvcm1hdHMpO1xuICByZXR1cm4gb3V0cHV0U2NyaXB0O1xufVxuXG4vKipcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHJldHVybiBhZGRyZXNzIGluIGNhbm9uaWNhbCBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2Fub25pY2FsRm9ybWF0KGFkZHJlc3M6IHN0cmluZywgbmV0d29yazogTmV0d29yayk6IHN0cmluZyB7XG4gIHJldHVybiBmcm9tT3V0cHV0U2NyaXB0KHRvT3V0cHV0U2NyaXB0VHJ5Rm9ybWF0cyhhZGRyZXNzLCBuZXR3b3JrKSwgbmV0d29yayk7XG59XG4iXX0=

@@ -0,13 +1,14 @@

export * as bcashAddress from './bitcoincash';
export * as keyutil from './keyutil';
export * as nonStandardHalfSigned from './nonStandardHalfSigned';
export * as outputScripts from './outputScripts';
export * as nonStandardHalfSigned from './nonStandardHalfSigned';
export * from './dash';
export * from './signature';
export * from './transaction';
export * from './types';
export * from './Unspent';
export * from './UtxoTransaction';
export * from './UtxoTransactionBuilder';
export * from './Unspent';
export * from './wallet';
export * from './zcash';
export * from './dash';
export * from './types';
export * from './wallet';
//# sourceMappingURL=index.d.ts.map

@@ -13,15 +13,16 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.nonStandardHalfSigned = exports.outputScripts = exports.keyutil = void 0;
exports.outputScripts = exports.nonStandardHalfSigned = exports.keyutil = exports.bcashAddress = void 0;
exports.bcashAddress = require("./bitcoincash");
exports.keyutil = require("./keyutil");
exports.nonStandardHalfSigned = require("./nonStandardHalfSigned");
exports.outputScripts = require("./outputScripts");
exports.nonStandardHalfSigned = require("./nonStandardHalfSigned");
__exportStar(require("./dash"), exports);
__exportStar(require("./signature"), exports);
__exportStar(require("./transaction"), exports);
__exportStar(require("./types"), exports);
__exportStar(require("./Unspent"), exports);
__exportStar(require("./UtxoTransaction"), exports);
__exportStar(require("./UtxoTransactionBuilder"), exports);
__exportStar(require("./Unspent"), exports);
__exportStar(require("./wallet"), exports);
__exportStar(require("./zcash"), exports);
__exportStar(require("./dash"), exports);
__exportStar(require("./types"), exports);
__exportStar(require("./wallet"), exports);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUFxQztBQUNyQyxtREFBaUQ7QUFDakQsbUVBQWlFO0FBQ2pFLDhDQUE0QjtBQUM1QixnREFBOEI7QUFDOUIsb0RBQWtDO0FBQ2xDLDJEQUF5QztBQUN6Qyw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMga2V5dXRpbCBmcm9tICcuL2tleXV0aWwnO1xuZXhwb3J0ICogYXMgb3V0cHV0U2NyaXB0cyBmcm9tICcuL291dHB1dFNjcmlwdHMnO1xuZXhwb3J0ICogYXMgbm9uU3RhbmRhcmRIYWxmU2lnbmVkIGZyb20gJy4vbm9uU3RhbmRhcmRIYWxmU2lnbmVkJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vVW5zcGVudCc7XG5leHBvcnQgKiBmcm9tICcuL3pjYXNoJztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vd2FsbGV0JztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QztBQUM5Qyx1Q0FBcUM7QUFDckMsbUVBQWlFO0FBQ2pFLG1EQUFpRDtBQUNqRCx5Q0FBdUI7QUFDdkIsOENBQTRCO0FBQzVCLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsNENBQTBCO0FBQzFCLG9EQUFrQztBQUNsQywyREFBeUM7QUFDekMsMkNBQXlCO0FBQ3pCLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJjYXNoQWRkcmVzcyBmcm9tICcuL2JpdGNvaW5jYXNoJztcbmV4cG9ydCAqIGFzIGtleXV0aWwgZnJvbSAnLi9rZXl1dGlsJztcbmV4cG9ydCAqIGFzIG5vblN0YW5kYXJkSGFsZlNpZ25lZCBmcm9tICcuL25vblN0YW5kYXJkSGFsZlNpZ25lZCc7XG5leHBvcnQgKiBhcyBvdXRwdXRTY3JpcHRzIGZyb20gJy4vb3V0cHV0U2NyaXB0cyc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduYXR1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vVW5zcGVudCc7XG5leHBvcnQgKiBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1V0eG9UcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi96Y2FzaCc7XG4iXX0=

@@ -40,3 +40,3 @@ "use strict";

case networks_1.networks.zcash:
return networks_1.isMainnet(network) ? ZcashTransaction_1.ZcashTransaction.VERSION4_BRANCH_CANOPY : ZcashTransaction_1.ZcashTransaction.VERSION4_BRANCH_NU5;
return ZcashTransaction_1.ZcashTransaction.VERSION4_BRANCH_NU5;
default:

@@ -108,2 +108,2 @@ return 1;

exports.createTransactionBuilderFromTransaction = createTransactionBuilderFromTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMENBQXVFO0FBRXZFLHVEQUFvRDtBQUNwRCxxRUFBa0U7QUFDbEUsNERBQXlEO0FBQ3pELDBFQUF1RTtBQUN2RSw2RUFBMEU7QUFDMUUsK0RBQTBFO0FBRTFFLFNBQWdCLDJCQUEyQixDQUN6QyxHQUFXLEVBQ1gsT0FBZ0IsRUFDaEIsRUFBRSxPQUFPLEtBQTJCLEVBQUU7SUFFdEMsUUFBUSxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssbUJBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssbUJBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxtQkFBUSxDQUFDLFFBQVE7WUFDcEIsT0FBTyxpQ0FBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELEtBQUssbUJBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLG1CQUFRLENBQUMsS0FBSztZQUNqQixPQUFPLG1DQUFnQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxPQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hGO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBcEJELGtFQW9CQztBQUVELDBCQUEwQjtBQUMxQixTQUFnQix3QkFBd0IsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDcEUsT0FBTywyQkFBMkIsQ0FBQyxNQUFN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QU8sQ0FBQztRQUN0QixLQUFLLG1CQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssbUJBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsUUFBUTtZQUNwQixPQUFPLCtDQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzVFLEtBQUssbUJBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sK0NBQXNCLENBQUMsZUFBZSxDQUFDLEVBQXFCLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9GLEtBQUssbUJBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8saURBQXVCLENBQUMsZUFBZSxDQUFDLEVBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2xHO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFsQkQsMEZBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgbmV0d29ya3MsIE5ldHdvcmssIGdldE1haW5uZXQsIGlzTWFpbm5ldCB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hOZXR3b3JrLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihcbiAgYnVmOiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb24ge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46XG4gICAgICByZXR1cm4gVXR4b1RyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmLCBmYWxzZSwgbmV0d29yayk7XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgcmV0dXJuIERhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZiwgZmFsc2UsIG5ldHdvcmspO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6XG4gICAgICByZXR1cm4gWmNhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyV2l0aFZlcnNpb24oYnVmLCBuZXR3b3JrIGFzIFpjYXNoTmV0d29yaywgdmVyc2lvbik7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChoZXg6IHN0cmluZywgbmV0d29yazogTmV0d29yayk6IFV0eG9UcmFuc2FjdGlvbiB7XG4gIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoQnVmZmVyLmZyb20oaGV4LCAnaGV4JyksIG5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFRyYW5zYWN0aW9uVmVyc2lvbihuZXR3b3JrOiBOZXR3b3JrKTogbnVtYmVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgIHJldHVybiBpc01haW5uZXQobmV0d29yaykgPyBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9DQU5PUFkgOiBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc2FjdGlvbkJ1aWxkZXJEZWZhdWx0cyhcbiAgdHhiOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICB7IHZlcnNpb24gPSBnZXREZWZhdWx0VHJhbnNhY3Rpb25WZXJzaW9uKG5ldHdvcmspIH06IHsgdmVyc2lvbj86IG51bWJlciB9ID0ge31cbik6IHZvaWQge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICBpZiAodmVyc2lvbiAhPT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdmVyc2lvbmApO1xuICAgICAgfVxuICAgICAgdHhiLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgKHR4YiBhcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcikuc2V0RGVmYXVsdHNGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh2ZXJzaW9uICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2ZXJzaW9uYCk7XG4gICAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZvck5ldHdvcmsoXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgbGV0IHR4YjtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOiB7XG4gICAgICB0eGIgPSBuZXcgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICB0eGIgPSBuZXcgRGFzaFRyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6IHtcbiAgICAgIHR4YiA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbmV0d29ya2ApO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25CdWlsZGVyRGVmYXVsdHModHhiLCBuZXR3b3JrLCB7IHZlcnNpb24gfSk7XG5cbiAgcmV0dXJuIHR4Yjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbihcbiAgdHg6IFV0eG9UcmFuc2FjdGlvbixcbiAgcHJldk91dHB1dHM/OiBUeE91dHB1dFtdXG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KHR4Lm5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4LCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICByZXR1cm4gRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHggYXMgRGFzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbih0eCBhcyBaY2FzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrYCk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMENBQTREO0FBRTVELHVEQUFvRDtBQUNwRCxxRUFBa0U7QUFDbEUsNERBQXlEO0FBQ3pELDBFQUF1RTtBQUN2RSw2RUFBMEU7QUFDMUUsK0RBQTBFO0FBRTFFLFNBQWdCLDJCQUEyQixDQUN6QyxHQUFXLEVBQ1gsT0FBZ0IsRUFDaEIsRUFBRSxPQUFPLEtBQTJCLEVBQUU7SUFFdEMsUUFBUSxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLEtBQUssbUJBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEIsS0FBSyxtQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3hCLEtBQUssbUJBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUIsS0FBSyxtQkFBUSxDQUFDLFFBQVE7WUFDcEIsT0FBTyxpQ0FBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELEtBQUssbUJBQVEsQ0FBQyxJQUFJO1lBQ2hCLE9BQU8saUNBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLG1CQUFRLENBQUMsS0FBSztZQUNqQixPQUFPLG1DQUFnQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxPQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hGO0lBRUQsMEJBQTBCO0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBcEJELGtFQW9CQztBQUVELDBCQUEwQjtBQUMxQixTQUFnQix3QkFBd0IsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7SUFDcEUsT0FBTywyQkFBMkIsQ0FBQyxNQUFN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QztRQUN4QixLQUFLLG1CQUFRLENBQUMsV0FBVyxDQUFDO1FBQzFCLEtBQUssbUJBQVEsQ0FBQyxRQUFRO1lBQ3BCLE9BQU8sK0NBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsS0FBSyxtQkFBUSxDQUFDLElBQUk7WUFDaEIsT0FBTywrQ0FBc0IsQ0FBQyxlQUFlLENBQUMsRUFBcUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0YsS0FBSyxtQkFBUSxDQUFDLEtBQUs7WUFDakIsT0FBTyxpREFBdUIsQ0FBQyxlQUFlLENBQUMsRUFBc0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDbEc7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQWxCRCwwRkFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeE91dHB1dCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5pbXBvcnQgeyBuZXR3b3JrcywgTmV0d29yaywgZ2V0TWFpbm5ldCB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vVXR4b1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IERhc2hUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2Rhc2gvRGFzaFRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vemNhc2gvWmNhc2hUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgWmNhc2hOZXR3b3JrLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcihcbiAgYnVmOiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb24ge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgbmV0d29ya3MubGl0ZWNvaW46XG4gICAgICByZXR1cm4gVXR4b1RyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmLCBmYWxzZSwgbmV0d29yayk7XG4gICAgY2FzZSBuZXR3b3Jrcy5kYXNoOlxuICAgICAgcmV0dXJuIERhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZiwgZmFsc2UsIG5ldHdvcmspO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6XG4gICAgICByZXR1cm4gWmNhc2hUcmFuc2FjdGlvbi5mcm9tQnVmZmVyV2l0aFZlcnNpb24oYnVmLCBuZXR3b3JrIGFzIFpjYXNoTmV0d29yaywgdmVyc2lvbik7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbmV0d29ya2ApO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChoZXg6IHN0cmluZywgbmV0d29yazogTmV0d29yayk6IFV0eG9UcmFuc2FjdGlvbiB7XG4gIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoQnVmZmVyLmZyb20oaGV4LCAnaGV4JyksIG5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFRyYW5zYWN0aW9uVmVyc2lvbihuZXR3b3JrOiBOZXR3b3JrKTogbnVtYmVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5zdjpcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSBuZXR3b3Jrcy56Y2FzaDpcbiAgICAgIHJldHVybiBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT040X0JSQU5DSF9OVTU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc2FjdGlvbkJ1aWxkZXJEZWZhdWx0cyhcbiAgdHhiOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICB7IHZlcnNpb24gPSBnZXREZWZhdWx0VHJhbnNhY3Rpb25WZXJzaW9uKG5ldHdvcmspIH06IHsgdmVyc2lvbj86IG51bWJlciB9ID0ge31cbik6IHZvaWQge1xuICBzd2l0Y2ggKGdldE1haW5uZXQobmV0d29yaykpIHtcbiAgICBjYXNlIG5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbnN2OlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgICBpZiAodmVyc2lvbiAhPT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdmVyc2lvbmApO1xuICAgICAgfVxuICAgICAgdHhiLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgKHR4YiBhcyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcikuc2V0RGVmYXVsdHNGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh2ZXJzaW9uICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB2ZXJzaW9uYCk7XG4gICAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZvck5ldHdvcmsoXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHsgdmVyc2lvbiB9OiB7IHZlcnNpb24/OiBudW1iZXIgfSA9IHt9XG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgbGV0IHR4YjtcbiAgc3dpdGNoIChnZXRNYWlubmV0KG5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOiB7XG4gICAgICB0eGIgPSBuZXcgVXR4b1RyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICB0eGIgPSBuZXcgRGFzaFRyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbmV0d29ya3MuemNhc2g6IHtcbiAgICAgIHR4YiA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrIGFzIFpjYXNoTmV0d29yayk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbmV0d29ya2ApO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25CdWlsZGVyRGVmYXVsdHModHhiLCBuZXR3b3JrLCB7IHZlcnNpb24gfSk7XG5cbiAgcmV0dXJuIHR4Yjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbihcbiAgdHg6IFV0eG9UcmFuc2FjdGlvbixcbiAgcHJldk91dHB1dHM/OiBUeE91dHB1dFtdXG4pOiBVdHhvVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgc3dpdGNoIChnZXRNYWlubmV0KHR4Lm5ldHdvcmspKSB7XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgbmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgY2FzZSBuZXR3b3Jrcy5iaXRjb2luZ29sZDpcbiAgICBjYXNlIG5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgcmV0dXJuIFV0eG9UcmFuc2FjdGlvbkJ1aWxkZXIuZnJvbVRyYW5zYWN0aW9uKHR4LCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLmRhc2g6XG4gICAgICByZXR1cm4gRGFzaFRyYW5zYWN0aW9uQnVpbGRlci5mcm9tVHJhbnNhY3Rpb24odHggYXMgRGFzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgICBjYXNlIG5ldHdvcmtzLnpjYXNoOlxuICAgICAgcmV0dXJuIFpjYXNoVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbih0eCBhcyBaY2FzaFRyYW5zYWN0aW9uLCB1bmRlZmluZWQsIHByZXZPdXRwdXRzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBuZXR3b3JrYCk7XG59XG4iXX0=

@@ -9,3 +9,2 @@ "use strict";

const typeforce = require('typeforce');
const networks_1 = require("../../networks");
const UtxoTransaction_1 = require("../UtxoTransaction");

@@ -15,9 +14,10 @@ const ZcashBufferutils_1 = require("./ZcashBufferutils");

const ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex');
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L29
// https://github.com/zcash/zcash/blob/v4.7.0/src/primitives/transaction.h#L40
const SAPLING_VERSION_GROUP_ID = 0x892f2085;
// https://github.com/zcash/zcash/blob/v4.7.0/src/primitives/transaction.h#L52
const ZIP225_VERSION_GROUP_ID = 0x26a7270a;
// https://github.com/zcash/zcash/blob/v4.5.1/src/consensus/upgrades.cpp#L11
// https://github.com/zcash/zcash/blob/v4.7.0/src/consensus/upgrades.cpp#L11
const OVERWINTER_BRANCH_ID = 0x5ba81b19;
const CANOPY_BRANCH_ID = 0xe9ff75a6;
const NU5_BRANCH_ID = 0x37519621;
const NU5_BRANCH_ID = 0xc2d6d0b4;
class UnsupportedTransactionError extends Error {

@@ -47,7 +47,6 @@ constructor(message) {

return OVERWINTER_BRANCH_ID;
case 4:
return networks_1.isMainnet(network) ? CANOPY_BRANCH_ID : NU5_BRANCH_ID;
case ZcashTransaction.VERSION4_BRANCH_CANOPY:
// https://zips.z.cash/zip-0251
return CANOPY_BRANCH_ID;
case 4:
case 5:

@@ -340,2 +339,2 @@ case ZcashTransaction.VERSION4_BRANCH_NU5:

ZcashTransaction.VERSION5_BRANCH_NU5 = 500;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFvRDtBQUNwRCxpREFBaUQ7QUFDakQsK0RBQTJFO0FBRTNFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV2Qyw2Q0FBcUQ7QUFDckQsd0RBQW1FO0FBQ25FLHlEQUEwRztBQUMxRywrQ0FBa0Y7QUFFbEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUlwRyw4RUFBOEU7QUFDOUUsTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUM7QUFDNUMsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7QUFFM0MsNEVBQTRFO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFhLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssR0FBRztZQUNOLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxHQUFHO1lBQ04sT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FB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QUksSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDdEIsNkJBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLDZCQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUFvQjtRQUMxQixJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTywyQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxzQkFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7O0FBblVILDRDQW9VQztBQW5VUSwyQ0FBMEIsR0FBRyxDQUFDLENBQUM7QUFDL0IsbUNBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLGdDQUFlLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLHVDQUFzQixHQUFHLEdBQUcsQ0FBQztBQUM3QixvQ0FBbUIsR0FBRyxHQUFHLENBQUM7QUFDMUIsb0NBQW1CLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24sIGNyeXB0byB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyLCBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmNvbnN0IHZhcnVpbnQgPSByZXF1aXJlKCd2YXJ1aW50LWJpdGNvaW4nKTtcbmNvbnN0IHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpO1xuXG5pbXBvcnQgeyBpc01haW5uZXQsIG5ldHdvcmtzIH0gZnJvbSAnLi4vLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgVXR4b1RyYW5zYWN0aW9uLCB2YXJTbGljZVNpemUgfSBmcm9tICcuLi9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgZnJvbUJ1ZmZlclY0LCBmcm9tQnVmZmVyVjUsIHRvQnVmZmVyVjQsIHRvQnVmZmVyVjUsIFZBTFVFX0lOVDY0X1pFUk8gfSBmcm9tICcuL1pjYXNoQnVmZmVydXRpbHMnO1xuaW1wb3J0IHsgZ2V0Qmxha2UyYkhhc2gsIGdldFNpZ25hdHVyZURpZ2VzdCwgZ2V0VHhpZERpZ2VzdCB9IGZyb20gJy4vaGFzaFppcDAyNDQnO1xuXG5jb25zdCBaRVJPID0gQnVmZmVyLmZyb20oJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAnaGV4Jyk7XG5cbmV4cG9ydCB0eXBlIFpjYXNoTmV0d29yayA9IHR5cGVvZiBuZXR3b3Jrcy56Y2FzaCB8IHR5cGVvZiBuZXR3b3Jrcy56Y2FzaFRlc3Q7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wyOVxuY29uc3QgU0FQTElOR19WRVJTSU9OX0dST1VQX0lEID0gMHg4OTJmMjA4NTtcbmNvbnN0IFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEID0gMHgyNmE3MjcwYTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9jb25zZW5zdXMvdXBncmFkZXMuY3BwI0wxMVxuY29uc3QgT1ZFUldJTlRFUl9CUkFOQ0hfSUQgPSAweDViYTgxYjE5O1xuY29uc3QgQ0FOT1BZX0JSQU5DSF9JRCA9IDB4ZTlmZjc1YTY7XG5jb25zdCBOVTVfQlJBTkNIX0lEID0gMHgzNzUxOTYyMTtcblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRWZXJzaW9uR3JvdXBJZEZvclZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgY2FzZSA0MDA6XG4gICAgY2FzZSA0NTA6XG4gICAgICByZXR1cm4gU0FQTElOR19WRVJTSU9OX0dST1VQX0lEO1xuICAgIGNhc2UgNTAwOlxuICAgICAgcmV0dXJuIFpJUDIyNV9WRVJTSU9OX0dST1VQX0lEO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbm8gdmFsdWUgZm9yIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrOiBaY2FzaE5ldHdvcmssIHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gIHN3aXRjaCAodmVyc2lvbikge1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gMDtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gT1ZFUldJTlRFUl9CUkFOQ0hfSUQ7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIGlzTWFpbm5ldChuZXR3b3JrKSA/IENBTk9QWV9CUkFOQ0hfSUQgOiBOVTVfQlJBTkNIX0lEO1xuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZOlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MVxuICAgICAgcmV0dXJuIENBTk9QWV9CUkFOQ0hfSUQ7XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfTlU1OlxuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONV9CUkFOQ0hfTlU1OlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MlxuICAgICAgcmV0dXJuIE5VNV9CUkFOQ0hfSUQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBubyB2YWx1ZSBmb3IgdmVyc2lvbiAke3ZlcnNpb259YCk7XG59XG5cbmV4cG9ydCBjbGFzcyBaY2FzaFRyYW5zYWN0aW9uIGV4dGVuZHMgVXR4b1RyYW5zYWN0aW9uIHtcbiAgc3RhdGljIFZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUID0gMjtcbiAgc3RhdGljIFZFUlNJT05fT1ZFUldJTlRFUiA9IDM7XG4gIHN0YXRpYyBWRVJTSU9OX1NBUExJTkcgPSA0O1xuXG4gIHN0YXRpYyBWRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZID0gNDAwO1xuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX05VNSA9IDQ1MDtcbiAgc3RhdGljIFZFUlNJT041X0JSQU5DSF9OVTUgPSA1MDA7XG5cbiAgLy8gMSBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgcG9zdCBvdmVyd2ludGVyIHVwZ3JhZGUsIDAgb3RoZXJ3aXNlXG4gIG92ZXJ3aW50ZXJlZCA9IDA7XG4gIC8vIDB4MDNDNDgyNzAgKDYzMjEwMDk2KSBmb3Igb3ZlcndpbnRlciBhbmQgMHg4OTJGMjA4NSAoMjMwMTU2NzEwOSkgZm9yIHNhcGxpbmdcbiAgdmVyc2lvbkdyb3VwSWQgPSAwO1xuICAvLyBCbG9jayBoZWlnaHQgYWZ0ZXIgd2hpY2ggdGhpcyB0cmFuc2FjdGlvbnMgd2lsbCBleHBpcmUsIG9yIDAgdG8gZGlzYWJsZSBleHBpcnlcbiAgZXhwaXJ5SGVpZ2h0ID0gMDtcbiAgY29uc2Vuc3VzQnJhbmNoSWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmV0d29yazogWmNhc2hOZXR3b3JrLCB0eD86IFpjYXNoVHJhbnNhY3Rpb24pIHtcbiAgICBzdXBlcihuZXR3b3JrLCB0eCk7XG5cbiAgICBsZXQgY29uc2Vuc3VzQnJhbmNoSWQ7XG4gICAgaWYgKHR4KSB7XG4gICAgICB0aGlzLm92ZXJ3aW50ZXJlZCA9IHR4Lm92ZXJ3aW50ZXJlZDtcbiAgICAgIHRoaXMudmVyc2lvbkdyb3VwSWQgPSB0eC52ZXJzaW9uR3JvdXBJZDtcbiAgICAgIHRoaXMuZXhwaXJ5SGVpZ2h0ID0gdHguZXhwaXJ5SGVpZ2h0O1xuXG4gICAgICBpZiAodHguY29uc2Vuc3VzQnJhbmNoSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zZW5zdXNCcmFuY2hJZCA9IHR4LmNvbnNlbnN1c0JyYW5jaElkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbnNlbnN1c0JyYW5jaElkID0gY29uc2Vuc3VzQnJhbmNoSWQgPz8gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB0aGlzLnZlcnNpb24pO1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXIoYnVmZmVyOiBCdWZmZXIsIF9fbm9TdHJpY3Q6IGJvb2xlYW4sIG5ldHdvcms/OiBaY2FzaE5ldHdvcmspOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgbmV0d29ya2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlclJlYWRlciA9IG5ldyBCdWZmZXJSZWFkZXIoYnVmZmVyKTtcbiAgICBjb25zdCB0eCA9IG5ldyBaY2FzaFRyYW5zYWN0aW9uKG5ldHdvcmspO1xuICAgIHR4LnZlcnNpb24gPSBidWZmZXJSZWFkZXIucmVhZEludDMyKCk7XG5cbiAgICAvLyBTcGxpdCB0aGUgaGVhZGVyIGludG8gZk92ZXJ3aW50ZXJlZCBhbmQgblZlcnNpb25cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMNzcyXG4gICAgdHgub3ZlcndpbnRlcmVkID0gdHgudmVyc2lvbiA+Pj4gMzE7IC8vIE11c3QgYmUgMSBmb3IgdmVyc2lvbiAzIGFuZCB1cFxuICAgIHR4LnZlcnNpb24gPSB0eC52ZXJzaW9uICYgMHgwN2ZmZmZmZmY7IC8vIDMgZm9yIG92ZXJ3aW50ZXJcbiAgICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdHgudmVyc2lvbik7XG5cbiAgICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICB0eC52ZXJzaW9uR3JvdXBJZCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gICAgfVxuXG4gICAgaWYgKHR4LnZlcnNpb24gPT09IDUpIHtcbiAgICAgIGZyb21CdWZmZXJWNShidWZmZXJSZWFkZXIsIHR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbUJ1ZmZlclY0KGJ1ZmZlclJlYWRlciwgdHgpO1xuICAgIH1cblxuICAgIGlmIChfX25vU3RyaWN0KSByZXR1cm4gdHg7XG4gICAgaWYgKGJ1ZmZlclJlYWRlci5vZmZzZXQgIT09IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHRyYWlsaW5nID0gYnVmZmVyLnNsaWNlKGJ1ZmZlclJlYWRlci5vZmZzZXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHRyYWlsaW5nIGJ5dGVzOiAke3RyYWlsaW5nLnRvU3RyaW5nKCdoZXgnKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ1ZmZlcldpdGhWZXJzaW9uKGJ1ZjogQnVmZmVyLCBuZXR3b3JrOiBaY2FzaE5ldHdvcmssIHZlcnNpb24/OiBudW1iZXIpOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IFpjYXNoVHJhbnNhY3Rpb24uZnJvbUJ1ZmZlcihidWYsIGZhbHNlLCBuZXR3b3JrKTtcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHZlcnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICBieXRlTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgbGV0IGJ5dGVMZW5ndGggPSBzdXBlci5ieXRlTGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIG5WZXJzaW9uR3JvdXBJZFxuICAgIH1cbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gbkV4cGlyeUhlaWdodFxuICAgIH1cbiAgICBjb25zdCBlbXB0eVZlY3Rvckxlbmd0aCA9IHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgoMCk7XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgyMlxuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBjb25zZW5zdXNCcmFuY2hJZFxuICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gc2FwbGluZ0J1bmRsZSBpbnB1dHNcbiAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIHNhcGxpbmdCdW5kbGUgb3V0cHV0c1xuICAgICAgYnl0ZUxlbmd0aCArPSAxOyAvLyBvcmNoYXJkQnVuZGxlIChlbXB0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NjJcbiAgICAgICAgYnl0ZUxlbmd0aCArPSA4OyAvLyB2YWx1ZUJhbGFuY2UgKHVpbnQ2NClcbiAgICAgICAgYnl0ZUxlbmd0aCArPSBlbXB0eVZlY3Rvckxlbmd0aDsgLy8gaW5wdXRzXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIG91dHB1dHNcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnN1cHBvcnRzSm9pblNwbGl0cygpKSB7XG4gICAgICAgIC8vXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIGpvaW5zcGxpdHNcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVMZW5ndGg7XG4gIH1cblxuICBpc1NhcGxpbmdDb21wYXRpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fU0FQTElORztcbiAgfVxuXG4gIGlzT3ZlcndpbnRlckNvbXBhdGlibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVyd2ludGVyZWQgJiYgdGhpcy52ZXJzaW9uID49IFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTl9PVkVSV0lOVEVSO1xuICB9XG5cbiAgc3VwcG9ydHNKb2luU3BsaXRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fSk9JTlNQTElUU19TVVBQT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3IgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgLSBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldFByZXZvdXRIYXNoKGhhc2hUeXBlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmICghKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpKSB7XG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSgzNiAqIHRoaXMuaW5zLmxlbmd0aCkpO1xuXG4gICAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLmluZGV4KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoUHJldm91dEhhc2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIFpFUk87XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBoYXNoIGZvciBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb25zIGlucHV0cyBzZXF1ZW5jZSBudW1iZXJzIGRlcGVuZGluZyBvbiB0aGUgaGFzaHR5cGVcbiAgICogQHBhcmFtIGhhc2hUeXBlXG4gICAqIEByZXR1cm5zIEJ1ZmZlciBCTEFLRTJiIGhhc2ggb3IgMjU2LWJpdCB6ZXJvIGlmIGRvZXNuJ3QgYXBwbHlcbiAgICovXG4gIGdldFNlcXVlbmNlSGFzaChoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoXG4gICAgICAhKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpICYmXG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiZcbiAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkVcbiAgICApIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDQgKiB0aGlzLmlucy5sZW5ndGgpKTtcblxuICAgICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaFNlcXVlbmNIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3Igb25lLCBhbGwgb3Igbm9uZSBvZiB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0cyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcGFyYW0gaW5JbmRleFxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRPdXRwdXRzSGFzaChoYXNoVHlwZTogbnVtYmVyLCBpbkluZGV4OiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGlmICgoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiYgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgICAgLy8gRmluZCBvdXQgdGhlIHNpemUgb2YgdGhlIG91dHB1dHMgYW5kIHdyaXRlIHRoZW1cbiAgICAgIGNvbnN0IHR4T3V0c1NpemUgPSB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkge1xuICAgICAgICByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KTtcbiAgICAgIH0sIDApO1xuXG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSh0eE91dHNTaXplKSk7XG5cbiAgICAgIHRoaXMub3V0cy5mb3JFYWNoKGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dC52YWx1ZSk7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKG91dC5zY3JpcHQpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hPdXRwdXRzSGFzaCcpO1xuICAgIH0gZWxzZSBpZiAoKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmIGluSW5kZXggPCB0aGlzLm91dHMubGVuZ3RoKSB7XG4gICAgICAvLyBXcml0ZSBvbmx5IHRoZSBvdXRwdXQgc3BlY2lmaWVkIGluIGluSW5kZXhcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMub3V0c1tpbkluZGV4XTtcblxuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSkpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KG91dHB1dC52YWx1ZSk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZShvdXRwdXQuc2NyaXB0KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaE91dHB1dHNIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhc2ggdHJhbnNhY3Rpb24gZm9yIHNpZ25pbmcgYSB0cmFuc3BhcmVudCB0cmFuc2FjdGlvbiBpbiBaY2FzaC4gUHJvdGVjdGVkIHRyYW5zYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICogQHBhcmFtIGluSW5kZXhcbiAgICogQHBhcmFtIHByZXZPdXRTY3JpcHRcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoXG4gICAqL1xuICBoYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKFxuICAgIGluSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBwcmV2T3V0U2NyaXB0OiBCdWZmZXIsXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBoYXNoVHlwZTogbnVtYmVyXG4gICk6IEJ1ZmZlciB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9zY3JpcHQvaW50ZXJwcmV0ZXIuY3BwI0wxMTc1XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIGdldFNpZ25hdHVyZURpZ2VzdCh0aGlzLCBpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCB2YWx1ZSwgaGFzaFR5cGUpO1xuICAgIH1cblxuICAgIHR5cGVmb3JjZSh0eXBlcy50dXBsZSh0eXBlcy5VSW50MzIsIHR5cGVzLkJ1ZmZlciwgdHlwZXMuTnVtYmVyKSwgYXJndW1lbnRzKTtcblxuICAgIGlmIChpbkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBpbkluZGV4YCk7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoaW5JbmRleCA+PSB0aGlzLmlucy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgaW5kZXggaXMgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHZlcnNpb24gJHt0aGlzLnZlcnNpb259YCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzaFByZXZvdXRzID0gdGhpcy5nZXRQcmV2b3V0SGFzaChoYXNoVHlwZSk7XG4gICAgY29uc3QgaGFzaFNlcXVlbmNlID0gdGhpcy5nZXRTZXF1ZW5jZUhhc2goaGFzaFR5cGUpO1xuICAgIGNvbnN0IGhhc2hPdXRwdXRzID0gdGhpcy5nZXRPdXRwdXRzSGFzaChoYXNoVHlwZSwgaW5JbmRleCk7XG4gICAgY29uc3QgaGFzaEpvaW5TcGxpdHMgPSBaRVJPO1xuICAgIGNvbnN0IGhhc2hTaGllbGRlZFNwZW5kcyA9IFpFUk87XG4gICAgY29uc3QgaGFzaFNoaWVsZGVkT3V0cHV0cyA9IFpFUk87XG5cbiAgICBsZXQgYmFzZUJ1ZmZlclNpemUgPSAwO1xuICAgIGJhc2VCdWZmZXJTaXplICs9IDQgKiA1OyAvLyBoZWFkZXIsIG5WZXJzaW9uR3JvdXBJZCwgbG9ja190aW1lLCBuRXhwaXJ5SGVpZ2h0LCBoYXNoVHlwZVxuICAgIGJhc2VCdWZmZXJTaXplICs9IDMyICogNDsgLy8gMjU2IGhhc2hlczogaGFzaFByZXZvdXRzLCBoYXNoU2VxdWVuY2UsIGhhc2hPdXRwdXRzLCBoYXNoSm9pblNwbGl0c1xuICAgIGJhc2VCdWZmZXJTaXplICs9IDQgKiAyOyAvLyBpbnB1dC5pbmRleCwgaW5wdXQuc2VxdWVuY2VcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA4OyAvLyB2YWx1ZVxuICAgIGJhc2VCdWZmZXJTaXplICs9IDMyOyAvLyBpbnB1dC5oYXNoXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gdmFyU2xpY2VTaXplKHByZXZPdXRTY3JpcHQpOyAvLyBwcmV2T3V0U2NyaXB0XG4gICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMiAqIDI7IC8vIGhhc2hTaGllbGRlZFNwZW5kcyBhbmQgaGFzaFNoaWVsZGVkT3V0cHV0c1xuICAgICAgYmFzZUJ1ZmZlclNpemUgKz0gODsgLy8gdmFsdWVCYWxhbmNlXG4gICAgfVxuXG4gICAgY29uc3QgbWFzayA9IHRoaXMub3ZlcndpbnRlcmVkID8gMSA6IDA7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpO1xuXG4gICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2MoYmFzZUJ1ZmZlclNpemUpKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMihoZWFkZXIpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLnZlcnNpb25Hcm91cElkKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoUHJldm91dHMpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hTZXF1ZW5jZSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaE91dHB1dHMpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hKb2luU3BsaXRzKTtcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hTaGllbGRlZFNwZW5kcyk7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2hpZWxkZWRPdXRwdXRzKTtcbiAgICB9XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHRoaXMubG9ja3RpbWUpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLmV4cGlyeUhlaWdodCk7XG4gICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShWQUxVRV9JTlQ2NF9aRVJPKTtcbiAgICB9XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIoaGFzaFR5cGUpO1xuXG4gICAgLy8gVGhlIGlucHV0IGJlaW5nIHNpZ25lZCAocmVwbGFjaW5nIHRoZSBzY3JpcHRTaWcgd2l0aCBzY3JpcHRDb2RlICsgYW1vdW50KVxuICAgIC8vIFRoZSBwcmV2b3V0IG1heSBhbHJlYWR5IGJlIGNvbnRhaW5lZCBpbiBoYXNoUHJldm91dCwgYW5kIHRoZSBuU2VxdWVuY2VcbiAgICAvLyBtYXkgYWxyZWFkeSBiZSBjb250YWluZWQgaW4gaGFzaFNlcXVlbmNlLlxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnNbaW5JbmRleF07XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaW5wdXQuaGFzaCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKGlucHV0LmluZGV4KTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZShwcmV2T3V0U2NyaXB0KTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQodmFsdWUpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMihpbnB1dC5zZXF1ZW5jZSk7XG5cbiAgICBjb25zdCBwZXJzb25hbGl6YXRpb24gPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIGNvbnN0IHByZWZpeCA9ICdaY2FzaFNpZ0hhc2gnO1xuICAgIHBlcnNvbmFsaXphdGlvbi53cml0ZShwcmVmaXgpO1xuICAgIHBlcnNvbmFsaXphdGlvbi53cml0ZVVJbnQzMkxFKHRoaXMuY29uc2Vuc3VzQnJhbmNoSWQsIHByZWZpeC5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsIHBlcnNvbmFsaXphdGlvbik7XG4gIH1cblxuICB0b0J1ZmZlcihidWZmZXI/OiBCdWZmZXIsIGluaXRpYWxPZmZzZXQgPSAwKTogQnVmZmVyIHtcbiAgICBpZiAoIWJ1ZmZlcikgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHRoaXMuYnl0ZUxlbmd0aCgpKTtcblxuICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoYnVmZmVyLCBpbml0aWFsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgY29uc3QgbWFzayA9IHRoaXMub3ZlcndpbnRlcmVkID8gMSA6IDA7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVJbnQzMih0aGlzLnZlcnNpb24gfCAobWFzayA8PCAzMSkpOyAvLyBTZXQgb3ZlcndpbnRlciBiaXRcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLnZlcnNpb25Hcm91cElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIodGhpcy52ZXJzaW9uKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICB0b0J1ZmZlclY1KGJ1ZmZlcldyaXRlciwgdGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvQnVmZmVyVjQoYnVmZmVyV3JpdGVyLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbE9mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKGluaXRpYWxPZmZzZXQsIGJ1ZmZlcldyaXRlci5vZmZzZXQpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgZ2V0SGFzaChmb3JXaXRuZXNzPzogYm9vbGVhbik6IEJ1ZmZlciB7XG4gICAgaWYgKGZvcldpdG5lc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudGApO1xuICAgIH1cbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSA1KSB7XG4gICAgICByZXR1cm4gZ2V0VHhpZERpZ2VzdCh0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyeXB0by5oYXNoMjU2KHRoaXMudG9CdWZmZXIoKSk7XG4gIH1cblxuICBjbG9uZSgpOiBaY2FzaFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFpjYXNoVHJhbnNhY3Rpb24odGhpcy5uZXR3b3JrLCB0aGlzKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUFvRDtBQUNwRCxpREFBaUQ7QUFDakQsK0RBQTJFO0FBRTNFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUd2Qyx3REFBbUU7QUFDbkUseURBQTBHO0FBQzFHLCtDQUFrRjtBQUVsRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBSXBHLDhFQUE4RTtBQUM5RSxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUM1Qyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7QUFFM0MsNEVBQTRFO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyxNQUFhLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsUUFBUSxPQUFPLEVBQUU7UUFDZixLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssR0FBRztZQUNOLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsS0FBSyxHQUFHO1lBQ04sT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FB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O1NBQ2hDO2FBQU07WUFDTCw2QkFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUMvQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsVUFBb0I7UUFDMUIsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sMkJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sc0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDOztBQW5VSCw0Q0FvVUM7QUFuVVEsMkNBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLG1DQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QixnQ0FBZSxHQUFHLENBQUMsQ0FBQztBQUVwQix1Q0FBc0IsR0FBRyxHQUFHLENBQUM7QUFDN0Isb0NBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQzFCLG9DQUFtQixHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uLCBjcnlwdG8gfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3R5cGVzJztcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciwgQnVmZmVyV3JpdGVyIH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvYnVmZmVydXRpbHMnO1xuXG5jb25zdCB2YXJ1aW50ID0gcmVxdWlyZSgndmFydWludC1iaXRjb2luJyk7XG5jb25zdCB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKTtcblxuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBVdHhvVHJhbnNhY3Rpb24sIHZhclNsaWNlU2l6ZSB9IGZyb20gJy4uL1V0eG9UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBmcm9tQnVmZmVyVjQsIGZyb21CdWZmZXJWNSwgdG9CdWZmZXJWNCwgdG9CdWZmZXJWNSwgVkFMVUVfSU5UNjRfWkVSTyB9IGZyb20gJy4vWmNhc2hCdWZmZXJ1dGlscyc7XG5pbXBvcnQgeyBnZXRCbGFrZTJiSGFzaCwgZ2V0U2lnbmF0dXJlRGlnZXN0LCBnZXRUeGlkRGlnZXN0IH0gZnJvbSAnLi9oYXNoWmlwMDI0NCc7XG5cbmNvbnN0IFpFUk8gPSBCdWZmZXIuZnJvbSgnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICdoZXgnKTtcblxuZXhwb3J0IHR5cGUgWmNhc2hOZXR3b3JrID0gdHlwZW9mIG5ldHdvcmtzLnpjYXNoIHwgdHlwZW9mIG5ldHdvcmtzLnpjYXNoVGVzdDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDQwXG5jb25zdCBTQVBMSU5HX1ZFUlNJT05fR1JPVVBfSUQgPSAweDg5MmYyMDg1O1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNy4wL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDUyXG5jb25zdCBaSVAyMjVfVkVSU0lPTl9HUk9VUF9JRCA9IDB4MjZhNzI3MGE7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjcuMC9zcmMvY29uc2Vuc3VzL3VwZ3JhZGVzLmNwcCNMMTFcbmNvbnN0IE9WRVJXSU5URVJfQlJBTkNIX0lEID0gMHg1YmE4MWIxOTtcbmNvbnN0IENBTk9QWV9CUkFOQ0hfSUQgPSAweGU5ZmY3NWE2O1xuY29uc3QgTlU1X0JSQU5DSF9JRCA9IDB4YzJkNmQwYjQ7XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VmVyc2lvbkdyb3VwSWRGb3JWZXJzaW9uKHZlcnNpb246IG51bWJlcik6IG51bWJlciB7XG4gIHN3aXRjaCAodmVyc2lvbikge1xuICAgIGNhc2UgNDAwOlxuICAgIGNhc2UgNDUwOlxuICAgICAgcmV0dXJuIFNBUExJTkdfVkVSU0lPTl9HUk9VUF9JRDtcbiAgICBjYXNlIDUwMDpcbiAgICAgIHJldHVybiBaSVAyMjVfVkVSU0lPTl9HUk9VUF9JRDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG5vIHZhbHVlIGZvciB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yazogWmNhc2hOZXR3b3JrLCB2ZXJzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIE9WRVJXSU5URVJfQlJBTkNIX0lEO1xuICAgIGNhc2UgWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9ONF9CUkFOQ0hfQ0FOT1BZOlxuICAgICAgLy8gaHR0cHM6Ly96aXBzLnouY2FzaC96aXAtMDI1MVxuICAgICAgcmV0dXJuIENBTk9QWV9CUkFOQ0hfSUQ7XG4gICAgY2FzZSA0OlxuICAgIGNhc2UgNTpcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjRfQlJBTkNIX05VNTpcbiAgICBjYXNlIFpjYXNoVHJhbnNhY3Rpb24uVkVSU0lPTjVfQlJBTkNIX05VNTpcbiAgICAgIC8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAyNTJcbiAgICAgIHJldHVybiBOVTVfQlJBTkNIX0lEO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbm8gdmFsdWUgZm9yIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xufVxuXG5leHBvcnQgY2xhc3MgWmNhc2hUcmFuc2FjdGlvbiBleHRlbmRzIFV0eG9UcmFuc2FjdGlvbiB7XG4gIHN0YXRpYyBWRVJTSU9OX0pPSU5TUExJVFNfU1VQUE9SVCA9IDI7XG4gIHN0YXRpYyBWRVJTSU9OX09WRVJXSU5URVIgPSAzO1xuICBzdGF0aWMgVkVSU0lPTl9TQVBMSU5HID0gNDtcblxuICBzdGF0aWMgVkVSU0lPTjRfQlJBTkNIX0NBTk9QWSA9IDQwMDtcbiAgc3RhdGljIFZFUlNJT040X0JSQU5DSF9OVTUgPSA0NTA7XG4gIHN0YXRpYyBWRVJTSU9ONV9CUkFOQ0hfTlU1ID0gNTAwO1xuXG4gIC8vIDEgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIHBvc3Qgb3ZlcndpbnRlciB1cGdyYWRlLCAwIG90aGVyd2lzZVxuICBvdmVyd2ludGVyZWQgPSAwO1xuICAvLyAweDAzQzQ4MjcwICg2MzIxMDA5NikgZm9yIG92ZXJ3aW50ZXIgYW5kIDB4ODkyRjIwODUgKDIzMDE1NjcxMDkpIGZvciBzYXBsaW5nXG4gIHZlcnNpb25Hcm91cElkID0gMDtcbiAgLy8gQmxvY2sgaGVpZ2h0IGFmdGVyIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb25zIHdpbGwgZXhwaXJlLCBvciAwIHRvIGRpc2FibGUgZXhwaXJ5XG4gIGV4cGlyeUhlaWdodCA9IDA7XG4gIGNvbnNlbnN1c0JyYW5jaElkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5ldHdvcms6IFpjYXNoTmV0d29yaywgdHg/OiBaY2FzaFRyYW5zYWN0aW9uKSB7XG4gICAgc3VwZXIobmV0d29yaywgdHgpO1xuXG4gICAgbGV0IGNvbnNlbnN1c0JyYW5jaElkO1xuICAgIGlmICh0eCkge1xuICAgICAgdGhpcy5vdmVyd2ludGVyZWQgPSB0eC5vdmVyd2ludGVyZWQ7XG4gICAgICB0aGlzLnZlcnNpb25Hcm91cElkID0gdHgudmVyc2lvbkdyb3VwSWQ7XG4gICAgICB0aGlzLmV4cGlyeUhlaWdodCA9IHR4LmV4cGlyeUhlaWdodDtcblxuICAgICAgaWYgKHR4LmNvbnNlbnN1c0JyYW5jaElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc2Vuc3VzQnJhbmNoSWQgPSB0eC5jb25zZW5zdXNCcmFuY2hJZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb25zZW5zdXNCcmFuY2hJZCA9IGNvbnNlbnN1c0JyYW5jaElkID8/IGdldERlZmF1bHRDb25zZW5zdXNCcmFuY2hJZEZvclZlcnNpb24obmV0d29yaywgdGhpcy52ZXJzaW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQnVmZmVyKGJ1ZmZlcjogQnVmZmVyLCBfX25vU3RyaWN0OiBib29sZWFuLCBuZXR3b3JrPzogWmNhc2hOZXR3b3JrKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIG5ldHdvcmtgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJSZWFkZXIgPSBuZXcgQnVmZmVyUmVhZGVyKGJ1ZmZlcik7XG4gICAgY29uc3QgdHggPSBuZXcgWmNhc2hUcmFuc2FjdGlvbihuZXR3b3JrKTtcbiAgICB0eC52ZXJzaW9uID0gYnVmZmVyUmVhZGVyLnJlYWRJbnQzMigpO1xuXG4gICAgLy8gU3BsaXQgdGhlIGhlYWRlciBpbnRvIGZPdmVyd2ludGVyZWQgYW5kIG5WZXJzaW9uXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDc3MlxuICAgIHR4Lm92ZXJ3aW50ZXJlZCA9IHR4LnZlcnNpb24gPj4+IDMxOyAvLyBNdXN0IGJlIDEgZm9yIHZlcnNpb24gMyBhbmQgdXBcbiAgICB0eC52ZXJzaW9uID0gdHgudmVyc2lvbiAmIDB4MDdmZmZmZmZmOyAvLyAzIGZvciBvdmVyd2ludGVyXG4gICAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBnZXREZWZhdWx0Q29uc2Vuc3VzQnJhbmNoSWRGb3JWZXJzaW9uKG5ldHdvcmssIHR4LnZlcnNpb24pO1xuXG4gICAgaWYgKHR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdHgudmVyc2lvbkdyb3VwSWQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICAgIH1cblxuICAgIGlmICh0eC52ZXJzaW9uID09PSA1KSB7XG4gICAgICBmcm9tQnVmZmVyVjUoYnVmZmVyUmVhZGVyLCB0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyb21CdWZmZXJWNChidWZmZXJSZWFkZXIsIHR4KTtcbiAgICB9XG5cbiAgICBpZiAoX19ub1N0cmljdCkgcmV0dXJuIHR4O1xuICAgIGlmIChidWZmZXJSZWFkZXIub2Zmc2V0ICE9PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0cmFpbGluZyA9IGJ1ZmZlci5zbGljZShidWZmZXJSZWFkZXIub2Zmc2V0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0cmFpbGluZyBieXRlczogJHt0cmFpbGluZy50b1N0cmluZygnaGV4Jyl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgc3RhdGljIGZyb21CdWZmZXJXaXRoVmVyc2lvbihidWY6IEJ1ZmZlciwgbmV0d29yazogWmNhc2hOZXR3b3JrLCB2ZXJzaW9uPzogbnVtYmVyKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmLCBmYWxzZSwgbmV0d29yayk7XG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHR4LmNvbnNlbnN1c0JyYW5jaElkID0gZ2V0RGVmYXVsdENvbnNlbnN1c0JyYW5jaElkRm9yVmVyc2lvbihuZXR3b3JrLCB2ZXJzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgYnl0ZUxlbmd0aCgpOiBudW1iZXIge1xuICAgIGxldCBieXRlTGVuZ3RoID0gc3VwZXIuYnl0ZUxlbmd0aCgpO1xuICAgIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgYnl0ZUxlbmd0aCArPSA0OyAvLyBuVmVyc2lvbkdyb3VwSWRcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgICBieXRlTGVuZ3RoICs9IDQ7IC8vIG5FeHBpcnlIZWlnaHRcbiAgICB9XG4gICAgY29uc3QgZW1wdHlWZWN0b3JMZW5ndGggPSB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKDApO1xuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MjJcbiAgICAgIGJ5dGVMZW5ndGggKz0gNDsgLy8gY29uc2Vuc3VzQnJhbmNoSWRcbiAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIHNhcGxpbmdCdW5kbGUgaW5wdXRzXG4gICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBzYXBsaW5nQnVuZGxlIG91dHB1dHNcbiAgICAgIGJ5dGVMZW5ndGggKz0gMTsgLy8gb3JjaGFyZEJ1bmRsZSAoZW1wdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODYyXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gODsgLy8gdmFsdWVCYWxhbmNlICh1aW50NjQpXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gZW1wdHlWZWN0b3JMZW5ndGg7IC8vIGlucHV0c1xuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBvdXRwdXRzXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgICAgICAvL1xuICAgICAgICBieXRlTGVuZ3RoICs9IGVtcHR5VmVjdG9yTGVuZ3RoOyAvLyBqb2luc3BsaXRzXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBieXRlTGVuZ3RoO1xuICB9XG5cbiAgaXNTYXBsaW5nQ29tcGF0aWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX1NBUExJTkc7XG4gIH1cblxuICBpc092ZXJ3aW50ZXJDb21wYXRpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcndpbnRlcmVkICYmIHRoaXMudmVyc2lvbiA+PSBaY2FzaFRyYW5zYWN0aW9uLlZFUlNJT05fT1ZFUldJTlRFUjtcbiAgfVxuXG4gIHN1cHBvcnRzSm9pblNwbGl0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm92ZXJ3aW50ZXJlZCAmJiB0aGlzLnZlcnNpb24gPj0gWmNhc2hUcmFuc2FjdGlvbi5WRVJTSU9OX0pPSU5TUExJVFNfU1VQUE9SVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIGFsbCBvciBub25lIG9mIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIC0gQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRQcmV2b3V0SGFzaChoYXNoVHlwZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSkge1xuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUoMzYgKiB0aGlzLmlucy5sZW5ndGgpKTtcblxuICAgICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZSh0eEluLmhhc2gpO1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5pbmRleCk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGdldEJsYWtlMmJIYXNoKGJ1ZmZlcldyaXRlci5idWZmZXIsICdaY2FzaFByZXZvdXRIYXNoJyk7XG4gICAgfVxuICAgIHJldHVybiBaRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgaGFzaCBmb3IgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9ucyBpbnB1dHMgc2VxdWVuY2UgbnVtYmVycyBkZXBlbmRpbmcgb24gdGhlIGhhc2h0eXBlXG4gICAqIEBwYXJhbSBoYXNoVHlwZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgQkxBS0UyYiBoYXNoIG9yIDI1Ni1iaXQgemVybyBpZiBkb2Vzbid0IGFwcGx5XG4gICAqL1xuICBnZXRTZXF1ZW5jZUhhc2goaGFzaFR5cGU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgaWYgKFxuICAgICAgIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmXG4gICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FXG4gICAgKSB7XG4gICAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKEJ1ZmZlci5hbGxvY1Vuc2FmZSg0ICogdGhpcy5pbnMubGVuZ3RoKSk7XG5cbiAgICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uc2VxdWVuY2UpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hTZXF1ZW5jSGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGhhc2ggZm9yIG9uZSwgYWxsIG9yIG5vbmUgb2YgdGhlIHRyYW5zYWN0aW9uIG91dHB1dHMgZGVwZW5kaW5nIG9uIHRoZSBoYXNodHlwZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHBhcmFtIGluSW5kZXhcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaCBvciAyNTYtYml0IHplcm8gaWYgZG9lc24ndCBhcHBseVxuICAgKi9cbiAgZ2V0T3V0cHV0c0hhc2goaGFzaFR5cGU6IG51bWJlciwgaW5JbmRleDogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBpZiAoKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFICYmIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkUpIHtcbiAgICAgIC8vIEZpbmQgb3V0IHRoZSBzaXplIG9mIHRoZSBvdXRwdXRzIGFuZCB3cml0ZSB0aGVtXG4gICAgICBjb25zdCB0eE91dHNTaXplID0gdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICAgICAgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCk7XG4gICAgICB9LCAwKTtcblxuICAgICAgY29uc3QgYnVmZmVyV3JpdGVyID0gbmV3IEJ1ZmZlcldyaXRlcihCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSkpO1xuXG4gICAgICB0aGlzLm91dHMuZm9yRWFjaChmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXQudmFsdWUpO1xuICAgICAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZShvdXQuc2NyaXB0KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZ2V0Qmxha2UyYkhhc2goYnVmZmVyV3JpdGVyLmJ1ZmZlciwgJ1pjYXNoT3V0cHV0c0hhc2gnKTtcbiAgICB9IGVsc2UgaWYgKChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJiBpbkluZGV4IDwgdGhpcy5vdXRzLmxlbmd0aCkge1xuICAgICAgLy8gV3JpdGUgb25seSB0aGUgb3V0cHV0IHNwZWNpZmllZCBpbiBpbkluZGV4XG4gICAgICBjb25zdCBvdXRwdXQgPSB0aGlzLm91dHNbaW5JbmRleF07XG5cbiAgICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jVW5zYWZlKDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCkpKTtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQ2NChvdXRwdXQudmFsdWUpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2Uob3V0cHV0LnNjcmlwdCk7XG5cbiAgICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCAnWmNhc2hPdXRwdXRzSGFzaCcpO1xuICAgIH1cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXNoIHRyYW5zYWN0aW9uIGZvciBzaWduaW5nIGEgdHJhbnNwYXJlbnQgdHJhbnNhY3Rpb24gaW4gWmNhc2guIFByb3RlY3RlZCB0cmFuc2FjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqIEBwYXJhbSBpbkluZGV4XG4gICAqIEBwYXJhbSBwcmV2T3V0U2NyaXB0XG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gaGFzaFR5cGVcbiAgICogQHJldHVybnMgQnVmZmVyIEJMQUtFMmIgaGFzaFxuICAgKi9cbiAgaGFzaEZvclNpZ25hdHVyZUJ5TmV0d29yayhcbiAgICBpbkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgcHJldk91dFNjcmlwdDogQnVmZmVyLFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgaGFzaFR5cGU6IG51bWJlclxuICApOiBCdWZmZXIge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvc2NyaXB0L2ludGVycHJldGVyLmNwcCNMMTE3NVxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDUpIHtcbiAgICAgIHJldHVybiBnZXRTaWduYXR1cmVEaWdlc3QodGhpcywgaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIGhhc2hUeXBlKTtcbiAgICB9XG5cbiAgICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIHR5cGVzLk51bWJlciksIGFyZ3VtZW50cyk7XG5cbiAgICBpZiAoaW5JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5JbmRleGApO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGluSW5kZXggPj0gdGhpcy5pbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGluZGV4IGlzIG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCB2ZXJzaW9uICR7dGhpcy52ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc2hQcmV2b3V0cyA9IHRoaXMuZ2V0UHJldm91dEhhc2goaGFzaFR5cGUpO1xuICAgIGNvbnN0IGhhc2hTZXF1ZW5jZSA9IHRoaXMuZ2V0U2VxdWVuY2VIYXNoKGhhc2hUeXBlKTtcbiAgICBjb25zdCBoYXNoT3V0cHV0cyA9IHRoaXMuZ2V0T3V0cHV0c0hhc2goaGFzaFR5cGUsIGluSW5kZXgpO1xuICAgIGNvbnN0IGhhc2hKb2luU3BsaXRzID0gWkVSTztcbiAgICBjb25zdCBoYXNoU2hpZWxkZWRTcGVuZHMgPSBaRVJPO1xuICAgIGNvbnN0IGhhc2hTaGllbGRlZE91dHB1dHMgPSBaRVJPO1xuXG4gICAgbGV0IGJhc2VCdWZmZXJTaXplID0gMDtcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogNTsgLy8gaGVhZGVyLCBuVmVyc2lvbkdyb3VwSWQsIGxvY2tfdGltZSwgbkV4cGlyeUhlaWdodCwgaGFzaFR5cGVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMiAqIDQ7IC8vIDI1NiBoYXNoZXM6IGhhc2hQcmV2b3V0cywgaGFzaFNlcXVlbmNlLCBoYXNoT3V0cHV0cywgaGFzaEpvaW5TcGxpdHNcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSA0ICogMjsgLy8gaW5wdXQuaW5kZXgsIGlucHV0LnNlcXVlbmNlXG4gICAgYmFzZUJ1ZmZlclNpemUgKz0gODsgLy8gdmFsdWVcbiAgICBiYXNlQnVmZmVyU2l6ZSArPSAzMjsgLy8gaW5wdXQuaGFzaFxuICAgIGJhc2VCdWZmZXJTaXplICs9IHZhclNsaWNlU2l6ZShwcmV2T3V0U2NyaXB0KTsgLy8gcHJldk91dFNjcmlwdFxuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYmFzZUJ1ZmZlclNpemUgKz0gMzIgKiAyOyAvLyBoYXNoU2hpZWxkZWRTcGVuZHMgYW5kIGhhc2hTaGllbGRlZE91dHB1dHNcbiAgICAgIGJhc2VCdWZmZXJTaXplICs9IDg7IC8vIHZhbHVlQmFsYW5jZVxuICAgIH1cblxuICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMudmVyc2lvbiB8IChtYXNrIDw8IDMxKTtcblxuICAgIGNvbnN0IGJ1ZmZlcldyaXRlciA9IG5ldyBCdWZmZXJXcml0ZXIoQnVmZmVyLmFsbG9jKGJhc2VCdWZmZXJTaXplKSk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIoaGVhZGVyKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFByZXZvdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2VxdWVuY2UpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGhhc2hPdXRwdXRzKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoSm9pblNwbGl0cyk7XG4gICAgaWYgKHRoaXMuaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShoYXNoU2hpZWxkZWRTcGVuZHMpO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoaGFzaFNoaWVsZGVkT3V0cHV0cyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0aGlzLmxvY2t0aW1lKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy5leHBpcnlIZWlnaHQpO1xuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoVkFMVUVfSU5UNjRfWkVSTyk7XG4gICAgfVxuICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKGhhc2hUeXBlKTtcblxuICAgIC8vIFRoZSBpbnB1dCBiZWluZyBzaWduZWQgKHJlcGxhY2luZyB0aGUgc2NyaXB0U2lnIHdpdGggc2NyaXB0Q29kZSArIGFtb3VudClcbiAgICAvLyBUaGUgcHJldm91dCBtYXkgYWxyZWFkeSBiZSBjb250YWluZWQgaW4gaGFzaFByZXZvdXQsIGFuZCB0aGUgblNlcXVlbmNlXG4gICAgLy8gbWF5IGFscmVhZHkgYmUgY29udGFpbmVkIGluIGhhc2hTZXF1ZW5jZS5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5zW2luSW5kZXhdO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKGlucHV0Lmhhc2gpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMihpbnB1dC5pbmRleCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UocHJldk91dFNjcmlwdCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KHZhbHVlKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpO1xuXG4gICAgY29uc3QgcGVyc29uYWxpemF0aW9uID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBjb25zdCBwcmVmaXggPSAnWmNhc2hTaWdIYXNoJztcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGUocHJlZml4KTtcbiAgICBwZXJzb25hbGl6YXRpb24ud3JpdGVVSW50MzJMRSh0aGlzLmNvbnNlbnN1c0JyYW5jaElkLCBwcmVmaXgubGVuZ3RoKTtcblxuICAgIHJldHVybiBnZXRCbGFrZTJiSGFzaChidWZmZXJXcml0ZXIuYnVmZmVyLCBwZXJzb25hbGl6YXRpb24pO1xuICB9XG5cbiAgdG9CdWZmZXIoYnVmZmVyPzogQnVmZmVyLCBpbml0aWFsT2Zmc2V0ID0gMCk6IEJ1ZmZlciB7XG4gICAgaWYgKCFidWZmZXIpIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ5dGVMZW5ndGgoKSk7XG5cbiAgICBjb25zdCBidWZmZXJXcml0ZXIgPSBuZXcgQnVmZmVyV3JpdGVyKGJ1ZmZlciwgaW5pdGlhbE9mZnNldCk7XG5cbiAgICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICAgIGNvbnN0IG1hc2sgPSB0aGlzLm92ZXJ3aW50ZXJlZCA/IDEgOiAwO1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlSW50MzIodGhpcy52ZXJzaW9uIHwgKG1hc2sgPDwgMzEpKTsgLy8gU2V0IG92ZXJ3aW50ZXIgYml0XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodGhpcy52ZXJzaW9uR3JvdXBJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZUludDMyKHRoaXMudmVyc2lvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgdG9CdWZmZXJWNShidWZmZXJXcml0ZXIsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b0J1ZmZlclY0KGJ1ZmZlcldyaXRlciwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxPZmZzZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZShpbml0aWFsT2Zmc2V0LCBidWZmZXJXcml0ZXIub2Zmc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGdldEhhc2goZm9yV2l0bmVzcz86IGJvb2xlYW4pOiBCdWZmZXIge1xuICAgIGlmIChmb3JXaXRuZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYXJndW1lbnRgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIGdldFR4aWREaWdlc3QodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBjcnlwdG8uaGFzaDI1Nih0aGlzLnRvQnVmZmVyKCkpO1xuICB9XG5cbiAgY2xvbmUoKTogWmNhc2hUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBaY2FzaFRyYW5zYWN0aW9uKHRoaXMubmV0d29yaywgdGhpcyk7XG4gIH1cbn1cbiJdfQ==
{
"name": "@bitgo/utxo-lib",
"version": "2.2.2",
"version": "2.3.0-dev.0",
"description": "Client-side Bitcoin JavaScript library",

@@ -29,3 +29,4 @@ "main": "./dist/src/index.js",

"lint": "eslint --quiet .",
"fmt": "prettier --write '{src,test}/**/*.{ts,js}'"
"fmt": "prettier --write '{src,test}/**/*.{ts,js}'",
"precommit": "yarn lint-staged"
},

@@ -49,3 +50,3 @@ "nyc": {

"dependencies": {
"@bitgo/blake2b": "^3.0.2",
"@bitgo/blake2b": "^3.1.0-dev.0",
"assert": "^2.0.0",

@@ -64,10 +65,16 @@ "bitcoin-ops": "^1.3.0",

"fs-extra": "^9.1.0",
"nyc": "^15.1.0",
"ts-node": "^9.1.1"
"nyc": "^15.1.0"
},
"lint-staged": {
"*.{js,ts}": [
"yarn prettier --write",
"yarn eslint --fix"
]
},
"publishConfig": {
"access": "public"
},
"author": "BitGo SDK Team <sdkteam@bitgo.com>",
"license": "MIT",
"gitHead": "321f96e8abb546d18c046f224d1f082319e4b38f"
"gitHead": "01d84838f1c5ee53a55bebab64f9f362545082bb"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc