PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/dist/utils
Просмотр файла: base58.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Base58 = void 0;
/**
* @packageDocumentation
* @module Utils-Base58
*/
const bn_js_1 = __importDefault(require("bn.js"));
const buffer_1 = require("buffer/");
const errors_1 = require("../utils/errors");
/**
* A Base58 class that uses the cross-platform Buffer module. Built so that Typescript
* will accept the code.
*
* ```js
* let b58:Base58 = new Base58();
* let str:string = b58.encode(somebuffer);
* let buff:Buffer = b58.decode(somestring);
* ```
*/
class Base58 {
constructor() {
this.b58alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
this.alphabetIdx0 = "1";
this.b58 = [
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 255, 255, 255, 255, 255, 255,
255, 9, 10, 11, 12, 13, 14, 15, 16, 255, 17, 18, 19, 20, 21, 255, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 255, 255, 255, 255, 255, 255, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 255, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255
];
this.big58Radix = new bn_js_1.default(58);
this.bigZero = new bn_js_1.default(0);
/**
* Encodes a {@link https://github.com/feross/buffer|Buffer} as a base-58 string
*
* @param buff A {@link https://github.com/feross/buffer|Buffer} to encode
*
* @returns A base-58 string.
*/
this.encode = (buff) => {
let x = new bn_js_1.default(buff.toString("hex"), "hex", "be");
let answer = ""; // = Buffer.alloc(buff.length*136/100, 0);
while (x.cmp(this.bigZero) > 0) {
const mod = x.mod(this.big58Radix);
x = x.div(this.big58Radix);
answer += this.b58alphabet[mod.toNumber()];
}
for (let i = 0; i < buff.length; i++) {
if (buff.readUInt8(i) !== 0) {
break;
}
answer += this.alphabetIdx0;
}
return answer.split("").reverse().join("");
};
/**
* Decodes a base-58 into a {@link https://github.com/feross/buffer|Buffer}
*
* @param b A base-58 string to decode
*
* @returns A {@link https://github.com/feross/buffer|Buffer} from the decoded string.
*/
this.decode = (b) => {
const answer = new bn_js_1.default(0);
const j = new bn_js_1.default(1);
for (let i = b.length - 1; i >= 0; i--) {
const tmp = this.b58[b.charCodeAt(i)];
if (tmp === 255) {
throw new errors_1.Base58Error("Error - Base58.decode: not a valid base58 string");
}
const scratch = new bn_js_1.default(tmp);
scratch.imul(j);
answer.iadd(scratch);
j.imul(this.big58Radix);
}
/* we need to make sure the prefaced 0's are put back to be even in this string */
let anshex = answer.toString("hex");
anshex = anshex.length % 2 ? `0${anshex}` : anshex;
/**
* We need to replace all zeros that were removed during our conversation process.
* This ensures the buffer returns is the appropriate length.
*/
const tmpval = buffer_1.Buffer.from(anshex, "hex");
let numZeros;
for (numZeros = 0; numZeros < b.length; numZeros++) {
if (b[`${numZeros}`] !== this.alphabetIdx0) {
break;
}
}
const xlen = numZeros + tmpval.length;
const result = buffer_1.Buffer.alloc(xlen, 0);
tmpval.copy(result, numZeros);
return result;
};
}
/**
* Retrieves the Base58 singleton.
*/
static getInstance() {
if (!Base58.instance) {
Base58.instance = new Base58();
}
return Base58.instance;
}
}
exports.Base58 = Base58;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTU4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2Jhc2U1OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7O0dBR0c7QUFDSCxrREFBc0I7QUFDdEIsb0NBQWdDO0FBQ2hDLDRDQUE2QztBQUU3Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLE1BQU07SUFHakI7UUFZVSxnQkFBVyxHQUNuQiw0REFBNEQsQ0FBQTtRQUVwRCxpQkFBWSxHQUFHLEdBQUcsQ0FBQTtRQUVsQixRQUFHLEdBQUc7WUFDZCxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztZQUN6RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQzNFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUN4RSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUN4RSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQzNFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztZQUN6RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztZQUN6RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQ3pFLEdBQUcsRUFB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QU0sTUFBTSxHQUFXLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2pELElBQUksUUFBZ0IsQ0FBQTtZQUNwQixLQUFLLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUMxQyxNQUFLO2lCQUNOO2FBQ0Y7WUFDRCxNQUFNLElBQUksR0FBVyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtZQUM3QyxNQUFNLE1BQU0sR0FBVyxlQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUU3QixPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUMsQ0FBQTtJQTlHc0IsQ0FBQztJQUV4Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQTtTQUMvQjtRQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQTtJQUN4QixDQUFDO0NBcUdGO0FBbEhELHdCQWtIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIFV0aWxzLUJhc2U1OFxuICovXG5pbXBvcnQgQk4gZnJvbSBcImJuLmpzXCJcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJidWZmZXIvXCJcbmltcG9ydCB7IEJhc2U1OEVycm9yIH0gZnJvbSBcIi4uL3V0aWxzL2Vycm9yc1wiXG5cbi8qKlxuICogQSBCYXNlNTggY2xhc3MgdGhhdCB1c2VzIHRoZSBjcm9zcy1wbGF0Zm9ybSBCdWZmZXIgbW9kdWxlLiBCdWlsdCBzbyB0aGF0IFR5cGVzY3JpcHRcbiAqIHdpbGwgYWNjZXB0IHRoZSBjb2RlLlxuICpcbiAqIGBgYGpzXG4gKiBsZXQgYjU4OkJhc2U1OCA9IG5ldyBCYXNlNTgoKTtcbiAqIGxldCBzdHI6c3RyaW5nID0gYjU4LmVuY29kZShzb21lYnVmZmVyKTtcbiAqIGxldCBidWZmOkJ1ZmZlciA9IGI1OC5kZWNvZGUoc29tZXN0cmluZyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2U1OCB7XG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBCYXNlNThcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBCYXNlNTggc2luZ2xldG9uLlxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKCk6IEJhc2U1OCB7XG4gICAgaWYgKCFCYXNlNTguaW5zdGFuY2UpIHtcbiAgICAgIEJhc2U1OC5pbnN0YW5jZSA9IG5ldyBCYXNlNTgoKVxuICAgIH1cbiAgICByZXR1cm4gQmFzZTU4Lmluc3RhbmNlXG4gIH1cblxuICBwcm90ZWN0ZWQgYjU4YWxwaGFiZXQ6IHN0cmluZyA9XG4gICAgXCIxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6XCJcblxuICBwcm90ZWN0ZWQgYWxwaGFiZXRJZHgwID0gXCIxXCJcblxuICBwcm90ZWN0ZWQgYjU4ID0gW1xuICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG4gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSxcbiAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LFxuICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSxcbiAgICAyNTUsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNTUsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjU1LCAyMiwgMjMsXG4gICAgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMzMsIDM0LFxuICAgIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDI1NSwgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MixcbiAgICA1MywgNTQsIDU1LCA1NiwgNTcsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LFxuICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG4gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSxcbiAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LFxuICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG4gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSxcbiAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LFxuICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsXG4gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSxcbiAgICAyNTUsIDI1NVxuICBdXG5cbiAgcHJvdGVjdGVkIGJpZzU4UmFkaXg6IEJOID0gbmV3IEJOKDU4KVxuXG4gIHByb3RlY3RlZCBiaWdaZXJvOiBCTiA9IG5ldyBCTigwKVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gYXMgYSBiYXNlLTU4IHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0gYnVmZiBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHRvIGVuY29kZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nLlxuICAgKi9cbiAgZW5jb2RlID0gKGJ1ZmY6IEJ1ZmZlcik6IHN0cmluZyA9PiB7XG4gICAgbGV0IHg6IEJOID0gbmV3IEJOKGJ1ZmYudG9TdHJpbmcoXCJoZXhcIiksIFwiaGV4XCIsIFwiYmVcIilcbiAgICBsZXQgYW5zd2VyOiBzdHJpbmcgPSBcIlwiIC8vID0gQnVmZmVyLmFsbG9jKGJ1ZmYubGVuZ3RoKjEzNi8xMDAsIDApO1xuICAgIHdoaWxlICh4LmNtcCh0aGlzLmJpZ1plcm8pID4gMCkge1xuICAgICAgY29uc3QgbW9kOiBCTiA9IHgubW9kKHRoaXMuYmlnNThSYWRpeClcbiAgICAgIHggPSB4LmRpdih0aGlzLmJpZzU4UmFkaXgpXG4gICAgICBhbnN3ZXIgKz0gdGhpcy5iNThhbHBoYWJldFttb2QudG9OdW1iZXIoKV1cbiAgICB9XG5cbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYnVmZi5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGJ1ZmYucmVhZFVJbnQ4KGkpICE9PSAwKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBhbnN3ZXIgKz0gdGhpcy5hbHBoYWJldElkeDBcbiAgICB9XG4gICAgcmV0dXJuIGFuc3dlci5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBiYXNlLTU4IGludG8gYSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgKlxuICAgKiBAcGFyYW0gYiBBIGJhc2UtNTggc3RyaW5nIHRvIGRlY29kZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGZyb20gdGhlIGRlY29kZWQgc3RyaW5nLlxuICAgKi9cbiAgZGVjb2RlID0gKGI6IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gICAgY29uc3QgYW5zd2VyOiBCTiA9IG5ldyBCTigwKVxuICAgIGNvbnN0IGo6IEJOID0gbmV3IEJOKDEpXG5cbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBiLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB0bXA6IG51bWJlciA9IHRoaXMuYjU4W2IuY2hhckNvZGVBdChpKV1cbiAgICAgIGlmICh0bXAgPT09IDI1NSkge1xuICAgICAgICB0aHJvdyBuZXcgQmFzZTU4RXJyb3IoXG4gICAgICAgICAgXCJFcnJvciAtIEJhc2U1OC5kZWNvZGU6IG5vdCBhIHZhbGlkIGJhc2U1OCBzdHJpbmdcIlxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb25zdCBzY3JhdGNoOiBCTiA9IG5ldyBCTih0bXApXG4gICAgICBzY3JhdGNoLmltdWwoailcbiAgICAgIGFuc3dlci5pYWRkKHNjcmF0Y2gpXG4gICAgICBqLmltdWwodGhpcy5iaWc1OFJhZGl4KVxuICAgIH1cblxuICAgIC8qIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBwcmVmYWNlZCAwJ3MgYXJlIHB1dCBiYWNrIHRvIGJlIGV2ZW4gaW4gdGhpcyBzdHJpbmcgKi9cbiAgICBsZXQgYW5zaGV4ID0gYW5zd2VyLnRvU3RyaW5nKFwiaGV4XCIpXG4gICAgYW5zaGV4ID0gYW5zaGV4Lmxlbmd0aCAlIDIgPyBgMCR7YW5zaGV4fWAgOiBhbnNoZXhcblxuICAgIC8qKlxuICAgICAqIFdlIG5lZWQgdG8gcmVwbGFjZSBhbGwgemVyb3MgdGhhdCB3ZXJlIHJlbW92ZWQgZHVyaW5nIG91ciBjb252ZXJzYXRpb24gcHJvY2Vzcy5cbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhlIGJ1ZmZlciByZXR1cm5zIGlzIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGguXG4gICAgICovXG4gICAgY29uc3QgdG1wdmFsOiBCdWZmZXIgPSBCdWZmZXIuZnJvbShhbnNoZXgsIFwiaGV4XCIpXG4gICAgbGV0IG51bVplcm9zOiBudW1iZXJcbiAgICBmb3IgKG51bVplcm9zID0gMDsgbnVtWmVyb3MgPCBiLmxlbmd0aDsgbnVtWmVyb3MrKykge1xuICAgICAgaWYgKGJbYCR7bnVtWmVyb3N9YF0gIT09IHRoaXMuYWxwaGFiZXRJZHgwKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHhsZW46IG51bWJlciA9IG51bVplcm9zICsgdG1wdmFsLmxlbmd0aFxuICAgIGNvbnN0IHJlc3VsdDogQnVmZmVyID0gQnVmZmVyLmFsbG9jKHhsZW4sIDApXG4gICAgdG1wdmFsLmNvcHkocmVzdWx0LCBudW1aZXJvcylcblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!