PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-eth/dist/test/fixtures

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getContractCallResponse = exports.getContractCallRequest = exports.getBalanceResponse = exports.getTxListResponse = void 0;
exports.getTxListRequest = getTxListRequest;
exports.getBalanceRequest = getBalanceRequest;
exports.getNonBitGoRecoveryForHotWalletsMPCv2 = getNonBitGoRecoveryForHotWalletsMPCv2;
exports.getBuildUnsignedSweepForSelfCustodyColdWalletsMPCv2 = getBuildUnsignedSweepForSelfCustodyColdWalletsMPCv2;
exports.getInvalidNonBitGoRecoveryParams = getInvalidNonBitGoRecoveryParams;
module.exports.getHalfSignedTethFromVault = function () {
    return {
        paramsFromVault: {
            txPrebuild: {
                halfSigned: {
                    recipients: [
                        {
                            address: '0xebd0d0c1f101ab5a27ef1c54430e0c4b1166548b',
                            amount: '1000000000000000000',
                            value: '1.000000000000000000 TETH',
                        },
                    ],
                    expireTime: 1549311285,
                    contractSequenceId: 1,
                    operationHash: '0x19e8caf58f41071b8522e57d84686458667221e70a584e55bfc3af0c02a143f9',
                    signature: '0x45864316d0c882ace5a3d5a000db8b9047835281c7dc9759441424f3f470d48821f9baebc35e4d1955af1cb072d4e9b1fa4d4dddcb7a859ba6d3bbe33f6efdfb1c',
                },
                coin: 'teth',
                gasPrice: '20000000000',
                gasLimit: '500000',
                amount: '1000000000000000000',
                walletContractAddress: '0x27121c36c854c8775166f01ee9b2a5cc012718af',
                recipients: [
                    {
                        address: '0xebd0d0c1f101ab5a27ef1c54430e0c4b1166548b',
                        amount: '1000000000000000000',
                        value: '1.000000000000000000 TETH',
                        $$hashKey: 'object:20',
                    },
                ],
                fee: '0.010000000000000000 TETH',
                total: '1.010000000000000009 TETH',
                isUnknownTokenAddress: false,
            },
            prv: 'xprv9s21ZrQH143K4Vt5t2P7wySzHWNLZrCzwHBJFGnr9nnLVW45iCvfT9iSpEsmnnkQxxSrtSSfU9APZRo4oR28z6kqQ2HxBRWec4dti5APG1K',
            recipients: [
                {
                    address: '0xebd0d0c1f101ab5a27ef1c54430e0c4b1166548b',
                    amount: '1000000000000000000',
                    value: '1.000000000000000000 TETH',
                    $$hashKey: 'object:20',
                },
            ],
            signingKeyNonce: 1,
            walletContractAddress: '0x27121c36c854c8775166f01ee9b2a5cc012718af',
            isLastSignature: true,
        },
        expectedResult: {
            txHex: 'f901cb018504a817c8008307a1209427121c36c854c8775166f01ee9b2a5cc012718af80b9016439125215000000000000000000000000ebd0d0c1f101ab5a27ef1c54430e0c4b1166548b0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005c589d35000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004145864316d0c882ace5a3d5a000db8b9047835281c7dc9759441424f3f470d48821f9baebc35e4d1955af1cb072d4e9b1fa4d4dddcb7a859ba6d3bbe33f6efdfb1c000000000000000000000000000000000000000000000000000000000000001ba0ea29106959adf3042ff3ee4955db795ec2b0ddb994c4a244fa3ea5a891d49109a06efee03668c6579f4ece9362b2e682a313a89224d9bc73e72cbd9364fd6aa3c4',
        },
    };
};
module.exports.getUnsignedEip1559TethFromVault = function () {
    return {
        paramsFromVault: {
            txPrebuild: {
                eip1559: {
                    maxPriorityFeePerGas: '1000000000',
                    maxFeePerGas: '1000000014',
                },
                recipients: [
                    {
                        amount: '1000000000000000000',
                        address: '0x5e55082d4c6919b65fcda80f801038d85dfec1b3',
                        data: 'abcdef',
                    },
                ],
                nextContractSequenceId: 1,
                gasLimit: 500000,
                isBatch: false,
                coin: 'teth',
                walletId: '616f03422f5814000608f346d694bfef',
                walletContractAddress: '0x6c089dbaf18618273711d12cb3f61f5cba9f86ee',
                amount: '10000000000000000',
                address: '0x46Fd47e1a52463E1d2d304812F34435Bd1e40DBA',
                receivedCoin: {
                    name: 'teth',
                    svg: 'eth',
                    modifier: '1000000000000000000',
                    modifierExp: 18,
                    fullDisplay: 'Testnet Ethereum',
                    shortDisplay: 'TETH',
                    family: 'eth',
                    hasMarketData: true,
                    walletCreationPolling: true,
                    requiresPricingPlan: false,
                    hasTokens: true,
                    isUtxoCoin: false,
                },
            },
            prv: 'xprv9s21ZrQH143K4Vt5t2P7wySzHWNLZrCzwHBJFGnr9nnLVW45iCvfT9iSpEsmnnkQxxSrtSSfU9APZRo4oR28z6kqQ2HxBRWec4dti5APG1K',
            recipients: [
                {
                    address: '0xebd0d0c1f101ab5a27ef1c54430e0c4b1166548b',
                    amount: '1000000000000000000',
                    value: '1.000000000000000000 TETH',
                    $$hashKey: 'object:20',
                },
            ],
            signingKeyNonce: 1,
            walletContractAddress: '0x27121c36c854c8775166f01ee9b2a5cc012718af',
        },
        expectedResult: {
            halfSigned: {
                eip1559: { maxPriorityFeePerGas: '1000000000', maxFeePerGas: '1000000014' },
                isBatch: false,
                recipients: [
                    {
                        address: '0x5e55082d4c6919b65fcda80f801038d85dfec1b3',
                        amount: '1000000000000000000',
                        data: 'abcdef',
                    },
                ],
                expireTime: 1635453518,
                contractSequenceId: 1,
                operationHash: '0x7a7f023f34e0acd9c1a69dde09bc30562de362c464d829dc1393cc0a63efd149',
                signature: '0x0f9eebcab976926ec251eb2d91d1cd1f9e396fa21cc7fffa46a892784b5fef7e0d13aa57721227884958affe41f8ea957434b864c75dc3f0bddb798b1ab7af411b',
            },
        },
    };
};
module.exports.WRWUnsignedSweepETHTx = {
    tx: 'f9012b808504a817c8008307a12094fd12f1d563650fbdd9314dce06992159778f634380b9010439125215000000000000000000000000a98fdfc2c711260cd665a3884b509b4a5ad6f4e80000000000000000000000000000000000000000000000003782dace9d90000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000005f6a471c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c8080',
    userKey: 'xpub661MyMwAqRbcFcNDKt46HgPAJTfNyQUS6M7i8jUwZKHz9wZGaK1XdQuT8XU5PkFfbrfoGXc1C4QD9PDJ7zhpu52rLzzynovwgcXh7NtDbH9',
    backupKey: 'xpub661MyMwAqRbcGUJYcAgycBqG5HrQoUJAvBv7PEbvjGGffdtMP8hx3DX9AwzaY4vA7ynqHfxzRTRLwS2E9DH1HRPG8u7kWXd4JMCNgonGGnk',
    coin: 'teth',
    gasPrice: '20000000000',
    gasLimit: '500000',
    recipients: [
        {
            address: '0xa98fdfc2c711260cd665a3884b509b4a5ad6f4e8',
            amount: '4000000000000000000',
        },
    ],
    walletContractAddress: '0xfd12f1d563650fbdd9314dce06992159778f6343',
    amount: '4000000000000000000',
    backupKeyNonce: 0,
    recipient: {
        address: '0xa98fdfc2c711260cd665a3884b509b4a5ad6f4e8',
        amount: '4000000000000000000',
    },
    expireTime: 1600800540,
    contractSequenceId: 1,
    nextContractSequenceId: 1,
};
module.exports.WRWUnsignedSweepERC20Tx = {
    tx: 'f9010a808504a817c8008307a12094df07117705a9f8dc4c2a78de66b7f1797dba9d4e80b8e40dcd7a6c00000000000000000000000052c8b29ab8b0a49a01c2b75f8e7f11b23e0e37820000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000004f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa00000000000000000000000000000000000000000000000000000000611fb4330000000000000000000000000000000000000000000000000000000000002a7f00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000001c8080',
    userKey: 'xpub661MyMwAqRbcFXDcWD2vxuebcT1ZpTF4Vke6qmMW8yzddwNYpAPjvYEEL5jLfyYXW2fuxtAxY8TgjPUJLcf1C8qz9N6VgZxArKX4EwB8rH5',
    backupKey: 'xpub661MyMwAqRbcGhSaXikpuTC9KU88Xx9LrjKSw1JKsvXNgabpTdgjy7LSovh9ZHhcqhAHQu7uthu7FguNGdcC4aXTKK5gqTcPe4WvLYRbCSG',
    coin: 'tdai',
    gasPrice: '20000000000',
    gasLimit: '500000',
    recipients: [
        {
            address: '0x52c8B29Ab8B0a49a01c2b75f8e7f11B23e0e3782',
            amount: '1000000000000000000',
        },
    ],
    walletContractAddress: '0xdf07117705a9f8dc4c2a78de66b7f1797dba9d4e',
    amount: '1000000000000000000',
    backupKeyNonce: 0,
    recipient: {
        address: '0x52c8b29ab8b0a49a01c2b75f8e7f11b23e0e3782',
        amount: '1000000000000000000',
    },
    expireTime: 1629468332,
    contractSequenceId: 10879,
    nextContractSequenceId: 10879,
    tokenContractAddress: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa',
};
function getTxListRequest(address) {
    return {
        module: 'account',
        action: 'txlist',
        address: address,
    };
}
exports.getTxListResponse = {
    status: '0',
    message: 'No transactions found',
    result: [],
};
function getBalanceRequest(address) {
    return {
        module: 'account',
        action: 'balance',
        address: address,
    };
}
exports.getBalanceResponse = {
    status: '1',
    message: 'OK',
    result: '9999999999999999928',
};
exports.getContractCallRequest = {
    module: 'proxy',
    action: 'eth_call',
    to: '0xdf07117705a9f8dc4c2a78de66b7f1797dba9d4e',
    data: 'a0b7967b',
    tag: 'latest',
};
exports.getContractCallResponse = {
    jsonrpc: '2.0',
    result: '0x0000000000000000000000000000000000000000000000000000000000002a7f',
    id: 1,
};
// Define configuration values for test
const TEST_ETH_WALLET_FIRST_ADDRESS = '0xdf07117705a9f8dc4c2a78de66b7f1797dba9d4e'; // Example of address on test network
const TEST_RECOVERY_PASSCODE = 'oPXkPN5Q0c8i44i0'; // Example of a test password
function getNonBitGoRecoveryForHotWalletsMPCv2(intendedChain = 'tarbeth') {
    return {
        userKey: '{"iv":"VFZ3jvXhxo1Z+Yaf2MtZnA==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n' +
            ':"ccm","adata":"","cipher":"aes","salt":"p+fkHuLa/8k=","ct":"hYG7pvljLIgCjZ\n' +
            '53PBlCde5KZRmlUKKHLtDMk+HJfuU46hW+x+C9WsIAO4gFPnTCvFVmQ8x7czCtcNFub5AO2otOG\n' +
            'OsX4GE2gXOEmCl1TpWwwNhm7yMUjGJUpgW6ZZgXSXdDitSKi4V/hk78SGSzjFOBSPYRa6I="}\n',
        backupKey: '{"iv":"VFZ3jvXhxo1Z+Yaf2MtZnA==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n' +
            ':"ccm","adata":"","cipher":"aes","salt":"p+fkHuLa/8k=","ct":"hYG7pvljLIgCjZ\n' +
            '53PBlCde5KZRmlUKKHLtDMk+HJfuU46hW+x+C9WsIAO4gFPnTCvFVmQ8x7czCtcNFub5AO2otOG\n' +
            'OsX4GE2gXOEmCl1TpWwwNhm7yMUjGJUpgW6ZZgXSXdDitSKi4V/hk78SGSzjFOBSPYRa6I="}\n',
        bitgoKey: '0x0472243651eaba6cae0391a3a65478ca5b91c299a49c15e9498ca910a52c499a3618115cc749034b0409066031000a79909c9854a50a0ef5219918f9818a60439b',
        walletPassphrase: TEST_RECOVERY_PASSCODE,
        walletContractAddress: TEST_ETH_WALLET_FIRST_ADDRESS,
        bitgoFeeAddress: '0x33a42faea3c6e87021347e51700b48aaf49aa1e7',
        recoveryDestination: '0xd5ADdE17feD8baed3F32b84AF05B8F2816f7b560',
        bitgoDestinationAddress: '0xE5986CE4490Deb67d2950562Ceb930Ddf9be7a14',
        eip1559: { maxFeePerGas: 20000000000, maxPriorityFeePerGas: 10000000000 },
        gasLimit: 500000,
        intendedChain: intendedChain,
    };
}
function getBuildUnsignedSweepForSelfCustodyColdWalletsMPCv2(intendedChain = 'tarbeth') {
    const address = '0xa91e1059953d7ef2adbbca4b688bfe22866fbcee';
    return {
        recoveryDestination: '0xd5ADdE17feD8baed3F32b84AF05B8F2816f7b560',
        bitgoDestinationAddress: '0xE5986CE4490Deb67d2950562Ceb930Ddf9be7a14',
        walletContractAddress: TEST_ETH_WALLET_FIRST_ADDRESS,
        eip1559: { maxFeePerGas: 20000000000, maxPriorityFeePerGas: 10000000000 },
        gasLimit: 500000,
        intendedChain: intendedChain,
        address: address,
        amount: '100000000000000000', // 0.1 ETH
        commonKeyChain: '0234eb39b22fed523ece7c78da29ba1f1de5b64a6e48013e0914de793bc1df0570e779de04758732734d97e54b782c8b336283811af6a2c57bd81438798e1c2446',
    };
}
function getInvalidNonBitGoRecoveryParams() {
    return {
        ...getNonBitGoRecoveryForHotWalletsMPCv2(),
        userKey: 'invalidUserKey',
    };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9maXh0dXJlcy9ldGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUxBLDRDQU1DO0FBUUQsOENBTUM7QUEwQkQsc0ZBdUJDO0FBRUQsa0hBY0M7QUFFRCw0RUFLQztBQWpSRCxNQUFNLENBQUMsT0FBTyxDQUFDLDBCQUEwQixHQUFHO0lBQzFDLE9BQU87UUFDTCxlQUFlLEVBQUU7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFO29CQUNWLFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxPQUFPLEVBQUUsNENBQTRDOzRCQUNyRCxNQUFNLEVBQUUscUJBQXFCOzRCQUM3QixLQUFLLEVBQUUsMkJBQTJCO3lCQUNuQztxQkFDRjtvQkFDRCxVQUFVLEVBQUUsVUFBVTtvQkFDdEIsa0JBQWtCLEVBQUUsQ0FBQztvQkFDckIsYUFBYSxFQUFFLG9FQUFvRTtvQkFDbkYsU0FBUyxFQUNQLHNJQUFzSTtpQkFDekk7Z0JBQ0QsSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixNQUFNLEVBQUUscUJBQXFCO2dCQUM3QixxQkFBcUIsRUFBRSw0Q0FBNEM7Z0JBQ25FLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxPQUFPLEVBQUUsNENBQTRDO3dCQUNyRCxNQUFNLEVBQUUscUJBQXFCO3dCQUM3QixLQUFLLEVBQUUsMkJBQTJCO3dCQUNsQyxTQUFTLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0Y7Z0JBQ0QsR0FBRyxFQUFFLDJCQUEyQjtnQkFDaEMsS0FBSyxFQUFFLDJCQUEyQjtnQkFDbEMscUJBQXFCLEVBQUUsS0FBSzthQUM3QjtZQUNELEdBQUcsRUFBRSxpSEFBaUg7WUFDdEgsVUFBVSxFQUFFO2dCQUNWO29CQUNFLE9BQU8sRUFBRSw0Q0FBNEM7b0JBQ3JELE1BQU0sRUFBRSxxQkFBcUI7b0JBQzdCLEtBQUssRUFBRSwyQkFBMkI7b0JBQ2xDLFNBQVMsRUFBRSxXQUFXO2lCQUN2QjthQUNGO1lBQ0QsZUFBZSxFQUFFLENBQUM7WUFDbEIscUJBQXFCLEVBQUUsNENBQTRDO1lBQ25FLGVBQWUsRUFBRSxJQUFJO1NBQ3RCO1FBQ0QsY0FBYyxFQUFFO1lBQ2QsS0FBSyxFQUNILDg1QkFBODVCO1NBQ2o2QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLCtCQUErQixHQUFHO0lBQy9DLE9BQU87UUFDTCxlQUFlLEVBQUU7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLG9CQUFvQixFQUFFLFlBQVk7b0JBQ2xDLFlBQVksRUFBRSxZQUFZO2lCQUMzQjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsTUFBTSxFQUFFLHFCQUFxQjt3QkFDN0IsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsSUFBSSxFQUFFLFFBQVE7cUJBQ2Y7aUJBQ0Y7Z0JBQ0Qsc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxrQ0FBa0M7Z0JBQzVDLHFCQUFxQixFQUFFLDRDQUE0QztnQkFDbkUsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsT0FBTyxFQUFFLDRDQUE0QztnQkFDckQsWUFBWSxFQUFFO29CQUNaLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxLQUFLO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxFQUFFO29CQUNmLFdBQVcsRUFBRSxrQkFBa0I7b0JBQy9CLFlBQVksRUFBRSxNQUFNO29CQUNwQixNQUFNLEVBQUUsS0FBSztvQkFDYixhQUFhLEVBQUUsSUFBSTtvQkFDbkIscUJBQXFCLEVBQUUsSUFBSTtvQkFDM0IsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO2FBQ0Y7WUFDRCxHQUFHLEVBQUUsaUhBQWlIO1lBQ3RILFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxPQUFPLEVBQUUsNENBQTRDO29CQUNyRCxNQUFNLEVBQUUscUJBQXFCO29CQUM3QixLQUFLLEVBQUUsMkJBQTJCO29CQUNsQyxTQUFTLEVBQUUsV0FBVztpQkFDdkI7YUFDRjtZQUNELGVBQWUsRUFBRSxDQUFDO1lBQ2xCLHFCQUFxQixFQUFFLDRDQUE0QztTQUNwRTtRQUNELGNBQWMsRUFBRTtZQUNkLFVBQVUsRUFBRTtnQkFDVixPQUFPLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRTtnQkFDM0UsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWO3dCQUNFLE9BQU8sRUFBRSw0Q0FBNEM7d0JBQ3JELE1BQU0sRUFBRSxxQkFBcUI7d0JBQzdCLElBQUksRUFBRSxRQUFRO3FCQUNmO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxVQUFVO2dCQUN0QixrQkFBa0IsRUFBRSxDQUFDO2dCQUNyQixhQUFhLEVBQUUsb0VBQW9FO2dCQUNuRixTQUFTLEVBQ1Asc0lBQXNJO2FBQ3pJO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsR0FBRztJQUNyQyxFQUFFLEVBQUUsOGxCQUE4bEI7SUFDbG1CLE9BQU8sRUFDTCxpSEFBaUg7SUFDbkgsU0FBUyxFQUNQLGlIQUFpSDtJQUNuSCxJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFVBQVUsRUFBRTtRQUNWO1lBQ0UsT0FBTyxFQUFFLDRDQUE0QztZQUNyRCxNQUFNLEVBQUUscUJBQXFCO1NBQzlCO0tBQ0Y7SUFDRCxxQkFBcUIsRUFBRSw0Q0FBNEM7SUFDbkUsTUFBTSxFQUFFLHFCQUFxQjtJQUM3QixjQUFjLEVBQUUsQ0FBQztJQUNqQixTQUFTLEVBQUU7UUFDVCxPQUFPLEVBQUUsNENBQTRDO1FBQ3JELE1BQU0sRUFBRSxxQkFBcUI7S0FDOUI7SUFDRCxVQUFVLEVBQUUsVUFBVTtJQUN0QixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLHNCQUFzQixFQUFFLENBQUM7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEdBQUc7SUFDdkMsRUFBRSxFQUFFLDRoQkFBNGhCO0lBQ2hpQixPQUFPLEVBQ0wsaUhBQWlIO0lBQ25ILFNBQVMsRUFDUCxpSEFBaUg7SUFDbkgsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsYUFBYTtJQUN2QixRQUFRLEVBQUUsUUFBUTtJQUNsQixVQUFVLEVBQUU7UUFDVjtZQUNFLE9BQU8sRUFBRSw0Q0FBNEM7WUFDckQsTUFBTSxFQUFFLHFCQUFxQjtTQUM5QjtLQUNGO0lBQ0QscUJBQXFCLEVBQUUsNENBQTRDO0lBQ25FLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsY0FBYyxFQUFFLENBQUM7SUFDakIsU0FBUyxFQUFFO1FBQ1QsT0FBTyxFQUFFLDRDQUE0QztRQUNyRCxNQUFNLEVBQUUscUJBQXFCO0tBQzlCO0lBQ0QsVUFBVSxFQUFFLFVBQVU7SUFDdEIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixzQkFBc0IsRUFBRSxLQUFLO0lBQzdCLG9CQUFvQixFQUFFLDRDQUE0QztDQUNuRSxDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxPQUFPO1FBQ0wsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQztBQUNKLENBQUM7QUFFWSxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLE1BQU0sRUFBRSxHQUFHO0lBQ1gsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxNQUFNLEVBQUUsRUFBRTtDQUNYLENBQUM7QUFFRixTQUFnQixpQkFBaUIsQ0FBQyxPQUFlO0lBQy9DLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVZLFFBQUEsa0JBQWtCLEdBQUc7SUFDaEMsTUFBTSxFQUFFLEdBQUc7SUFDWCxPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxxQkFBcUI7Q0FDOUIsQ0FBQztBQUVXLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsVUFBVTtJQUNsQixFQUFFLEVBQUUsNENBQTRDO0lBQ2hELElBQUksRUFBRSxVQUFVO0lBQ2hCLEdBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUc7SUFDckMsT0FBTyxFQUFFLEtBQUs7SUFDZCxNQUFNLEVBQUUsb0VBQW9FO0lBQzVFLEVBQUUsRUFBRSxDQUFDO0NBQ04sQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFNLDZCQUE2QixHQUFHLDRDQUE0QyxDQUFDLENBQUMscUNBQXFDO0FBQ3pILE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyw2QkFBNkI7QUFFaEYsU0FBZ0IscUNBQXFDLENBQUMsYUFBYSxHQUFHLFNBQVM7SUFDN0UsT0FBTztRQUNMLE9BQU8sRUFDTCwrRUFBK0U7WUFDL0UsK0VBQStFO1lBQy9FLCtFQUErRTtZQUMvRSw2RUFBNkU7UUFDL0UsU0FBUyxFQUNQLCtFQUErRTtZQUMvRSwrRUFBK0U7WUFDL0UsK0VBQStFO1lBQy9FLDZFQUE2RTtRQUMvRSxRQUFRLEVBQ04sc0lBQXNJO1FBQ3hJLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxxQkFBcUIsRUFBRSw2QkFBNkI7UUFDcEQsZUFBZSxFQUFFLDRDQUE0QztRQUM3RCxtQkFBbUIsRUFBRSw0Q0FBNEM7UUFDakUsdUJBQXVCLEVBQUUsNENBQTRDO1FBQ3JFLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFO1FBQ3pFLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGFBQWEsRUFBRSxhQUFhO0tBQzdCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsbURBQW1ELENBQUMsYUFBYSxHQUFHLFNBQVM7SUFDM0YsTUFBTSxPQUFPLEdBQUcsNENBQTRDLENBQUM7SUFDN0QsT0FBTztRQUNMLG1CQUFtQixFQUFFLDRDQUE0QztRQUNqRSx1QkFBdUIsRUFBRSw0Q0FBNEM7UUFDckUscUJBQXFCLEVBQUUsNkJBQTZCO1FBQ3BELE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFO1FBQ3pFLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxVQUFVO1FBQ3hDLGNBQWMsRUFDWixvSUFBb0k7S0FDdkksQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixnQ0FBZ0M7SUFDOUMsT0FBTztRQUNMLEdBQUcscUNBQXFDLEVBQUU7UUFDMUMsT0FBTyxFQUFFLGdCQUFnQjtLQUMxQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzLmdldEhhbGZTaWduZWRUZXRoRnJvbVZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4ge1xuICAgIHBhcmFtc0Zyb21WYXVsdDoge1xuICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICBoYWxmU2lnbmVkOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhlYmQwZDBjMWYxMDFhYjVhMjdlZjFjNTQ0MzBlMGM0YjExNjY1NDhiJyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMS4wMDAwMDAwMDAwMDAwMDAwMDAgVEVUSCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZXhwaXJlVGltZTogMTU0OTMxMTI4NSxcbiAgICAgICAgICBjb250cmFjdFNlcXVlbmNlSWQ6IDEsXG4gICAgICAgICAgb3BlcmF0aW9uSGFzaDogJzB4MTllOGNhZjU4ZjQxMDcxYjg1MjJlNTdkODQ2ODY0NTg2NjcyMjFlNzBhNTg0ZTU1YmZjM2FmMGMwMmExNDNmOScsXG4gICAgICAgICAgc2lnbmF0dXJlOlxuICAgICAgICAgICAgJzB4NDU4NjQzMTZkMGM4ODJhY2U1YTNkNWEwMDBkYjhiOTA0NzgzNTI4MWM3ZGM5NzU5NDQxNDI0ZjNmNDcwZDQ4ODIxZjliYWViYzM1ZTRkMTk1NWFmMWNiMDcyZDRlOWIxZmE0ZDRkZGRjYjdhODU5YmE2ZDNiYmUzM2Y2ZWZkZmIxYycsXG4gICAgICAgIH0sXG4gICAgICAgIGNvaW46ICd0ZXRoJyxcbiAgICAgICAgZ2FzUHJpY2U6ICcyMDAwMDAwMDAwMCcsXG4gICAgICAgIGdhc0xpbWl0OiAnNTAwMDAwJyxcbiAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJzB4MjcxMjFjMzZjODU0Yzg3NzUxNjZmMDFlZTliMmE1Y2MwMTI3MThhZicsXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMHhlYmQwZDBjMWYxMDFhYjVhMjdlZjFjNTQ0MzBlMGM0YjExNjY1NDhiJyxcbiAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgdmFsdWU6ICcxLjAwMDAwMDAwMDAwMDAwMDAwMCBURVRIJyxcbiAgICAgICAgICAgICQkaGFzaEtleTogJ29iamVjdDoyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmVlOiAnMC4wMTAwMDAwMDAwMDAwMDAwMDAgVEVUSCcsXG4gICAgICAgIHRvdGFsOiAnMS4wMTAwMDAwMDAwMDAwMDAwMDkgVEVUSCcsXG4gICAgICAgIGlzVW5rbm93blRva2VuQWRkcmVzczogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcHJ2OiAneHBydjlzMjFaclFIMTQzSzRWdDV0MlA3d3lTekhXTkxackN6d0hCSkZHbnI5bm5MVlc0NWlDdmZUOWlTcEVzbW5ua1F4eFNydFNTZlU5QVBaUm80b1IyOHo2a3FRMkh4QlJXZWM0ZHRpNUFQRzFLJyxcbiAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICcweGViZDBkMGMxZjEwMWFiNWEyN2VmMWM1NDQzMGUwYzRiMTE2NjU0OGInLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIHZhbHVlOiAnMS4wMDAwMDAwMDAwMDAwMDAwMDAgVEVUSCcsXG4gICAgICAgICAgJCRoYXNoS2V5OiAnb2JqZWN0OjIwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzaWduaW5nS2V5Tm9uY2U6IDEsXG4gICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICcweDI3MTIxYzM2Yzg1NGM4Nzc1MTY2ZjAxZWU5YjJhNWNjMDEyNzE4YWYnLFxuICAgICAgaXNMYXN0U2lnbmF0dXJlOiB0cnVlLFxuICAgIH0sXG4gICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgIHR4SGV4OlxuICAgICAgICAnZjkwMWNiMDE4NTA0YTgxN2M4MDA4MzA3YTEyMDk0MjcxMjFjMzZjODU0Yzg3NzUxNjZmMDFlZTliMmE1Y2MwMTI3MThhZjgwYjkwMTY0MzkxMjUyMTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlYmQwZDBjMWYxMDFhYjVhMjdlZjFjNTQ0MzBlMGM0YjExNjY1NDhiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGRlMGI2YjNhNzY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVjNTg5ZDM1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MTQ1ODY0MzE2ZDBjODgyYWNlNWEzZDVhMDAwZGI4YjkwNDc4MzUyODFjN2RjOTc1OTQ0MTQyNGYzZjQ3MGQ0ODgyMWY5YmFlYmMzNWU0ZDE5NTVhZjFjYjA3MmQ0ZTliMWZhNGQ0ZGRkY2I3YTg1OWJhNmQzYmJlMzNmNmVmZGZiMWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFiYTBlYTI5MTA2OTU5YWRmMzA0MmZmM2VlNDk1NWRiNzk1ZWMyYjBkZGI5OTRjNGEyNDRmYTNlYTVhODkxZDQ5MTA5YTA2ZWZlZTAzNjY4YzY1NzlmNGVjZTkzNjJiMmU2ODJhMzEzYTg5MjI0ZDliYzczZTcyY2JkOTM2NGZkNmFhM2M0JyxcbiAgICB9LFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMuZ2V0VW5zaWduZWRFaXAxNTU5VGV0aEZyb21WYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICBwYXJhbXNGcm9tVmF1bHQ6IHtcbiAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgbWF4RmVlUGVyR2FzOiAnMTAwMDAwMDAxNCcsXG4gICAgICAgIH0sXG4gICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcweDVlNTUwODJkNGM2OTE5YjY1ZmNkYTgwZjgwMTAzOGQ4NWRmZWMxYjMnLFxuICAgICAgICAgICAgZGF0YTogJ2FiY2RlZicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbmV4dENvbnRyYWN0U2VxdWVuY2VJZDogMSxcbiAgICAgICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICAgICAgaXNCYXRjaDogZmFsc2UsXG4gICAgICAgIGNvaW46ICd0ZXRoJyxcbiAgICAgICAgd2FsbGV0SWQ6ICc2MTZmMDM0MjJmNTgxNDAwMDYwOGYzNDZkNjk0YmZlZicsXG4gICAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogJzB4NmMwODlkYmFmMTg2MTgyNzM3MTFkMTJjYjNmNjFmNWNiYTlmODZlZScsXG4gICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgYWRkcmVzczogJzB4NDZGZDQ3ZTFhNTI0NjNFMWQyZDMwNDgxMkYzNDQzNUJkMWU0MERCQScsXG4gICAgICAgIHJlY2VpdmVkQ29pbjoge1xuICAgICAgICAgIG5hbWU6ICd0ZXRoJyxcbiAgICAgICAgICBzdmc6ICdldGgnLFxuICAgICAgICAgIG1vZGlmaWVyOiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgbW9kaWZpZXJFeHA6IDE4LFxuICAgICAgICAgIGZ1bGxEaXNwbGF5OiAnVGVzdG5ldCBFdGhlcmV1bScsXG4gICAgICAgICAgc2hvcnREaXNwbGF5OiAnVEVUSCcsXG4gICAgICAgICAgZmFtaWx5OiAnZXRoJyxcbiAgICAgICAgICBoYXNNYXJrZXREYXRhOiB0cnVlLFxuICAgICAgICAgIHdhbGxldENyZWF0aW9uUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlc1ByaWNpbmdQbGFuOiBmYWxzZSxcbiAgICAgICAgICBoYXNUb2tlbnM6IHRydWUsXG4gICAgICAgICAgaXNVdHhvQ29pbjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcHJ2OiAneHBydjlzMjFaclFIMTQzSzRWdDV0MlA3d3lTekhXTkxackN6d0hCSkZHbnI5bm5MVlc0NWlDdmZUOWlTcEVzbW5ua1F4eFNydFNTZlU5QVBaUm80b1IyOHo2a3FRMkh4QlJXZWM0ZHRpNUFQRzFLJyxcbiAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6ICcweGViZDBkMGMxZjEwMWFiNWEyN2VmMWM1NDQzMGUwYzRiMTE2NjU0OGInLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIHZhbHVlOiAnMS4wMDAwMDAwMDAwMDAwMDAwMDAgVEVUSCcsXG4gICAgICAgICAgJCRoYXNoS2V5OiAnb2JqZWN0OjIwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzaWduaW5nS2V5Tm9uY2U6IDEsXG4gICAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICcweDI3MTIxYzM2Yzg1NGM4Nzc1MTY2ZjAxZWU5YjJhNWNjMDEyNzE4YWYnLFxuICAgIH0sXG4gICAgZXhwZWN0ZWRSZXN1bHQ6IHtcbiAgICAgIGhhbGZTaWduZWQ6IHtcbiAgICAgICAgZWlwMTU1OTogeyBtYXhQcmlvcml0eUZlZVBlckdhczogJzEwMDAwMDAwMDAnLCBtYXhGZWVQZXJHYXM6ICcxMDAwMDAwMDE0JyB9LFxuICAgICAgICBpc0JhdGNoOiBmYWxzZSxcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6ICcweDVlNTUwODJkNGM2OTE5YjY1ZmNkYTgwZjgwMTAzOGQ4NWRmZWMxYjMnLFxuICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBkYXRhOiAnYWJjZGVmJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBleHBpcmVUaW1lOiAxNjM1NDUzNTE4LFxuICAgICAgICBjb250cmFjdFNlcXVlbmNlSWQ6IDEsXG4gICAgICAgIG9wZXJhdGlvbkhhc2g6ICcweDdhN2YwMjNmMzRlMGFjZDljMWE2OWRkZTA5YmMzMDU2MmRlMzYyYzQ2NGQ4MjlkYzEzOTNjYzBhNjNlZmQxNDknLFxuICAgICAgICBzaWduYXR1cmU6XG4gICAgICAgICAgJzB4MGY5ZWViY2FiOTc2OTI2ZWMyNTFlYjJkOTFkMWNkMWY5ZTM5NmZhMjFjYzdmZmZhNDZhODkyNzg0YjVmZWY3ZTBkMTNhYTU3NzIxMjI3ODg0OTU4YWZmZTQxZjhlYTk1NzQzNGI4NjRjNzVkYzNmMGJkZGI3OThiMWFiN2FmNDExYicsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5XUldVbnNpZ25lZFN3ZWVwRVRIVHggPSB7XG4gIHR4OiAnZjkwMTJiODA4NTA0YTgxN2M4MDA4MzA3YTEyMDk0ZmQxMmYxZDU2MzY1MGZiZGQ5MzE0ZGNlMDY5OTIxNTk3NzhmNjM0MzgwYjkwMTA0MzkxMjUyMTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBhOThmZGZjMmM3MTEyNjBjZDY2NWEzODg0YjUwOWI0YTVhZDZmNGU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzc4MmRhY2U5ZDkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVmNmE0NzFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFjODA4MCcsXG4gIHVzZXJLZXk6XG4gICAgJ3hwdWI2NjFNeU13QXFSYmNGY05ES3Q0NkhnUEFKVGZOeVFVUzZNN2k4alV3WktIejl3WkdhSzFYZFF1VDhYVTVQa0ZmYnJmb0dYYzFDNFFEOVBESjd6aHB1NTJyTHp6eW5vdndnY1hoN050RGJIOScsXG4gIGJhY2t1cEtleTpcbiAgICAneHB1YjY2MU15TXdBcVJiY0dVSlljQWd5Y0JxRzVIclFvVUpBdkJ2N1BFYnZqR0dmZmR0TVA4aHgzRFg5QXd6YVk0dkE3eW5xSGZ4elJUUkx3UzJFOURIMUhSUEc4dTdrV1hkNEpNQ05nb25HR25rJyxcbiAgY29pbjogJ3RldGgnLFxuICBnYXNQcmljZTogJzIwMDAwMDAwMDAwJyxcbiAgZ2FzTGltaXQ6ICc1MDAwMDAnLFxuICByZWNpcGllbnRzOiBbXG4gICAge1xuICAgICAgYWRkcmVzczogJzB4YTk4ZmRmYzJjNzExMjYwY2Q2NjVhMzg4NGI1MDliNGE1YWQ2ZjRlOCcsXG4gICAgICBhbW91bnQ6ICc0MDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICB9LFxuICBdLFxuICB3YWxsZXRDb250cmFjdEFkZHJlc3M6ICcweGZkMTJmMWQ1NjM2NTBmYmRkOTMxNGRjZTA2OTkyMTU5Nzc4ZjYzNDMnLFxuICBhbW91bnQ6ICc0MDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgYmFja3VwS2V5Tm9uY2U6IDAsXG4gIHJlY2lwaWVudDoge1xuICAgIGFkZHJlc3M6ICcweGE5OGZkZmMyYzcxMTI2MGNkNjY1YTM4ODRiNTA5YjRhNWFkNmY0ZTgnLFxuICAgIGFtb3VudDogJzQwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICB9LFxuICBleHBpcmVUaW1lOiAxNjAwODAwNTQwLFxuICBjb250cmFjdFNlcXVlbmNlSWQ6IDEsXG4gIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDEsXG59O1xuXG5tb2R1bGUuZXhwb3J0cy5XUldVbnNpZ25lZFN3ZWVwRVJDMjBUeCA9IHtcbiAgdHg6ICdmOTAxMGE4MDg1MDRhODE3YzgwMDgzMDdhMTIwOTRkZjA3MTE3NzA1YTlmOGRjNGMyYTc4ZGU2NmI3ZjE3OTdkYmE5ZDRlODBiOGU0MGRjZDdhNmMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MmM4YjI5YWI4YjBhNDlhMDFjMmI3NWY4ZTdmMTFiMjNlMGUzNzgyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGRlMGI2YjNhNzY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDRmOTZmZTNiN2E2Y2Y5NzI1ZjU5ZDM1M2Y3MjNjMWJkYjY0Y2E2YWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYxMWZiNDMzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmE3ZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWM4MDgwJyxcbiAgdXNlcktleTpcbiAgICAneHB1YjY2MU15TXdBcVJiY0ZYRGNXRDJ2eHVlYmNUMVpwVEY0VmtlNnFtTVc4eXpkZHdOWXBBUGp2WUVFTDVqTGZ5WVhXMmZ1eHRBeFk4VGdqUFVKTGNmMUM4cXo5TjZWZ1p4QXJLWDRFd0I4ckg1JyxcbiAgYmFja3VwS2V5OlxuICAgICd4cHViNjYxTXlNd0FxUmJjR2hTYVhpa3B1VEM5S1U4OFh4OUxyaktTdzFKS3N2WE5nYWJwVGRnank3TFNvdmg5WkhoY3FoQUhRdTd1dGh1N0ZndU5HZGNDNGFYVEtLNWdxVGNQZTRXdkxZUmJDU0cnLFxuICBjb2luOiAndGRhaScsXG4gIGdhc1ByaWNlOiAnMjAwMDAwMDAwMDAnLFxuICBnYXNMaW1pdDogJzUwMDAwMCcsXG4gIHJlY2lwaWVudHM6IFtcbiAgICB7XG4gICAgICBhZGRyZXNzOiAnMHg1MmM4QjI5QWI4QjBhNDlhMDFjMmI3NWY4ZTdmMTFCMjNlMGUzNzgyJyxcbiAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgIH0sXG4gIF0sXG4gIHdhbGxldENvbnRyYWN0QWRkcmVzczogJzB4ZGYwNzExNzcwNWE5ZjhkYzRjMmE3OGRlNjZiN2YxNzk3ZGJhOWQ0ZScsXG4gIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBiYWNrdXBLZXlOb25jZTogMCxcbiAgcmVjaXBpZW50OiB7XG4gICAgYWRkcmVzczogJzB4NTJjOGIyOWFiOGIwYTQ5YTAxYzJiNzVmOGU3ZjExYjIzZTBlMzc4MicsXG4gICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gIH0sXG4gIGV4cGlyZVRpbWU6IDE2Mjk0NjgzMzIsXG4gIGNvbnRyYWN0U2VxdWVuY2VJZDogMTA4NzksXG4gIG5leHRDb250cmFjdFNlcXVlbmNlSWQ6IDEwODc5LFxuICB0b2tlbkNvbnRyYWN0QWRkcmVzczogJzB4NGY5NmZlM2I3YTZjZjk3MjVmNTlkMzUzZjcyM2MxYmRiNjRjYTZhYScsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhMaXN0UmVxdWVzdChhZGRyZXNzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGU6ICdhY2NvdW50JyxcbiAgICBhY3Rpb246ICd0eGxpc3QnLFxuICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRUeExpc3RSZXNwb25zZSA9IHtcbiAgc3RhdHVzOiAnMCcsXG4gIG1lc3NhZ2U6ICdObyB0cmFuc2FjdGlvbnMgZm91bmQnLFxuICByZXN1bHQ6IFtdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJhbGFuY2VSZXF1ZXN0KGFkZHJlc3M6IHN0cmluZykge1xuICByZXR1cm4ge1xuICAgIG1vZHVsZTogJ2FjY291bnQnLFxuICAgIGFjdGlvbjogJ2JhbGFuY2UnLFxuICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRCYWxhbmNlUmVzcG9uc2UgPSB7XG4gIHN0YXR1czogJzEnLFxuICBtZXNzYWdlOiAnT0snLFxuICByZXN1bHQ6ICc5OTk5OTk5OTk5OTk5OTk5OTI4Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250cmFjdENhbGxSZXF1ZXN0ID0ge1xuICBtb2R1bGU6ICdwcm94eScsXG4gIGFjdGlvbjogJ2V0aF9jYWxsJyxcbiAgdG86ICcweGRmMDcxMTc3MDVhOWY4ZGM0YzJhNzhkZTY2YjdmMTc5N2RiYTlkNGUnLFxuICBkYXRhOiAnYTBiNzk2N2InLFxuICB0YWc6ICdsYXRlc3QnLFxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRyYWN0Q2FsbFJlc3BvbnNlID0ge1xuICBqc29ucnBjOiAnMi4wJyxcbiAgcmVzdWx0OiAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyYTdmJyxcbiAgaWQ6IDEsXG59O1xuXG4vLyBEZWZpbmUgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yIHRlc3RcbmNvbnN0IFRFU1RfRVRIX1dBTExFVF9GSVJTVF9BRERSRVNTID0gJzB4ZGYwNzExNzcwNWE5ZjhkYzRjMmE3OGRlNjZiN2YxNzk3ZGJhOWQ0ZSc7IC8vIEV4YW1wbGUgb2YgYWRkcmVzcyBvbiB0ZXN0IG5ldHdvcmtcbmNvbnN0IFRFU1RfUkVDT1ZFUllfUEFTU0NPREUgPSAnb1BYa1BONVEwYzhpNDRpMCc7IC8vIEV4YW1wbGUgb2YgYSB0ZXN0IHBhc3N3b3JkXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb25CaXRHb1JlY292ZXJ5Rm9ySG90V2FsbGV0c01QQ3YyKGludGVuZGVkQ2hhaW4gPSAndGFyYmV0aCcpOiBhbnkge1xuICByZXR1cm4ge1xuICAgIHVzZXJLZXk6XG4gICAgICAne1wiaXZcIjpcIlZGWjNqdlhoeG8xWitZYWYyTXRabkE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCJcXG4nICtcbiAgICAgICc6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCJwK2ZrSHVMYS84az1cIixcImN0XCI6XCJoWUc3cHZsakxJZ0NqWlxcbicgK1xuICAgICAgJzUzUEJsQ2RlNUtaUm1sVUtLSEx0RE1rK0hKZnVVNDZoVyt4K0M5V3NJQU80Z0ZQblRDdkZWbVE4eDdjekN0Y05GdWI1QU8yb3RPR1xcbicgK1xuICAgICAgJ09zWDRHRTJnWE9FbUNsMVRwV3d3TmhtN3lNVWpHSlVwZ1c2WlpnWFNYZERpdFNLaTRWL2hrNzhTR1N6akZPQlNQWVJhNkk9XCJ9XFxuJyxcbiAgICBiYWNrdXBLZXk6XG4gICAgICAne1wiaXZcIjpcIlZGWjNqdlhoeG8xWitZYWYyTXRabkE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCJcXG4nICtcbiAgICAgICc6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCJwK2ZrSHVMYS84az1cIixcImN0XCI6XCJoWUc3cHZsakxJZ0NqWlxcbicgK1xuICAgICAgJzUzUEJsQ2RlNUtaUm1sVUtLSEx0RE1rK0hKZnVVNDZoVyt4K0M5V3NJQU80Z0ZQblRDdkZWbVE4eDdjekN0Y05GdWI1QU8yb3RPR1xcbicgK1xuICAgICAgJ09zWDRHRTJnWE9FbUNsMVRwV3d3TmhtN3lNVWpHSlVwZ1c2WlpnWFNYZERpdFNLaTRWL2hrNzhTR1N6akZPQlNQWVJhNkk9XCJ9XFxuJyxcbiAgICBiaXRnb0tleTpcbiAgICAgICcweDA0NzIyNDM2NTFlYWJhNmNhZTAzOTFhM2E2NTQ3OGNhNWI5MWMyOTlhNDljMTVlOTQ5OGNhOTEwYTUyYzQ5OWEzNjE4MTE1Y2M3NDkwMzRiMDQwOTA2NjAzMTAwMGE3OTkwOWM5ODU0YTUwYTBlZjUyMTk5MThmOTgxOGE2MDQzOWInLFxuICAgIHdhbGxldFBhc3NwaHJhc2U6IFRFU1RfUkVDT1ZFUllfUEFTU0NPREUsXG4gICAgd2FsbGV0Q29udHJhY3RBZGRyZXNzOiBURVNUX0VUSF9XQUxMRVRfRklSU1RfQUREUkVTUyxcbiAgICBiaXRnb0ZlZUFkZHJlc3M6ICcweDMzYTQyZmFlYTNjNmU4NzAyMTM0N2U1MTcwMGI0OGFhZjQ5YWExZTcnLFxuICAgIHJlY292ZXJ5RGVzdGluYXRpb246ICcweGQ1QURkRTE3ZmVEOGJhZWQzRjMyYjg0QUYwNUI4RjI4MTZmN2I1NjAnLFxuICAgIGJpdGdvRGVzdGluYXRpb25BZGRyZXNzOiAnMHhFNTk4NkNFNDQ5MERlYjY3ZDI5NTA1NjJDZWI5MzBEZGY5YmU3YTE0JyxcbiAgICBlaXAxNTU5OiB7IG1heEZlZVBlckdhczogMjAwMDAwMDAwMDAsIG1heFByaW9yaXR5RmVlUGVyR2FzOiAxMDAwMDAwMDAwMCB9LFxuICAgIGdhc0xpbWl0OiA1MDAwMDAsXG4gICAgaW50ZW5kZWRDaGFpbjogaW50ZW5kZWRDaGFpbixcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1aWxkVW5zaWduZWRTd2VlcEZvclNlbGZDdXN0b2R5Q29sZFdhbGxldHNNUEN2MihpbnRlbmRlZENoYWluID0gJ3RhcmJldGgnKTogYW55IHtcbiAgY29uc3QgYWRkcmVzcyA9ICcweGE5MWUxMDU5OTUzZDdlZjJhZGJiY2E0YjY4OGJmZTIyODY2ZmJjZWUnO1xuICByZXR1cm4ge1xuICAgIHJlY292ZXJ5RGVzdGluYXRpb246ICcweGQ1QURkRTE3ZmVEOGJhZWQzRjMyYjg0QUYwNUI4RjI4MTZmN2I1NjAnLFxuICAgIGJpdGdvRGVzdGluYXRpb25BZGRyZXNzOiAnMHhFNTk4NkNFNDQ5MERlYjY3ZDI5NTA1NjJDZWI5MzBEZGY5YmU3YTE0JyxcbiAgICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IFRFU1RfRVRIX1dBTExFVF9GSVJTVF9BRERSRVNTLFxuICAgIGVpcDE1NTk6IHsgbWF4RmVlUGVyR2FzOiAyMDAwMDAwMDAwMCwgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IDEwMDAwMDAwMDAwIH0sXG4gICAgZ2FzTGltaXQ6IDUwMDAwMCxcbiAgICBpbnRlbmRlZENoYWluOiBpbnRlbmRlZENoYWluLFxuICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwJywgLy8gMC4xIEVUSFxuICAgIGNvbW1vbktleUNoYWluOlxuICAgICAgJzAyMzRlYjM5YjIyZmVkNTIzZWNlN2M3OGRhMjliYTFmMWRlNWI2NGE2ZTQ4MDEzZTA5MTRkZTc5M2JjMWRmMDU3MGU3NzlkZTA0NzU4NzMyNzM0ZDk3ZTU0Yjc4MmM4YjMzNjI4MzgxMWFmNmEyYzU3YmQ4MTQzODc5OGUxYzI0NDYnLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52YWxpZE5vbkJpdEdvUmVjb3ZlcnlQYXJhbXMoKTogYW55IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5nZXROb25CaXRHb1JlY292ZXJ5Rm9ySG90V2FsbGV0c01QQ3YyKCksXG4gICAgdXNlcktleTogJ2ludmFsaWRVc2VyS2V5JyxcbiAgfTtcbn1cbiJdfQ==

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


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