PHP WebShell

Текущая директория: /opt/BitGoJS/modules/bitgo/dist/test/v2/unit

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sinon = require("sinon");
const nock = require("nock");
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_test_1 = require("@bitgo/sdk-test");
const src_1 = require("../../../src");
nock.disableNetConnect();
describe('PrebuildAndSign', function () {
    const bitgo = sdk_test_1.TestBitGo.decorate(src_1.BitGo, { env: 'test' });
    const bgUrl = sdk_core_1.Environments[bitgo.getEnv()].uri;
    before(async function () {
        bitgo.initializeTestVars();
    });
    afterEach(function () {
        sinon.restore();
    });
    after(async function () {
        nock.cleanAll();
    });
    describe('Account Based MultiSig Hot Wallets', function () {
        const coin = 'hteth';
        const walletId = '65f060a22df7cd8a42958441d4e90a45';
        const wallet = new sdk_core_1.Wallet(bitgo, bitgo.coin(coin), { id: walletId, coin, multisigType: 'on-chain' });
        it('should validate build with user params', async function () {
            nock(bgUrl)
                .post(`/api/v2/${coin}/wallet/${walletId}/tx/build`)
                .reply(200, {
                feeInfo: {
                    date: '2025-03-11T16:54:31.174Z',
                    gasPrice: '2431332',
                    baseFee: '1431332',
                    gasUsedRatio: '0.847974014624559',
                    safeLowMinerTip: '1000000',
                    normalMinerTip: '1000000',
                    standardMinerTip: '1000000',
                    fastestMinerTip: '1000000',
                    ludicrousMinerTip: '1000000',
                },
                eip1559: {
                    maxPriorityFeePerGas: '1150000',
                    maxFeePerGas: '4012664',
                },
                recipients: [
                    {
                        address: '0xe33e8728f320ccd98af20b19b333857ad2325f07',
                        amount: '1000000000000000',
                    },
                ],
                nextContractSequenceId: 21,
                gasLimit: 200000,
                isBatch: false,
                coin: 'hteth',
                buildParams: {
                    recipients: [
                        {
                            address: '0xe33e872',
                            amount: '1000000',
                        },
                    ],
                },
            });
            sinon.stub(wallet, 'getKeychainsAndValidatePassphrase').resolves([]);
            await wallet
                .prebuildAndSignTransaction({
                recipients: [
                    {
                        address: '0xe33e872',
                        amount: '1000000',
                    },
                ],
            })
                .should.be.rejectedWith(`normal transaction amount in txPrebuild received from BitGo servers does not match txParams supplied by client`);
        });
        it('should validate that transaction is going to batcher for multiple recepients', async function () {
            nock(bgUrl)
                .post(`/api/v2/${coin}/wallet/${walletId}/tx/build`)
                .reply(200, {
                feeInfo: {
                    date: '2025-03-12T18:38:11.627Z',
                    gasPrice: '22051229178',
                    baseFee: '21051229178',
                    gasUsedRatio: '0.055718833333333335',
                    safeLowMinerTip: '1000000000',
                    normalMinerTip: '1250000000',
                    standardMinerTip: '1250000000',
                    fastestMinerTip: '1503782862',
                    ludicrousMinerTip: '1503782862',
                },
                eip1559: {
                    maxPriorityFeePerGas: '1437500000',
                    maxFeePerGas: '43539958356',
                },
                recipients: [
                    {
                        address: '0xc1b7e7cc1ecafbfd0771a5eb5454ab5b0356980d',
                        amount: '3000000000000000',
                        data: '0xc00c4e9e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000002669c843ef62adeff9915a36349ce2542f08d9760000000000000000000000003669c843ef62adeff9915a36349ce2542f08d976000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000038d7ea4c68000',
                    },
                ],
                nextContractSequenceId: 22,
                gasLimit: 200000,
                isBatch: true,
                coin: 'hteth',
                buildParams: {
                    comment: '',
                    recipients: [
                        {
                            address: '0x2669c843ef62AdEFF9915a36349cE2542F08D976',
                            amount: '2000000000000000',
                        },
                        {
                            address: '0x3669c843ef62AdEFF9915a36349cE2542F08D976',
                            amount: '1000000000000000',
                        },
                    ],
                },
            });
            sinon.stub(wallet, 'getKeychainsAndValidatePassphrase').resolves([]);
            await wallet
                .prebuildAndSignTransaction({
                comment: '',
                recipients: [
                    {
                        address: '0x2669c843ef62AdEFF9915a36349cE2542F08D976',
                        amount: '1000000000000000',
                    },
                    {
                        address: '0x3669c843ef62AdEFF9915a36349cE2542F08D976',
                        amount: '1000000000000000',
                    },
                ],
            })
                .should.be.rejectedWith(`batch transaction amount in txPrebuild received from BitGo servers does not match txParams supplied by client`);
        });
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L1ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFFN0IsOENBQXVEO0FBQ3ZELDhDQUF3RDtBQUV4RCxzQ0FBcUM7QUFFckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFFekIsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCLE1BQU0sS0FBSyxHQUF1QixvQkFBUyxDQUFDLFFBQVEsQ0FBQyxXQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RSxNQUFNLEtBQUssR0FBVyx1QkFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUV2RCxNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLGtDQUFrQyxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXJHLEVBQUUsQ0FBQyx3Q0FBd0MsRUFB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LElBQUksQ0FBQyxNQUFhLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUUsTUFBTSxNQUFNO2lCQUNULDBCQUEwQixDQUFDO2dCQUMxQixPQUFPLEVBQUUsRUFBRTtnQkFDWCxVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsTUFBTSxFQUFFLGtCQUFrQjtxQkFDM0I7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsTUFBTSxFQUFFLGtCQUFrQjtxQkFDM0I7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNyQiwrR0FBK0csQ0FDaEgsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAqIGFzIG5vY2sgZnJvbSAnbm9jayc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50cywgV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlc3RhYmxlQkcsIFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5cbmltcG9ydCB7IEJpdEdvIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5kZXNjcmliZSgnUHJlYnVpbGRBbmRTaWduJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbzogVGVzdGFibGVCRyAmIEJpdEdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBjb25zdCBiZ1VybDogc3RyaW5nID0gRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBY2NvdW50IEJhc2VkIE11bHRpU2lnIEhvdCBXYWxsZXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNvaW4gPSAnaHRldGgnO1xuICAgIGNvbnN0IHdhbGxldElkID0gJzY1ZjA2MGEyMmRmN2NkOGE0Mjk1ODQ0MWQ0ZTkwYTQ1JztcbiAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiaXRnby5jb2luKGNvaW4pLCB7IGlkOiB3YWxsZXRJZCwgY29pbiwgbXVsdGlzaWdUeXBlOiAnb24tY2hhaW4nIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBidWlsZCB3aXRoIHVzZXIgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHtjb2lufS93YWxsZXQvJHt3YWxsZXRJZH0vdHgvYnVpbGRgKVxuICAgICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgZGF0ZTogJzIwMjUtMDMtMTFUMTY6NTQ6MzEuMTc0WicsXG4gICAgICAgICAgICBnYXNQcmljZTogJzI0MzEzMzInLFxuICAgICAgICAgICAgYmFzZUZlZTogJzE0MzEzMzInLFxuICAgICAgICAgICAgZ2FzVXNlZFJhdGlvOiAnMC44NDc5NzQwMTQ2MjQ1NTknLFxuICAgICAgICAgICAgc2FmZUxvd01pbmVyVGlwOiAnMTAwMDAwMCcsXG4gICAgICAgICAgICBub3JtYWxNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgc3RhbmRhcmRNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgZmFzdGVzdE1pbmVyVGlwOiAnMTAwMDAwMCcsXG4gICAgICAgICAgICBsdWRpY3JvdXNNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxMTUwMDAwJyxcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzQwMTI2NjQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhlMzNlODcyOGYzMjBjY2Q5OGFmMjBiMTliMzMzODU3YWQyMzI1ZjA3JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbmV4dENvbnRyYWN0U2VxdWVuY2VJZDogMjEsXG4gICAgICAgICAgZ2FzTGltaXQ6IDIwMDAwMCxcbiAgICAgICAgICBpc0JhdGNoOiBmYWxzZSxcbiAgICAgICAgICBjb2luOiAnaHRldGgnLFxuICAgICAgICAgIGJ1aWxkUGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhlMzNlODcyJyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4ZTMzZTg3MicsXG4gICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICBgbm9ybWFsIHRyYW5zYWN0aW9uIGFtb3VudCBpbiB0eFByZWJ1aWxkIHJlY2VpdmVkIGZyb20gQml0R28gc2VydmVycyBkb2VzIG5vdCBtYXRjaCB0eFBhcmFtcyBzdXBwbGllZCBieSBjbGllbnRgXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoYXQgdHJhbnNhY3Rpb24gaXMgZ29pbmcgdG8gYmF0Y2hlciBmb3IgbXVsdGlwbGUgcmVjZXBpZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7Y29pbn0vd2FsbGV0LyR7d2FsbGV0SWR9L3R4L2J1aWxkYClcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgIGRhdGU6ICcyMDI1LTAzLTEyVDE4OjM4OjExLjYyN1onLFxuICAgICAgICAgICAgZ2FzUHJpY2U6ICcyMjA1MTIyOTE3OCcsXG4gICAgICAgICAgICBiYXNlRmVlOiAnMjEwNTEyMjkxNzgnLFxuICAgICAgICAgICAgZ2FzVXNlZFJhdGlvOiAnMC4wNTU3MTg4MzMzMzMzMzMzMzUnLFxuICAgICAgICAgICAgc2FmZUxvd01pbmVyVGlwOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICBub3JtYWxNaW5lclRpcDogJzEyNTAwMDAwMDAnLFxuICAgICAgICAgICAgc3RhbmRhcmRNaW5lclRpcDogJzEyNTAwMDAwMDAnLFxuICAgICAgICAgICAgZmFzdGVzdE1pbmVyVGlwOiAnMTUwMzc4Mjg2MicsXG4gICAgICAgICAgICBsdWRpY3JvdXNNaW5lclRpcDogJzE1MDM3ODI4NjInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxNDM3NTAwMDAwJyxcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzQzNTM5OTU4MzU2JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4YzFiN2U3Y2MxZWNhZmJmZDA3NzFhNWViNTQ1NGFiNWIwMzU2OTgwZCcsXG4gICAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICBkYXRhOiAnMHhjMDBjNGU5ZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI2NjljODQzZWY2MmFkZWZmOTkxNWEzNjM0OWNlMjU0MmYwOGQ5NzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNjY5Yzg0M2VmNjJhZGVmZjk5MTVhMzYzNDljZTI1NDJmMDhkOTc2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM4ZDdlYTRjNjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOGQ3ZWE0YzY4MDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAyMixcbiAgICAgICAgICBnYXNMaW1pdDogMjAwMDAwLFxuICAgICAgICAgIGlzQmF0Y2g6IHRydWUsXG4gICAgICAgICAgY29pbjogJ2h0ZXRoJyxcbiAgICAgICAgICBidWlsZFBhcmFtczoge1xuICAgICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6ICcyMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDM2NjljODQzZWY2MkFkRUZGOTkxNWEzNjM0OWNFMjU0MkYwOEQ5NzYnLFxuICAgICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIHNpbm9uLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldEtleWNoYWluc0FuZFZhbGlkYXRlUGFzc3BocmFzZScpLnJlc29sdmVzKFtdKTtcblxuICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgIC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgzNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgIGBiYXRjaCB0cmFuc2FjdGlvbiBhbW91bnQgaW4gdHhQcmVidWlsZCByZWNlaXZlZCBmcm9tIEJpdEdvIHNlcnZlcnMgZG9lcyBub3QgbWF0Y2ggdHhQYXJhbXMgc3VwcGxpZWQgYnkgY2xpZW50YFxuICAgICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19

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


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