PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-coin-polyx/dist/src/lib

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenTransferBuilder = void 0;
const sdk_core_1 = require("@bitgo/sdk-core");
const baseBuilder_1 = require("./baseBuilder");
const iface_1 = require("./iface");
const transaction_1 = require("./transaction");
const txnSchema_1 = require("./txnSchema");
const txwrapper_core_1 = require("@substrate/txwrapper-core");
class TokenTransferBuilder extends baseBuilder_1.PolyxBaseBuilder {
    constructor(_coinConfig) {
        super(_coinConfig);
        this._transaction = new transaction_1.Transaction(_coinConfig);
    }
    get transactionType() {
        return sdk_core_1.TransactionType.SendToken;
    }
    buildTransaction() {
        const baseTxInfo = this.createBaseTxInfo();
        return this.addAndAffirmWithMediators({
            venueId: null,
            settlementType: iface_1.SettlementType.SettleOnAffirmation,
            tradeDate: null,
            valueDate: null,
            legs: [
                {
                    fungible: {
                        sender: {
                            did: this._fromDID,
                            kind: iface_1.PortfolioKind.Default,
                        },
                        receiver: {
                            did: this._toDID,
                            kind: iface_1.PortfolioKind.Default,
                        },
                        assetId: this._assetId,
                        amount: this._amount,
                    },
                },
            ],
            portfolios: [
                {
                    did: this._fromDID,
                    kind: iface_1.PortfolioKind.Default,
                },
            ],
            instructionMemo: this._memo,
            mediators: [],
        }, baseTxInfo);
    }
    /**
     * Sets the amount to transfer.
     *
     * @param {string} amount - The amount to transfer.
     * @returns {this} The current instance of the builder.
     */
    assetId(assetId) {
        this._assetId = assetId;
        return this;
    }
    /**
     * Sets the amount to transfer.
     *
     * @param {string} amount - The amount to transfer.
     * @returns {this} The current instance of the builder.
     */
    amount(amount) {
        this._amount = amount;
        return this;
    }
    /**
     * Sets the memo for the transaction.
     * Pads the memo on the left with zeros to ensure it is 32 characters long.
     *
     * @param {string} memo - The memo for the transaction.
     * @returns {this} The current instance of the builder.
     */
    memo(memo) {
        const paddedMemo = memo.padStart(32, '0');
        this._memo = paddedMemo;
        return this;
    }
    /**
     * Sets the sender DID.
     *
     * @param {string} fromDID - The sender DID.
     * @returns {this} The current instance of the builder.
     */
    fromDID(fromDID) {
        this._fromDID = fromDID;
        return this;
    }
    /**
     * Sets the receiver DID.
     *
     * @param {string} toDID - The receiver DID.
     * @returns {this} The current instance of the builder.
     */
    toDID(toDID) {
        this._toDID = toDID;
        return this;
    }
    /** @inheritdoc */
    fromImplementation(rawTransaction) {
        const tx = super.fromImplementation(rawTransaction);
        if (this._method?.name === iface_1.MethodNames.AddAndAffirmWithMediators) {
            const txMethod = this._method.args;
            this.assetId(txMethod.legs[0].fungible.assetId);
            this.amount(txMethod.legs[0].fungible.amount);
            this.memo(txMethod.instructionMemo);
            this.fromDID(txMethod.legs[0].fungible.sender.did);
            this.toDID(txMethod.legs[0].fungible.receiver.did);
        }
        else {
            throw new Error(`Invalid Transaction Type: ${this._method?.name}. Expected AddAndAffirmWithMediators`);
        }
        return tx;
    }
    /** @inheritdoc */
    validateDecodedTransaction(decodedTxn, rawTransaction) {
        if (decodedTxn.method?.name === iface_1.MethodNames.AddAndAffirmWithMediators) {
            const txMethod = decodedTxn.method.args;
            console.log(`Validating transaction: ${JSON.stringify(txMethod)}`);
            const venueId = txMethod.venueId;
            const settlementType = txMethod.settlementType;
            const tradeDate = txMethod.tradeDate;
            const valueDate = txMethod.valueDate;
            const legs = txMethod.legs;
            const portfolios = txMethod.portfolios;
            const instructionMemo = txMethod.instructionMemo;
            const mediators = txMethod.mediators;
            const validationResult = txnSchema_1.AddAndAffirmWithMediatorsTransactionSchema.validate({
                venueId,
                settlementType,
                tradeDate,
                valueDate,
                legs,
                portfolios,
                instructionMemo,
                mediators,
            });
            if (validationResult.error) {
                throw new Error(`Invalid transaction: ${validationResult.error.message}`);
            }
        }
    }
    addAndAffirmWithMediators(args, info) {
        return (0, txwrapper_core_1.defineMethod)({
            method: {
                args,
                name: 'addAndAffirmWithMediators',
                pallet: 'settlement',
            },
            ...info.baseTxInfo,
        }, info.options);
    }
}
exports.TokenTransferBuilder = TokenTransferBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUFrRDtBQUVsRCwrQ0FBaUQ7QUFDakQsbUNBQThHO0FBQzlHLCtDQUE0QztBQUU1QywyQ0FBeUU7QUFDekUsOERBQXNIO0FBRXRILE1BQWEsb0JBQXFCLFNBQVEsOEJBQXVDO0lBTy9FLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUNuQztZQUNFLE9BQU8sRUFBRSxJQUFJO1lBQ2IsY0FBYyxFQUFFLHNCQUFjLENBQUMsbUJBQW1CO1lBQ2xELFNBQVMsRUFBRSxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUU7Z0JBQ0o7b0JBQ0UsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRTs0QkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ2xCLElBQUksRUFBRSxxQkFBYSxDQUFDLE9BQU87eUJBQzVCO3dCQUNELFFBQVEsRUFBRTs0QkFDUixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ2hCLElBQUksRUFBRSxxQkFBYSxDQUFDLE9BQU87eUJBQzVCO3dCQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUNyQjtpQkFDRjth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T0FBTyxDQUFDO1lBQ2pDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDL0MsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0IsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN2QyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1lBQ2pELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFFckMsTUFBTSxnQkFBZ0IsR0FBRyxzREFBMEMsQ0FBQyxRQUFRLENBQUM7Z0JBQzNFLE9BQU87Z0JBQ1AsY0FBYztnQkFDZCxTQUFTO2dCQUNULFNBQVM7Z0JBQ1QsSUFBSTtnQkFDSixVQUFVO2dCQUNWLGVBQWU7Z0JBQ2YsU0FBUzthQUNWLENBQUMsQ0FBQztZQUNILElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QixDQUMvQixJQUFtQyxFQUNuQyxJQUFnQztRQUVoQyxPQUFPLElBQUEsNkJBQVksRUFDakI7WUFDRSxNQUFNLEVBQUU7Z0JBQ04sSUFBSTtnQkFDSixJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxNQUFNLEVBQUUsWUFBWTthQUNyQjtZQUNELEdBQUcsSUFBSSxDQUFDLFVBQVU7U0FDbkIsRUFDRCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE1S0Qsb0RBNEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBQb2x5eEJhc2VCdWlsZGVyIH0gZnJvbSAnLi9iYXNlQnVpbGRlcic7XG5pbXBvcnQgeyBUeE1ldGhvZCwgTWV0aG9kTmFtZXMsIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzLCBTZXR0bGVtZW50VHlwZSwgUG9ydGZvbGlvS2luZCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEludGVyZmFjZSB9IGZyb20gJ0BiaXRnby9hYnN0cmFjdC1zdWJzdHJhdGUnO1xuaW1wb3J0IHsgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc1RyYW5zYWN0aW9uU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIGRlZmluZU1ldGhvZCwgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBQb2x5eEJhc2VCdWlsZGVyPFR4TWV0aG9kLCBUcmFuc2FjdGlvbj4ge1xuICBwcm90ZWN0ZWQgX2Fzc2V0SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hbW91bnQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9tZW1vOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZnJvbURJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RvRElEOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRUcmFuc2FjdGlvbigpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBiYXNlVHhJbmZvID0gdGhpcy5jcmVhdGVCYXNlVHhJbmZvKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycyhcbiAgICAgIHtcbiAgICAgICAgdmVudWVJZDogbnVsbCxcbiAgICAgICAgc2V0dGxlbWVudFR5cGU6IFNldHRsZW1lbnRUeXBlLlNldHRsZU9uQWZmaXJtYXRpb24sXG4gICAgICAgIHRyYWRlRGF0ZTogbnVsbCxcbiAgICAgICAgdmFsdWVEYXRlOiBudWxsLFxuICAgICAgICBsZWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuZ2libGU6IHtcbiAgICAgICAgICAgICAgc2VuZGVyOiB7XG4gICAgICAgICAgICAgICAgZGlkOiB0aGlzLl9mcm9tRElELFxuICAgICAgICAgICAgICAgIGtpbmQ6IFBvcnRmb2xpb0tpbmQuRGVmYXVsdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVjZWl2ZXI6IHtcbiAgICAgICAgICAgICAgICBkaWQ6IHRoaXMuX3RvRElELFxuICAgICAgICAgICAgICAgIGtpbmQ6IFBvcnRmb2xpb0tpbmQuRGVmYXVsdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYXNzZXRJZDogdGhpcy5fYXNzZXRJZCxcbiAgICAgICAgICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHBvcnRmb2xpb3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaWQ6IHRoaXMuX2Zyb21ESUQsXG4gICAgICAgICAgICBraW5kOiBQb3J0Zm9saW9LaW5kLkRlZmF1bHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5zdHJ1Y3Rpb25NZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgICBtZWRpYXRvcnM6IFtdLFxuICAgICAgfSxcbiAgICAgIGJhc2VUeEluZm9cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFtb3VudCB0byB0cmFuc2Zlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gdHJhbnNmZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICovXG4gIGFzc2V0SWQoYXNzZXRJZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fYXNzZXRJZCA9IGFzc2V0SWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYW1vdW50IHRvIHRyYW5zZmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gVGhlIGFtb3VudCB0byB0cmFuc2Zlci5cbiAgICogQHJldHVybnMge3RoaXN9IFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1lbW8gZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogUGFkcyB0aGUgbWVtbyBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvIGVuc3VyZSBpdCBpcyAzMiBjaGFyYWN0ZXJzIGxvbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gVGhlIG1lbW8gZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge3RoaXN9IFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgKi9cbiAgbWVtbyhtZW1vOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBwYWRkZWRNZW1vID0gbWVtby5wYWRTdGFydCgzMiwgJzAnKTtcbiAgICB0aGlzLl9tZW1vID0gcGFkZGVkTWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgRElELlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJvbURJRCAtIFRoZSBzZW5kZXIgRElELlxuICAgKiBAcmV0dXJucyB7dGhpc30gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAqL1xuICBmcm9tRElEKGZyb21ESUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Zyb21ESUQgPSBmcm9tRElEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2VpdmVyIERJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvRElEIC0gVGhlIHJlY2VpdmVyIERJRC5cbiAgICogQHJldHVybnMge3RoaXN9IFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgKi9cbiAgdG9ESUQodG9ESUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX3RvRElEID0gdG9ESUQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5fbWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5BZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgICAgdGhpcy5hc3NldElkKHR4TWV0aG9kLmxlZ3NbMF0uZnVuZ2libGUuYXNzZXRJZCk7XG4gICAgICB0aGlzLmFtb3VudCh0eE1ldGhvZC5sZWdzWzBdLmZ1bmdpYmxlLmFtb3VudCk7XG4gICAgICB0aGlzLm1lbW8odHhNZXRob2QuaW5zdHJ1Y3Rpb25NZW1vKTtcbiAgICAgIHRoaXMuZnJvbURJRCh0eE1ldGhvZC5sZWdzWzBdLmZ1bmdpYmxlLnNlbmRlci5kaWQpO1xuICAgICAgdGhpcy50b0RJRCh0eE1ldGhvZC5sZWdzWzBdLmZ1bmdpYmxlLnJlY2VpdmVyLmRpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCwgcmF3VHJhbnNhY3Rpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLkFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncztcbiAgICAgIGNvbnNvbGUubG9nKGBWYWxpZGF0aW5nIHRyYW5zYWN0aW9uOiAke0pTT04uc3RyaW5naWZ5KHR4TWV0aG9kKX1gKTtcbiAgICAgIGNvbnN0IHZlbnVlSWQgPSB0eE1ldGhvZC52ZW51ZUlkO1xuICAgICAgY29uc3Qgc2V0dGxlbWVudFR5cGUgPSB0eE1ldGhvZC5zZXR0bGVtZW50VHlwZTtcbiAgICAgIGNvbnN0IHRyYWRlRGF0ZSA9IHR4TWV0aG9kLnRyYWRlRGF0ZTtcbiAgICAgIGNvbnN0IHZhbHVlRGF0ZSA9IHR4TWV0aG9kLnZhbHVlRGF0ZTtcbiAgICAgIGNvbnN0IGxlZ3MgPSB0eE1ldGhvZC5sZWdzO1xuICAgICAgY29uc3QgcG9ydGZvbGlvcyA9IHR4TWV0aG9kLnBvcnRmb2xpb3M7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbk1lbW8gPSB0eE1ldGhvZC5pbnN0cnVjdGlvbk1lbW87XG4gICAgICBjb25zdCBtZWRpYXRvcnMgPSB0eE1ldGhvZC5tZWRpYXRvcnM7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgICB2ZW51ZUlkLFxuICAgICAgICBzZXR0bGVtZW50VHlwZSxcbiAgICAgICAgdHJhZGVEYXRlLFxuICAgICAgICB2YWx1ZURhdGUsXG4gICAgICAgIGxlZ3MsXG4gICAgICAgIHBvcnRmb2xpb3MsXG4gICAgICAgIGluc3RydWN0aW9uTWVtbyxcbiAgICAgICAgbWVkaWF0b3JzLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHJhbnNhY3Rpb246ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycyhcbiAgICBhcmdzOiBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyxcbiAgICBpbmZvOiBJbnRlcmZhY2UuQ3JlYXRlQmFzZVR4SW5mb1xuICApOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gZGVmaW5lTWV0aG9kKFxuICAgICAge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBhcmdzLFxuICAgICAgICAgIG5hbWU6ICdhZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzJyxcbiAgICAgICAgICBwYWxsZXQ6ICdzZXR0bGVtZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uaW5mby5iYXNlVHhJbmZvLFxuICAgICAgfSxcbiAgICAgIGluZm8ub3B0aW9uc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==

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


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