PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/typings/tests/utils

Просмотр файла: hdnode.test.js

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const src_1 = __importStar(require("src"));
const buffer_1 = require("buffer/");
const ip = "localhost";
const port = 9650;
const protocol = "http";
const networkID = 1;
const avalanche = new src_1.default(ip, port, protocol, networkID);
const mnemonic = src_1.Mnemonic.getInstance();
const xchain = avalanche.XChain();
const xKeychain = xchain.keyChain();
describe("HDNode", () => {
    const xPriv = "xprv9s21ZrQH143K4RH1nRkHwuVz3qGREBLobwUoUBowLDucQXm4do8jvz12agvjHrAwjJXtq9BZ87WBPUPScDBnjKvBKVQ5xbS7GQwJKW7vXLD";
    const childXPriv = "xprvA7X7udsZk3q9mNMcGnN8PKHv5eHm6JA3TRzW2HsWnrYHbccXh5YMnRLA83VCPKWQUFmKf9AfCXSmoFs7HJ8Yr1LK52wJDVk262vGFszM4nb";
    const xPub = "xpub661MyMwAqRbcFSdAk5S6UECmA6MFQWiRBfPU5AsVcmrKY5HoFKPNYrKEq7isvaZVfNxhkrv5oXxFpQc6AVEcVW5NxeamKD6LyLUDMntbnq7";
    const seed = "a0c42a9c3ac6abf2ba6a9946ae83af18f51bf1c9fa7dacc4c92513cc4dd015834341c775dcd4c0fac73547c5662d81a9e9361a0aac604a73a321bd9103bce8af";
    const msg = "bb413645935a9bf1ecf0c3d30df2d573";
    const m = "immune year obscure laptop wage diamond join glue ecology envelope box fade mixed cradle athlete absorb stick rival punch dinosaur skin blind benefit pretty";
    const addrs = [
        "X-avax15qwuklmrfcmfw78yvka9pjsukjeevl4aveehq0",
        "X-avax13wqaxm6zgjq5qwzuyyxyl9yrz3edcgwgfht6gt",
        "X-avax1z3dn3vczxttts8dsdjfgtnkekf8nvqhhsj5stl",
        "X-avax1j6kze9n7r3e8wq6jta5mf6pd3fwnu0v9wygc8p",
        "X-avax1ngasfmvl8g63lzwznp0374myz7ajt4746g750m",
        "X-avax1pr7pzcggtrk6uap58sfsrlnhqhayly2gtlux9l",
        "X-avax1wwtn3gx7ke4ge2c29eg5sun36nyj55u4dle9gn",
        "X-avax13527pvlnxa4wrfgt0h8ya7nkjawqq29sv5s89x",
        "X-avax1gw6agtcsz969ugpqh2zx2lmjchg6npklvp43qq",
        "X-avax10agjetvj0a0vf6wtlh7s6ctr8ha8ch8km8z567"
    ];
    test("derive", () => {
        const hdnode = new src_1.HDNode(seed);
        const path = "m/9000'/2614666'/4849181'/4660'/2'/1/3";
        const child = hdnode.derive(path);
        expect(child.privateExtendedKey).toBe(childXPriv);
    });
    test("fromMasterSeedBuffer", () => {
        const hdnode = new src_1.HDNode(buffer_1.Buffer.from(seed));
        expect(hdnode.privateExtendedKey).toBe(xPriv);
    });
    test("fromMasterSeedString", () => {
        const hdnode = new src_1.HDNode(seed);
        expect(hdnode.privateExtendedKey).toBe(xPriv);
    });
    test("fromXPriv", () => {
        const hdnode = new src_1.HDNode(xPriv);
        expect(hdnode.privateExtendedKey).toBe(xPriv);
    });
    test("fromXPub", () => {
        const hdnode = new src_1.HDNode(xPub);
        expect(hdnode.publicExtendedKey).toBe(xPub);
    });
    test("sign", () => {
        const hdnode = new src_1.HDNode(xPriv);
        const sig = hdnode.sign(buffer_1.Buffer.from(msg));
        expect(buffer_1.Buffer.isBuffer(sig)).toBeTruthy();
    });
    test("verify", () => {
        const hdnode = new src_1.HDNode(xPriv);
        const sig = hdnode.sign(buffer_1.Buffer.from(msg));
        const verify = hdnode.verify(buffer_1.Buffer.from(msg), sig);
        expect(verify).toBeTruthy();
    });
    test("wipePrivateData", () => {
        const hdnode = new src_1.HDNode(xPriv);
        hdnode.wipePrivateData();
        expect(hdnode.privateKey).toBeNull();
    });
    test("BIP44", () => {
        const seed = mnemonic.mnemonicToSeedSync(m);
        const hdnode = new src_1.HDNode(seed);
        for (let i = 0; i <= 9; i++) {
            const child = hdnode.derive(`m/44'/9000'/0'/0/${i}`);
            xKeychain.importKey(child.privateKeyCB58);
        }
        const xAddressStrings = xchain.keyChain().getAddressStrings();
        expect(xAddressStrings).toStrictEqual(addrs);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGRub2RlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0cy91dGlscy9oZG5vZGUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQWlEO0FBQ2pELG9DQUFnQztBQUdoQyxNQUFNLEVBQUUsR0FBVyxXQUFXLENBQUE7QUFDOUIsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFBO0FBQ3pCLE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQTtBQUMvQixNQUFNLFNBQVMsR0FBVyxDQUFDLENBQUE7QUFDM0IsTUFBTSxTQUFTLEdBQWMsSUFBSSxhQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDekUsTUFBTSxRQUFRLEdBQWEsY0FBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ2pELE1BQU0sTUFBTSxHQUFXLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtBQUN6QyxNQUFNLFNBQVMsR0FBYSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7QUFFN0MsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFTLEVBQUU7SUFDNUIsTUFBTSxLQUFLLEdBQ1QsaUhBQWlILENBQUE7SUFDbkgsTUFBTSxVQUFVLEdBQ2QsaUhBQWlILENBQUE7SUFDbkgsTUFBTSxJQUFJLEdBQ1IsaUhBQWlILENBQUE7SUFDbkgsTUFBTSxJQUFJLEdBQ1Isa0lBQWtJLENBQUE7SUFDcEksTUFBTSxHQUFHLEdBQVcsa0NBQWtDLENBQUE7SUFDdEQsTUFBTSxDQUFDLEdBQ0wsOEpBQThKLENBQUE7SUFDaEssTUFBTSxLQUFLLEdBQWE7UUFDdEIsK0NBQStDO1FBQy9DLCtDQUErQztRQUMvQywrQ0FBK0M7UUFDL0MsK0NBQStDO1FBQy9DLCtDQUErQztRQUMvQywrQ0FBK0M7UUFDL0MsK0NBQStDO1FBQy9DLCtDQUErQztRQUMvQywrQ0FBK0M7UUFDL0MsK0NBQStDO0tBQ2hELENBQUE7SUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQVMsRUFBRTtRQUN4QixNQUFNLE1BQU0sR0FBVyxJQUFJLFlBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxNQUFNLElBQUksR0FBVyx3Q0FBd0MsQ0FBQTtRQUM3RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbkQsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBUyxFQUFFO1FBQ3RDLE1BQU0sTUFBTSxHQUFXLElBQUksWUFBTSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEdBQVMsRUFBRTtRQUN0QyxNQUFNLE1BQU0sR0FBVyxJQUFJLFlBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFTLEVBQUU7UUFDM0IsTUFBTSxNQUFNLEdBQVcsSUFBSSxZQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBUyxFQUFFO1FBQzFCLE1BQU0sTUFBTSxHQUFXLElBQUksWUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0MsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQVMsRUFBRTtRQUN0QixNQUFNLE1BQU0sR0FBVyxJQUFJLFlBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNqRCxNQUFNLENBQUMsZUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFTLEVBQUU7UUFDeEIsTUFBTSxNQUFNLEdBQVcsSUFBSSxZQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEMsTUFBTSxHQUFHLEdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDakQsTUFBTSxNQUFNLEdBQVksTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFTLEVBQUU7UUFDakMsTUFBTSxNQUFNLEdBQVcsSUFBSSxZQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsT0FBTyxFQUFFLEdBQVMsRUFBRTtRQUN2QixNQUFNLElBQUksR0FBVyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxNQUFNLEdBQVcsSUFBSSxZQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEtBQUssR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzVELFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1NBQzFDO1FBQ0QsTUFBTSxlQUFlLEdBQWEsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDdkUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF2YWxhbmNoZSwgeyBIRE5vZGUsIE1uZW1vbmljIH0gZnJvbSBcInNyY1wiXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwiYnVmZmVyL1wiXG5pbXBvcnQgeyBBVk1BUEksIEtleUNoYWluIH0gZnJvbSBcInNyYy9hcGlzL2F2bVwiXG5cbmNvbnN0IGlwOiBzdHJpbmcgPSBcImxvY2FsaG9zdFwiXG5jb25zdCBwb3J0OiBudW1iZXIgPSA5NjUwXG5jb25zdCBwcm90b2NvbDogc3RyaW5nID0gXCJodHRwXCJcbmNvbnN0IG5ldHdvcmtJRDogbnVtYmVyID0gMVxuY29uc3QgYXZhbGFuY2hlOiBBdmFsYW5jaGUgPSBuZXcgQXZhbGFuY2hlKGlwLCBwb3J0LCBwcm90b2NvbCwgbmV0d29ya0lEKVxuY29uc3QgbW5lbW9uaWM6IE1uZW1vbmljID0gTW5lbW9uaWMuZ2V0SW5zdGFuY2UoKVxuY29uc3QgeGNoYWluOiBBVk1BUEkgPSBhdmFsYW5jaGUuWENoYWluKClcbmNvbnN0IHhLZXljaGFpbjogS2V5Q2hhaW4gPSB4Y2hhaW4ua2V5Q2hhaW4oKVxuXG5kZXNjcmliZShcIkhETm9kZVwiLCAoKTogdm9pZCA9PiB7XG4gIGNvbnN0IHhQcml2OiBzdHJpbmcgPVxuICAgIFwieHBydjlzMjFaclFIMTQzSzRSSDFuUmtId3VWejNxR1JFQkxvYndVb1VCb3dMRHVjUVhtNGRvOGp2ejEyYWd2akhyQXdqSlh0cTlCWjg3V0JQVVBTY0RCbmpLdkJLVlE1eGJTN0dRd0pLVzd2WExEXCJcbiAgY29uc3QgY2hpbGRYUHJpdjogc3RyaW5nID1cbiAgICBcInhwcnZBN1g3dWRzWmszcTltTk1jR25OOFBLSHY1ZUhtNkpBM1RSelcySHNXbnJZSGJjY1hoNVlNblJMQTgzVkNQS1dRVUZtS2Y5QWZDWFNtb0ZzN0hKOFlyMUxLNTJ3SkRWazI2MnZHRnN6TTRuYlwiXG4gIGNvbnN0IHhQdWI6IHN0cmluZyA9XG4gICAgXCJ4cHViNjYxTXlNd0FxUmJjRlNkQWs1UzZVRUNtQTZNRlFXaVJCZlBVNUFzVmNtcktZNUhvRktQTllyS0VxN2lzdmFaVmZOeGhrcnY1b1h4RnBRYzZBVkVjVlc1TnhlYW1LRDZMeUxVRE1udGJucTdcIlxuICBjb25zdCBzZWVkOiBzdHJpbmcgPVxuICAgIFwiYTBjNDJhOWMzYWM2YWJmMmJhNmE5OTQ2YWU4M2FmMThmNTFiZjFjOWZhN2RhY2M0YzkyNTEzY2M0ZGQwMTU4MzQzNDFjNzc1ZGNkNGMwZmFjNzM1NDdjNTY2MmQ4MWE5ZTkzNjFhMGFhYzYwNGE3M2EzMjFiZDkxMDNiY2U4YWZcIlxuICBjb25zdCBtc2c6IHN0cmluZyA9IFwiYmI0MTM2NDU5MzVhOWJmMWVjZjBjM2QzMGRmMmQ1NzNcIlxuICBjb25zdCBtOiBzdHJpbmcgPVxuICAgIFwiaW1tdW5lIHllYXIgb2JzY3VyZSBsYXB0b3Agd2FnZSBkaWFtb25kIGpvaW4gZ2x1ZSBlY29sb2d5IGVudmVsb3BlIGJveCBmYWRlIG1peGVkIGNyYWRsZSBhdGhsZXRlIGFic29yYiBzdGljayByaXZhbCBwdW5jaCBkaW5vc2F1ciBza2luIGJsaW5kIGJlbmVmaXQgcHJldHR5XCJcbiAgY29uc3QgYWRkcnM6IHN0cmluZ1tdID0gW1xuICAgIFwiWC1hdmF4MTVxd3VrbG1yZmNtZnc3OHl2a2E5cGpzdWtqZWV2bDRhdmVlaHEwXCIsXG4gICAgXCJYLWF2YXgxM3dxYXhtNnpnanE1cXd6dXl5eHlsOXlyejNlZGNnd2dmaHQ2Z3RcIixcbiAgICBcIlgtYXZheDF6M2RuM3Zjenh0dHRzOGRzZGpmZ3Rua2VrZjhudnFoaHNqNXN0bFwiLFxuICAgIFwiWC1hdmF4MWo2a3plOW43cjNlOHdxNmp0YTVtZjZwZDNmd251MHY5d3lnYzhwXCIsXG4gICAgXCJYLWF2YXgxbmdhc2Ztdmw4ZzYzbHp3em5wMDM3NG15ejdhanQ0NzQ2Zzc1MG1cIixcbiAgICBcIlgtYXZheDFwcjdwemNnZ3RyazZ1YXA1OHNmc3JsbmhxaGF5bHkyZ3RsdXg5bFwiLFxuICAgIFwiWC1hdmF4MXd3dG4zZ3g3a2U0Z2UyYzI5ZWc1c3VuMzZueWo1NXU0ZGxlOWduXCIsXG4gICAgXCJYLWF2YXgxMzUyN3B2bG54YTR3cmZndDBoOHlhN25ramF3cXEyOXN2NXM4OXhcIixcbiAgICBcIlgtYXZheDFndzZhZ3Rjc3o5Njl1Z3BxaDJ6eDJsbWpjaGc2bnBrbHZwNDNxcVwiLFxuICAgIFwiWC1hdmF4MTBhZ2pldHZqMGEwdmY2d3RsaDdzNmN0cjhoYThjaDhrbTh6NTY3XCJcbiAgXVxuXG4gIHRlc3QoXCJkZXJpdmVcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZShzZWVkKVxuICAgIGNvbnN0IHBhdGg6IHN0cmluZyA9IFwibS85MDAwJy8yNjE0NjY2Jy80ODQ5MTgxJy80NjYwJy8yJy8xLzNcIlxuICAgIGNvbnN0IGNoaWxkID0gaGRub2RlLmRlcml2ZShwYXRoKVxuICAgIGV4cGVjdChjaGlsZC5wcml2YXRlRXh0ZW5kZWRLZXkpLnRvQmUoY2hpbGRYUHJpdilcbiAgfSlcblxuICB0ZXN0KFwiZnJvbU1hc3RlclNlZWRCdWZmZXJcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZShCdWZmZXIuZnJvbShzZWVkKSlcbiAgICBleHBlY3QoaGRub2RlLnByaXZhdGVFeHRlbmRlZEtleSkudG9CZSh4UHJpdilcbiAgfSlcblxuICB0ZXN0KFwiZnJvbU1hc3RlclNlZWRTdHJpbmdcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZShzZWVkKVxuICAgIGV4cGVjdChoZG5vZGUucHJpdmF0ZUV4dGVuZGVkS2V5KS50b0JlKHhQcml2KVxuICB9KVxuXG4gIHRlc3QoXCJmcm9tWFByaXZcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZSh4UHJpdilcbiAgICBleHBlY3QoaGRub2RlLnByaXZhdGVFeHRlbmRlZEtleSkudG9CZSh4UHJpdilcbiAgfSlcblxuICB0ZXN0KFwiZnJvbVhQdWJcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZSh4UHViKVxuICAgIGV4cGVjdChoZG5vZGUucHVibGljRXh0ZW5kZWRLZXkpLnRvQmUoeFB1YilcbiAgfSlcblxuICB0ZXN0KFwic2lnblwiLCAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaGRub2RlOiBIRE5vZGUgPSBuZXcgSEROb2RlKHhQcml2KVxuICAgIGNvbnN0IHNpZzogQnVmZmVyID0gaGRub2RlLnNpZ24oQnVmZmVyLmZyb20obXNnKSlcbiAgICBleHBlY3QoQnVmZmVyLmlzQnVmZmVyKHNpZykpLnRvQmVUcnV0aHkoKVxuICB9KVxuXG4gIHRlc3QoXCJ2ZXJpZnlcIiwgKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhkbm9kZTogSEROb2RlID0gbmV3IEhETm9kZSh4UHJpdilcbiAgICBjb25zdCBzaWc6IEJ1ZmZlciA9IGhkbm9kZS5zaWduKEJ1ZmZlci5mcm9tKG1zZykpXG4gICAgY29uc3QgdmVyaWZ5OiBib29sZWFuID0gaGRub2RlLnZlcmlmeShCdWZmZXIuZnJvbShtc2cpLCBzaWcpXG4gICAgZXhwZWN0KHZlcmlmeSkudG9CZVRydXRoeSgpXG4gIH0pXG5cbiAgdGVzdChcIndpcGVQcml2YXRlRGF0YVwiLCAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaGRub2RlOiBIRE5vZGUgPSBuZXcgSEROb2RlKHhQcml2KVxuICAgIGhkbm9kZS53aXBlUHJpdmF0ZURhdGEoKVxuICAgIGV4cGVjdChoZG5vZGUucHJpdmF0ZUtleSkudG9CZU51bGwoKVxuICB9KVxuXG4gIHRlc3QoXCJCSVA0NFwiLCAoKTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc2VlZDogQnVmZmVyID0gbW5lbW9uaWMubW5lbW9uaWNUb1NlZWRTeW5jKG0pXG4gICAgY29uc3QgaGRub2RlOiBIRE5vZGUgPSBuZXcgSEROb2RlKHNlZWQpXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8PSA5OyBpKyspIHtcbiAgICAgIGNvbnN0IGNoaWxkOiBIRE5vZGUgPSBoZG5vZGUuZGVyaXZlKGBtLzQ0Jy85MDAwJy8wJy8wLyR7aX1gKVxuICAgICAgeEtleWNoYWluLmltcG9ydEtleShjaGlsZC5wcml2YXRlS2V5Q0I1OClcbiAgICB9XG4gICAgY29uc3QgeEFkZHJlc3NTdHJpbmdzOiBzdHJpbmdbXSA9IHhjaGFpbi5rZXlDaGFpbigpLmdldEFkZHJlc3NTdHJpbmdzKClcbiAgICBleHBlY3QoeEFkZHJlc3NTdHJpbmdzKS50b1N0cmljdEVxdWFsKGFkZHJzKVxuICB9KVxufSlcbiJdfQ==

Выполнить команду


Для локальной разработки. Не используйте в интернете!