PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-lib/dist/test/integration_local_rpc
Просмотр файла: parseDashEvo.js
"use strict";
/*
Despite the location of this file, the fixtures are in fact not created via `local_rpc` but a
modified dash unit test:
https://github.com/OttoAllmendinger/bitcoin/commit/0845a546e1bd97ac2037647f7398c6e20cfb7153
However the generated fixtures have the same format as the RPC responses so we will put the code here.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.readDashEvoTransactions = readDashEvoTransactions;
const fs = require("fs-extra");
const assert = require("assert");
const compare_1 = require("./compare");
const transaction_util_1 = require("../transaction_util");
const src_1 = require("../../src");
async function readDashEvoTransactions() {
const rootDir = `test/integration_local_rpc/fixtures/dashTestExtra/`;
const files = await fs.readdir(rootDir);
return Promise.all(files.sort().map(async (filename) => JSON.parse(await fs.readFile(`${rootDir}/${filename}`, 'utf8'))));
}
describe('Dash', function () {
const network = src_1.networks.dashTest;
let txs;
before('read fixtures', async function () {
txs = await readDashEvoTransactions();
});
it(`parses Evolution (EVO) special transactions`, function () {
assert.strictEqual(txs.length, 29);
txs.forEach((transaction) => {
const buf = Buffer.from(transaction.hex, 'hex');
const tx = (0, transaction_util_1.parseTransactionRoundTrip)(buf, network);
assert.deepStrictEqual((0, compare_1.normalizeParsedTransaction)(tx, network), (0, compare_1.normalizeRpcTransaction)(transaction, network));
});
});
it(`Calculates correct sighash`, function () {
const txsExtraPayload = txs
.map((transaction) => (0, transaction_util_1.parseTransactionRoundTrip)(Buffer.from(transaction.hex, 'hex'), network))
.filter((tx) => tx.extraPayload && tx.extraPayload.length > 0);
const txsNormalizedHashes = txsExtraPayload.map((tx) =>
// https://github.com/bitcoin/bitcoin/pull/3656/files
tx.hashForSignature(0, Buffer.alloc(0), src_1.Transaction.SIGHASH_ALL).toString('hex'));
assert.deepStrictEqual(txsNormalizedHashes, [
'6af1aa2b82798cfba54961445132ddd612642f5fd32bfb3cafaa30eeff204d29',
'dbe20a989766a4fed6438b109fa64191d0ccc6f560f1a8920ebbbc0254fa2e98',
'66f9f8c5cc628e429006c462e711571f4b3246d89e8977b2fa11005769f44c00',
'51a0f90eba51615374a27f91d21fd02232449e9ad7c0baa35099c5444a274fe9',
'b7a411ad3541c7a9cda8c6185f2ab957d462a2fba063ccefded70b7d5b5c1ea9',
'b1e5d0b87e7dcc6fa0c7896ab36a68b3f8211d669a9ce0eb8a32ec984d66aa95',
'766668a5925a5858dbb263ddcc58d104e33bb6700189e38984dcc239d0a87878',
'82464689bcfae77ba24f8453f2c3bb50fa25fb022eb02a3aea2b550e45810649',
'fab147b2e788bb7ff8734a2c8cf7bebfdc7d324edf70896001cb5ea98918ecdd',
'2e4f49ad4c867d5702e1ca10526d86cd73bf77322728b408d9fe2685063e8c51',
'8b6c400dbae12d5e814b1871c3b794ae9cca23bfdc3f6ebe54cccbd7e5577579',
'5cb8e125c9ad5cb2f4f2a494ebf3411711ac4331f3284c3c05d3696775c1398f',
'b196f24d479d995b674e61b786505d89f4b0513f0bc4f981495efc5d17b5eb46',
'f27f3ad3ace5a9682a3cca54af759e78295a94c75126f6062d086380f41a5fab',
'6cc89ea666304705ba494992e81546fb7d4a4cc2d24d1b13c7091d18c3c32730',
'a6d458a269c18a0f2a453f1f5ea5e033f217959d75dcd8aac9415e8586c81418',
'df5463da5fd164444378232f8e050406fc42ea48c4db02170a2eef224100131b',
'c092e8bb800616448efd56817f7cc1ccc8b1bcb4378fc3ab48951f4fc76a1ea2',
'13376fc808ebf8ee5bdec5d61d02ea5b8961e0377891a22c3b170fcf2d16d6e2',
'192f9db5d71817a04bb1a601a6368eda95fc16a6018da9366c89f37c9ab2de29',
'4fa5ea402103dafc4c15beec91b69875df5687edc3c005af8a6064f55f71eefa',
'9da4657761b7b8c476d5cebc9dfc4477604d7ed6972c5f34af27a6a3cdcab4f2',
'62b23def8d6a172d345d6bea68f26eb56a9f41b679a98e46c019a51e15f5e0bb',
'c5054c1af1ad9f0279c546d7b4125cc505c8b75392afba4fd0267dc9f39e51db',
'2db5d36542d3bf6d98d5896d58f1723548090fe82247c9483ac32b4c78607e82',
'5204293f35c482ab7ce592b6d65dab2aaeecd506ed70c942e8034dea3adde593',
]);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VEYXNoRXZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbl9sb2NhbF9ycGMvcGFyc2VEYXNoRXZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0VBU0U7O0FBYUYsMERBTUM7QUFqQkQsK0JBQStCO0FBQy9CLGlDQUFpQztBQUdqQyx1Q0FBZ0Y7QUFFaEYsMERBQWdFO0FBRWhFLG1DQUFrRDtBQUczQyxLQUFLLFVBQVUsdUJBQXVCO0lBQzNDLE1BQU0sT0FBTyxHQUFHLG9EQUFvRCxDQUFDO0lBQ3JFLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUN0RyxDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixNQUFNLE9BQU8sR0FBRyxjQUFRLENBQUMsUUFBUSxDQUFDO0lBQ2xDLElBQUksR0FBcUIsQ0FBQztJQUUxQixNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUs7UUFDM0IsR0FBRyxHQUFHLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRTtRQUNoRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFBLDRDQUF5QixFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsb0NBQTBCLEVBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUEsaUNBQXVCLEVBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDakgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixNQUFNLGVBQWUsR0FBRyxHQUFHO2FBQ3hCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ25CLElBQUEsNENBQXlCLEVBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDakc7YUFDQSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDckQscURBQXFEO1FBQ3JELEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDakYsQ0FBQztRQUNGLE1BQU0sQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUU7WUFDMUMsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtZQUNsRSxrRUFBa0U7WUFDbEUsa0VBQWtFO1lBQ2xFLGtFQUFrRTtTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcblxuRGVzcGl0ZSB0aGUgbG9jYXRpb24gb2YgdGhpcyBmaWxlLCB0aGUgZml4dHVyZXMgYXJlIGluIGZhY3Qgbm90IGNyZWF0ZWQgdmlhIGBsb2NhbF9ycGNgIGJ1dCBhXG5tb2RpZmllZCBkYXNoIHVuaXQgdGVzdDpcblxuaHR0cHM6Ly9naXRodWIuY29tL090dG9BbGxtZW5kaW5nZXIvYml0Y29pbi9jb21taXQvMDg0NWE1NDZlMWJkOTdhYzIwMzc2NDdmNzM5OGM2ZTIwY2ZiNzE1M1xuXG5Ib3dldmVyIHRoZSBnZW5lcmF0ZWQgZml4dHVyZXMgaGF2ZSB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIFJQQyByZXNwb25zZXMgc28gd2Ugd2lsbCBwdXQgdGhlIGNvZGUgaGVyZS5cblxuKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFJwY1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9nZW5lcmF0ZS9ScGNUeXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXJzZWRUcmFuc2FjdGlvbiwgbm9ybWFsaXplUnBjVHJhbnNhY3Rpb24gfSBmcm9tICcuL2NvbXBhcmUnO1xuXG5pbXBvcnQgeyBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25fdXRpbCc7XG5cbmltcG9ydCB7IG5ldHdvcmtzLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBEYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMvYml0Z28nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERhc2hFdm9UcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxScGNUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHJvb3REaXIgPSBgdGVzdC9pbnRlZ3JhdGlvbl9sb2NhbF9ycGMvZml4dHVyZXMvZGFzaFRlc3RFeHRyYS9gO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIocm9vdERpcik7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5zb3J0KCkubWFwKGFzeW5jIChmaWxlbmFtZSkgPT4gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShgJHtyb290RGlyfS8ke2ZpbGVuYW1lfWAsICd1dGY4JykpKVxuICApO1xufVxuXG5kZXNjcmliZSgnRGFzaCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgbmV0d29yayA9IG5ldHdvcmtzLmRhc2hUZXN0O1xuICBsZXQgdHhzOiBScGNUcmFuc2FjdGlvbltdO1xuXG4gIGJlZm9yZSgncmVhZCBmaXh0dXJlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0eHMgPSBhd2FpdCByZWFkRGFzaEV2b1RyYW5zYWN0aW9ucygpO1xuICB9KTtcblxuICBpdChgcGFyc2VzIEV2b2x1dGlvbiAoRVZPKSBzcGVjaWFsIHRyYW5zYWN0aW9uc2AsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHhzLmxlbmd0aCwgMjkpO1xuXG4gICAgdHhzLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi5oZXgsICdoZXgnKTtcbiAgICAgIGNvbnN0IHR4ID0gcGFyc2VUcmFuc2FjdGlvblJvdW5kVHJpcChidWYsIG5ldHdvcmspO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChub3JtYWxpemVQYXJzZWRUcmFuc2FjdGlvbih0eCwgbmV0d29yayksIG5vcm1hbGl6ZVJwY1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBuZXR3b3JrKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KGBDYWxjdWxhdGVzIGNvcnJlY3Qgc2lnaGFzaGAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eHNFeHRyYVBheWxvYWQgPSB0eHNcbiAgICAgIC5tYXAoKHRyYW5zYWN0aW9uKSA9PlxuICAgICAgICBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwPG51bWJlciwgRGFzaFRyYW5zYWN0aW9uPihCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi5oZXgsICdoZXgnKSwgbmV0d29yaylcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoKHR4KSA9PiB0eC5leHRyYVBheWxvYWQgJiYgdHguZXh0cmFQYXlsb2FkLmxlbmd0aCA+IDApO1xuICAgIGNvbnN0IHR4c05vcm1hbGl6ZWRIYXNoZXMgPSB0eHNFeHRyYVBheWxvYWQubWFwKCh0eCkgPT5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vcHVsbC8zNjU2L2ZpbGVzXG4gICAgICB0eC5oYXNoRm9yU2lnbmF0dXJlKDAsIEJ1ZmZlci5hbGxvYygwKSwgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTEwpLnRvU3RyaW5nKCdoZXgnKVxuICAgICk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0eHNOb3JtYWxpemVkSGFzaGVzLCBbXG4gICAgICAnNmFmMWFhMmI4Mjc5OGNmYmE1NDk2MTQ0NTEzMmRkZDYxMjY0MmY1ZmQzMmJmYjNjYWZhYTMwZWVmZjIwNGQyOScsXG4gICAgICAnZGJlMjBhOTg5NzY2YTRmZWQ2NDM4YjEwOWZhNjQxOTFkMGNjYzZmNTYwZjFhODkyMGViYmJjMDI1NGZhMmU5OCcsXG4gICAgICAnNjZmOWY4YzVjYzYyOGU0MjkwMDZjNDYyZTcxMTU3MWY0YjMyNDZkODllODk3N2IyZmExMTAwNTc2OWY0NGMwMCcsXG4gICAgICAnNTFhMGY5MGViYTUxNjE1Mzc0YTI3ZjkxZDIxZmQwMjIzMjQ0OWU5YWQ3YzBiYWEzNTA5OWM1NDQ0YTI3NGZlOScsXG4gICAgICAnYjdhNDExYWQzNTQxYzdhOWNkYThjNjE4NWYyYWI5NTdkNDYyYTJmYmEwNjNjY2VmZGVkNzBiN2Q1YjVjMWVhOScsXG4gICAgICAnYjFlNWQwYjg3ZTdkY2M2ZmEwYzc4OTZhYjM2YTY4YjNmODIxMWQ2NjlhOWNlMGViOGEzMmVjOTg0ZDY2YWE5NScsXG4gICAgICAnNzY2NjY4YTU5MjVhNTg1OGRiYjI2M2RkY2M1OGQxMDRlMzNiYjY3MDAxODllMzg5ODRkY2MyMzlkMGE4Nzg3OCcsXG4gICAgICAnODI0NjQ2ODliY2ZhZTc3YmEyNGY4NDUzZjJjM2JiNTBmYTI1ZmIwMjJlYjAyYTNhZWEyYjU1MGU0NTgxMDY0OScsXG4gICAgICAnZmFiMTQ3YjJlNzg4YmI3ZmY4NzM0YTJjOGNmN2JlYmZkYzdkMzI0ZWRmNzA4OTYwMDFjYjVlYTk4OTE4ZWNkZCcsXG4gICAgICAnMmU0ZjQ5YWQ0Yzg2N2Q1NzAyZTFjYTEwNTI2ZDg2Y2Q3M2JmNzczMjI3MjhiNDA4ZDlmZTI2ODUwNjNlOGM1MScsXG4gICAgICAnOGI2YzQwMGRiYWUxMmQ1ZTgxNGIxODcxYzNiNzk0YWU5Y2NhMjNiZmRjM2Y2ZWJlNTRjY2NiZDdlNTU3NzU3OScsXG4gICAgICAnNWNiOGUxMjVjOWFkNWNiMmY0ZjJhNDk0ZWJmMzQxMTcxMWFjNDMzMWYzMjg0YzNjMDVkMzY5Njc3NWMxMzk4ZicsXG4gICAgICAnYjE5NmYyNGQ0NzlkOTk1YjY3NGU2MWI3ODY1MDVkODlmNGIwNTEzZjBiYzRmOTgxNDk1ZWZjNWQxN2I1ZWI0NicsXG4gICAgICAnZjI3ZjNhZDNhY2U1YTk2ODJhM2NjYTU0YWY3NTllNzgyOTVhOTRjNzUxMjZmNjA2MmQwODYzODBmNDFhNWZhYicsXG4gICAgICAnNmNjODllYTY2NjMwNDcwNWJhNDk0OTkyZTgxNTQ2ZmI3ZDRhNGNjMmQyNGQxYjEzYzcwOTFkMThjM2MzMjczMCcsXG4gICAgICAnYTZkNDU4YTI2OWMxOGEwZjJhNDUzZjFmNWVhNWUwMzNmMjE3OTU5ZDc1ZGNkOGFhYzk0MTVlODU4NmM4MTQxOCcsXG4gICAgICAnZGY1NDYzZGE1ZmQxNjQ0NDQzNzgyMzJmOGUwNTA0MDZmYzQyZWE0OGM0ZGIwMjE3MGEyZWVmMjI0MTAwMTMxYicsXG4gICAgICAnYzA5MmU4YmI4MDA2MTY0NDhlZmQ1NjgxN2Y3Y2MxY2NjOGIxYmNiNDM3OGZjM2FiNDg5NTFmNGZjNzZhMWVhMicsXG4gICAgICAnMTMzNzZmYzgwOGViZjhlZTViZGVjNWQ2MWQwMmVhNWI4OTYxZTAzNzc4OTFhMjJjM2IxNzBmY2YyZDE2ZDZlMicsXG4gICAgICAnMTkyZjlkYjVkNzE4MTdhMDRiYjFhNjAxYTYzNjhlZGE5NWZjMTZhNjAxOGRhOTM2NmM4OWYzN2M5YWIyZGUyOScsXG4gICAgICAnNGZhNWVhNDAyMTAzZGFmYzRjMTViZWVjOTFiNjk4NzVkZjU2ODdlZGMzYzAwNWFmOGE2MDY0ZjU1ZjcxZWVmYScsXG4gICAgICAnOWRhNDY1Nzc2MWI3YjhjNDc2ZDVjZWJjOWRmYzQ0Nzc2MDRkN2VkNjk3MmM1ZjM0YWYyN2E2YTNjZGNhYjRmMicsXG4gICAgICAnNjJiMjNkZWY4ZDZhMTcyZDM0NWQ2YmVhNjhmMjZlYjU2YTlmNDFiNjc5YTk4ZTQ2YzAxOWE1MWUxNWY1ZTBiYicsXG4gICAgICAnYzUwNTRjMWFmMWFkOWYwMjc5YzU0NmQ3YjQxMjVjYzUwNWM4Yjc1MzkyYWZiYTRmZDAyNjdkYzlmMzllNTFkYicsXG4gICAgICAnMmRiNWQzNjU0MmQzYmY2ZDk4ZDU4OTZkNThmMTcyMzU0ODA5MGZlODIyNDdjOTQ4M2FjMzJiNGM3ODYwN2U4MicsXG4gICAgICAnNTIwNDI5M2YzNWM0ODJhYjdjZTU5MmI2ZDY1ZGFiMmFhZWVjZDUwNmVkNzBjOTQyZTgwMzRkZWEzYWRkZTU5MycsXG4gICAgXSk7XG4gIH0pO1xufSk7XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!