PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-core/dist/src/bitgo/staking
Просмотр файла: goStakingWallet.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GoStakingWallet = void 0;
const assert_1 = __importDefault(require("assert"));
class GoStakingWallet {
constructor(wallet) {
this.wallet = wallet;
this.bitgo = wallet.bitgo;
}
get accountId() {
return this.wallet.id();
}
async stake(options) {
// call preview
const preview = await this.previewStake({
amount: options.amount,
clientId: options.clientId,
});
// sign the transaction
const halfSignedTransaction = (await this.wallet.prebuildAndSignTransaction({
walletPassphrase: options.walletPassphrase,
prebuildTx: {
payload: preview.payload,
},
}));
// call finalize to submit the go staking request to go staking service
(0, assert_1.default)(halfSignedTransaction.halfSigned?.payload, 'missing payload in half signed transaction');
const finalOptions = {
amount: options.amount,
clientId: options.clientId,
frontTransferSendRequest: {
halfSigned: {
payload: halfSignedTransaction.halfSigned.payload,
},
},
};
return (await this.finalizeStake(finalOptions));
}
/**
* Unstake request
* @param options
*/
async unstake(options) {
return (await this.createGoStakingRequest(options, 'finalize', 'UNSTAKE'));
}
/**
* Preview staking request
* @param options
*/
async previewStake(options) {
return (await this.createGoStakingRequest(options, 'preview', 'STAKE'));
}
/**
* Finalize staking request
* will prepare the payload and sign the transaction
* and submit it to the go-staking-service
* @param options
*/
async finalizeStake(options) {
return (await this.createGoStakingRequest(options, 'finalize', 'STAKE'));
}
/**
* Get go staking request
* @param goStakingRequestId
*/
async getGoStakingRequest(goStakingRequestId) {
return await this.bitgo.get(this.bitgo.microservicesUrl(this.getGoStakingRequestURL(goStakingRequestId))).result();
}
/**
* Get go staking requests by coin
* @param options
*/
async getGoStakingRequestsByWalletCoin(options) {
return await this.bitgo
.get(this.bitgo.microservicesUrl(this.goStakingRequestBaseURL()))
.query({
...options,
})
.result();
}
/**
* Get all go staking requests for the account
* @param options
*/
async getGoStakingRequests(options = {}) {
return await this.bitgo
.get(this.bitgo.microservicesUrl(this.getGoStakingRequestsUrl()))
.query({
...options,
})
.result();
}
/**
* Get go staking wallets for the account
* @param options
*/
async getGoStakingWallets(options) {
return await this.bitgo
.get(this.bitgo.microservicesUrl(this.getGoStakingWalletsUrl()))
.query({
...options,
})
.result();
}
/**
* Get go staking wallets for the account
*/
async getGoStakingWallet() {
return await this.bitgo.get(this.bitgo.microservicesUrl(this.getGoStakingWalletUrl())).result();
}
async createGoStakingRequest(options, path, type) {
return await this.bitgo
.post(this.bitgo.microservicesUrl(`${this.goStakingRequestBaseURL()}/${path}`))
.send({
...options,
type: type,
})
.result();
}
goStakingBaseURL() {
return `/api/go-staking/v1`;
}
goStakingRequestBaseURL() {
return `${this.goStakingBaseURL()}/${this.wallet.baseCoin.getChain()}/accounts/${this.accountId}/requests`;
}
getGoStakingRequestURL(stakingRequestId) {
return `${this.goStakingRequestBaseURL()}/${stakingRequestId}`;
}
getGoStakingRequestsUrl() {
return `${this.goStakingBaseURL()}/accounts/${this.accountId}/requests`;
}
getGoStakingWalletsUrl() {
return `${this.goStakingBaseURL()}/accounts/${this.accountId}/coins`;
}
getGoStakingWalletUrl() {
return `${this.goStakingBaseURL()}/${this.wallet.baseCoin.getChain()}/accounts/${this.accountId}/coins`;
}
}
exports.GoStakingWallet = GoStakingWallet;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29TdGFraW5nV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3N0YWtpbmcvZ29TdGFraW5nV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQWlCQSxvREFBNEI7QUFFNUIsTUFBYSxlQUFlO0lBSzFCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUF1QjtRQUNqQyxlQUFlO1FBQ2YsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDTCxDQUFDLENBQUM7UUFFekIsdUJBQXVCO1FBQ3ZCLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUM7WUFDMUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtZQUMxQyxVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ0k7U0FDL0IsQ0FBQyxDQUE2QixDQUFDO1FBRWhDLHVFQUF1RTtRQUN2RSxJQUFBLGdCQUFNLEVBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sWUFBWSxHQUEyQjtZQUMzQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLHdCQUF3QixFQUFFO2dCQUN4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LENBQUMsQ0FBQzthQUM5RSxJQUFJLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7YUFDRCxNQUFNLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxJQUFJLENBQUMsU0FBUyxXQUFXLENBQUM7SUFDN0csQ0FBQztJQUVPLHNCQUFzQixDQUFDLGdCQUF3QjtRQUNyRCxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxJQUFJLENBQUMsU0FBUyxXQUFXLENBQUM7SUFDMUUsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsSUFBSSxDQUFDLFNBQVMsUUFBUSxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxhQUFhLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQztJQUMxRyxDQUFDO0NBQ0Y7QUFoS0QsMENBZ0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHtcbiAgQmFzZUdvU3Rha2VPcHRpb25zLFxuICBHb1N0YWtlRmluYWxpemVPcHRpb25zLFxuICBHb1N0YWtlT3B0aW9ucyxcbiAgR29TdGFraW5nUmVxdWVzdCxcbiAgR29TdGFraW5nUmVxdWVzdE9wdGlvbnMsXG4gIEdvU3Rha2luZ1JlcXVlc3RSZXN1bHRzLFxuICBHb1N0YWtpbmdXYWxsZXRPYmplY3QsXG4gIEdvU3Rha2luZ1dhbGxldFJlc3VsdHMsXG4gIFVuc2lnbmVkR29TdGFraW5nUmVxdWVzdCxcbn0gZnJvbSAnLi9nb1N0YWtpbmdJbnRlcmZhY2VzJztcbmltcG9ydCB7IEZyb250VHJhbnNmZXJTZW5kUmVxdWVzdCwgSUdvU3Rha2luZ1dhbGxldCB9IGZyb20gJy4vaUdvU3Rha2luZ1dhbGxldCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBjbGFzcyBHb1N0YWtpbmdXYWxsZXQgaW1wbGVtZW50cyBJR29TdGFraW5nV2FsbGV0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0KSB7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5iaXRnbyA9IHdhbGxldC5iaXRnbztcbiAgfVxuXG4gIGdldCBhY2NvdW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuaWQoKTtcbiAgfVxuXG4gIGFzeW5jIHN0YWtlKG9wdGlvbnM6IEdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxHb1N0YWtpbmdSZXF1ZXN0PiB7XG4gICAgLy8gY2FsbCBwcmV2aWV3XG4gICAgY29uc3QgcHJldmlldyA9IGF3YWl0IHRoaXMucHJldmlld1N0YWtlKHtcbiAgICAgIGFtb3VudDogb3B0aW9ucy5hbW91bnQsXG4gICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICB9IGFzIEJhc2VHb1N0YWtlT3B0aW9ucyk7XG5cbiAgICAvLyBzaWduIHRoZSB0cmFuc2FjdGlvblxuICAgIGNvbnN0IGhhbGZTaWduZWRUcmFuc2FjdGlvbiA9IChhd2FpdCB0aGlzLndhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiBvcHRpb25zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICBwcmVidWlsZFR4OiB7XG4gICAgICAgIHBheWxvYWQ6IHByZXZpZXcucGF5bG9hZCxcbiAgICAgIH0gYXMgUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCxcbiAgICB9KSkgYXMgRnJvbnRUcmFuc2ZlclNlbmRSZXF1ZXN0O1xuXG4gICAgLy8gY2FsbCBmaW5hbGl6ZSB0byBzdWJtaXQgdGhlIGdvIHN0YWtpbmcgcmVxdWVzdCB0byBnbyBzdGFraW5nIHNlcnZpY2VcbiAgICBhc3NlcnQoaGFsZlNpZ25lZFRyYW5zYWN0aW9uLmhhbGZTaWduZWQ/LnBheWxvYWQsICdtaXNzaW5nIHBheWxvYWQgaW4gaGFsZiBzaWduZWQgdHJhbnNhY3Rpb24nKTtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnM6IEdvU3Rha2VGaW5hbGl6ZU9wdGlvbnMgPSB7XG4gICAgICBhbW91bnQ6IG9wdGlvbnMuYW1vdW50LFxuICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBmcm9udFRyYW5zZmVyU2VuZFJlcXVlc3Q6IHtcbiAgICAgICAgaGFsZlNpZ25lZDoge1xuICAgICAgICAgIHBheWxvYWQ6IGhhbGZTaWduZWRUcmFuc2FjdGlvbi5oYWxmU2lnbmVkLnBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmZpbmFsaXplU3Rha2UoZmluYWxPcHRpb25zKSkgYXMgR29TdGFraW5nUmVxdWVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIHJlcXVlc3RcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogQmFzZUdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxHb1N0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmNyZWF0ZUdvU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ2ZpbmFsaXplJywgJ1VOU1RBS0UnKSkgYXMgR29TdGFraW5nUmVxdWVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2aWV3IHN0YWtpbmcgcmVxdWVzdFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmV2aWV3U3Rha2Uob3B0aW9uczogQmFzZUdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuY3JlYXRlR29TdGFraW5nUmVxdWVzdChvcHRpb25zLCAncHJldmlldycsICdTVEFLRScpKSBhcyBVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmluYWxpemUgc3Rha2luZyByZXF1ZXN0XG4gICAqIHdpbGwgcHJlcGFyZSB0aGUgcGF5bG9hZCBhbmQgc2lnbiB0aGUgdHJhbnNhY3Rpb25cbiAgICogYW5kIHN1Ym1pdCBpdCB0byB0aGUgZ28tc3Rha2luZy1zZXJ2aWNlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZpbmFsaXplU3Rha2Uob3B0aW9uczogR29TdGFrZUZpbmFsaXplT3B0aW9ucyk6IFByb21pc2U8R29TdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5jcmVhdGVHb1N0YWtpbmdSZXF1ZXN0KG9wdGlvbnMsICdmaW5hbGl6ZScsICdTVEFLRScpKSBhcyBHb1N0YWtpbmdSZXF1ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBnbyBzdGFraW5nIHJlcXVlc3RcbiAgICogQHBhcmFtIGdvU3Rha2luZ1JlcXVlc3RJZFxuICAgKi9cbiAgYXN5bmMgZ2V0R29TdGFraW5nUmVxdWVzdChnb1N0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8R29TdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5nZXRHb1N0YWtpbmdSZXF1ZXN0VVJMKGdvU3Rha2luZ1JlcXVlc3RJZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ28gc3Rha2luZyByZXF1ZXN0cyBieSBjb2luXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBhc3luYyBnZXRHb1N0YWtpbmdSZXF1ZXN0c0J5V2FsbGV0Q29pbihvcHRpb25zPzogR29TdGFraW5nUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPEdvU3Rha2luZ1JlcXVlc3RSZXN1bHRzPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuZ29TdGFraW5nUmVxdWVzdEJhc2VVUkwoKSkpXG4gICAgICAucXVlcnkoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGdvIHN0YWtpbmcgcmVxdWVzdHMgZm9yIHRoZSBhY2NvdW50XG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBhc3luYyBnZXRHb1N0YWtpbmdSZXF1ZXN0cyhvcHRpb25zOiBHb1N0YWtpbmdSZXF1ZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxHb1N0YWtpbmdSZXF1ZXN0UmVzdWx0cz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLmdldEdvU3Rha2luZ1JlcXVlc3RzVXJsKCkpKVxuICAgICAgLnF1ZXJ5KHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIH0pXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdvIHN0YWtpbmcgd2FsbGV0cyBmb3IgdGhlIGFjY291bnRcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGFzeW5jIGdldEdvU3Rha2luZ1dhbGxldHMob3B0aW9ucz86IHsgcGFnZT86IG51bWJlcjsgcGFnZVNpemU/OiBudW1iZXIgfSk6IFByb21pc2U8R29TdGFraW5nV2FsbGV0UmVzdWx0cz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLmdldEdvU3Rha2luZ1dhbGxldHNVcmwoKSkpXG4gICAgICAucXVlcnkoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ28gc3Rha2luZyB3YWxsZXRzIGZvciB0aGUgYWNjb3VudFxuICAgKi9cbiAgYXN5bmMgZ2V0R29TdGFraW5nV2FsbGV0KCk6IFByb21pc2U8R29TdGFraW5nV2FsbGV0T2JqZWN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLmdldEdvU3Rha2luZ1dhbGxldFVybCgpKSkucmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUdvU3Rha2luZ1JlcXVlc3QoXG4gICAgb3B0aW9uczogQmFzZUdvU3Rha2VPcHRpb25zIHwgR29TdGFrZUZpbmFsaXplT3B0aW9ucyxcbiAgICBwYXRoOiAncHJldmlldycgfCAnZmluYWxpemUnLFxuICAgIHR5cGU6IHN0cmluZ1xuICApOiBQcm9taXNlPEdvU3Rha2luZ1JlcXVlc3QgfCBVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAke3RoaXMuZ29TdGFraW5nUmVxdWVzdEJhc2VVUkwoKX0vJHtwYXRofWApKVxuICAgICAgLnNlbmQoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ29TdGFraW5nQmFzZVVSTCgpIHtcbiAgICByZXR1cm4gYC9hcGkvZ28tc3Rha2luZy92MWA7XG4gIH1cblxuICBwcml2YXRlIGdvU3Rha2luZ1JlcXVlc3RCYXNlVVJMKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmdvU3Rha2luZ0Jhc2VVUkwoKX0vJHt0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRDaGFpbigpfS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudElkfS9yZXF1ZXN0c2A7XG4gIH1cblxuICBwcml2YXRlIGdldEdvU3Rha2luZ1JlcXVlc3RVUkwoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nb1N0YWtpbmdSZXF1ZXN0QmFzZVVSTCgpfS8ke3N0YWtpbmdSZXF1ZXN0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R29TdGFraW5nUmVxdWVzdHNVcmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ29TdGFraW5nQmFzZVVSTCgpfS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudElkfS9yZXF1ZXN0c2A7XG4gIH1cblxuICBwcml2YXRlIGdldEdvU3Rha2luZ1dhbGxldHNVcmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ29TdGFraW5nQmFzZVVSTCgpfS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudElkfS9jb2luc2A7XG4gIH1cblxuICBwcml2YXRlIGdldEdvU3Rha2luZ1dhbGxldFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmdvU3Rha2luZ0Jhc2VVUkwoKX0vJHt0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRDaGFpbigpfS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudElkfS9jb2luc2A7XG4gIH1cbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!