@bitgo/sdk-core 2.0.0-rc.0 → 2.0.0-rc.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +157 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +2 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +49 -19
- package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/errors.js +8 -2
- package/dist/src/account-lib/baseCoin/iface.d.ts +2 -0
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/iface.js +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +5 -5
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +9 -10
- package/dist/src/account-lib/mpc/index.d.ts +2 -1
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +7 -2
- package/dist/src/account-lib/mpc/shamir.d.ts +3 -2
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/shamir.js +41 -27
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +5 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +7 -5
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +4 -3
- package/dist/src/account-lib/util/crypto.d.ts +1 -1
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +17 -14
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +10 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +17 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +8 -2
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bip32util.d.ts +3 -3
- package/dist/src/bitgo/bip32util.d.ts.map +1 -1
- package/dist/src/bitgo/bip32util.js +1 -1
- package/dist/src/bitgo/bitcoin.d.ts +4 -3
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoin.js +1 -1
- package/dist/src/bitgo/config.d.ts +12 -0
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.d.ts +3 -3
- package/dist/src/bitgo/ecdh.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.js +1 -1
- package/dist/src/bitgo/environments.d.ts +1 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +3 -1
- package/dist/src/bitgo/index.d.ts +2 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +4 -2
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +2 -2
- package/dist/src/bitgo/legacyBitcoin.d.ts +38 -0
- package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -0
- package/dist/src/bitgo/legacyBitcoin.js +97 -0
- package/dist/src/bitgo/lightning/iLightning.d.ts +180 -0
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/iLightning.js +92 -0
- package/dist/src/bitgo/lightning/index.d.ts +5 -0
- package/dist/src/bitgo/lightning/index.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/index.js +17 -0
- package/dist/src/bitgo/lightning/lightning.d.ts +19 -0
- package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightning.js +92 -0
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +26 -0
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightningUtils.js +123 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts +3 -0
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lnurlCodec.js +28 -0
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +3 -2
- package/dist/src/bitgo/recovery/initiate.d.ts +3 -3
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +5 -24
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +32 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +10 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +9 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +19 -4
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +10 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +44 -12
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +5 -0
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +8 -2
- package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/blsUtils.js +93 -32
- package/dist/src/bitgo/utils/decode.d.ts +15 -0
- package/dist/src/bitgo/utils/decode.d.ts.map +1 -0
- package/dist/src/bitgo/utils/decode.js +56 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +33 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +106 -2
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -2
- package/dist/src/bitgo/utils/util.js +4 -4
- package/dist/src/bitgo/wallet/iWallet.d.ts +3 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +11 -0
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +78 -11
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +5 -3
- package/dist/src/coins/ofc.js +4 -23
- package/dist/tsconfig.tsbuildinfo +1847 -807
- package/package.json +10 -7
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Lightning = void 0;
|
|
4
|
+
const iLightning_1 = require("./iLightning");
|
|
5
|
+
const lightningUtils_1 = require("./lightningUtils");
|
|
6
|
+
const decode_1 = require("../utils/decode");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
class Lightning {
|
|
9
|
+
constructor(bitgo, wallet) {
|
|
10
|
+
this.bitgo = bitgo;
|
|
11
|
+
this.wallet = wallet;
|
|
12
|
+
this.url = this.bitgo.url(`/wallet/${this.wallet.id()}/lightning`, 2);
|
|
13
|
+
}
|
|
14
|
+
async createInvoice(params) {
|
|
15
|
+
const body = await this.bitgo
|
|
16
|
+
.post(this.url + '/invoice')
|
|
17
|
+
.send(params)
|
|
18
|
+
.result();
|
|
19
|
+
return decode_1.decodeOrElse(iLightning_1.CreateInvoiceResponse.name, iLightning_1.CreateInvoiceResponse, body, (errors) => {
|
|
20
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async createDepositAddress() {
|
|
24
|
+
const body = await this.bitgo.post(this.url + '/address').result();
|
|
25
|
+
return decode_1.decodeOrElse(iLightning_1.CreateDepositAddressResponse.name, iLightning_1.CreateDepositAddressResponse, body, (errors) => {
|
|
26
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async payInvoice(params) {
|
|
30
|
+
const body = await this.bitgo
|
|
31
|
+
.post(this.url + '/payment')
|
|
32
|
+
.send(params)
|
|
33
|
+
.result();
|
|
34
|
+
return decode_1.decodeOrElse(iLightning_1.PayInvoiceResponse.name, iLightning_1.PayInvoiceResponse, body, (errors) => {
|
|
35
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async getBalance() {
|
|
39
|
+
const body = await this.bitgo.get(this.url + '/balance').result();
|
|
40
|
+
return decode_1.decodeOrElse(iLightning_1.GetBalanceResponse.name, iLightning_1.GetBalanceResponse, body, (errors) => {
|
|
41
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async withdraw(params) {
|
|
45
|
+
const { value } = params;
|
|
46
|
+
let { destination, sequenceId } = params;
|
|
47
|
+
if (destination === undefined) {
|
|
48
|
+
destination = (await this.wallet.createAddress()).address;
|
|
49
|
+
}
|
|
50
|
+
if (sequenceId === undefined) {
|
|
51
|
+
sequenceId = crypto_1.randomBytes(16).toString('hex');
|
|
52
|
+
}
|
|
53
|
+
const body = await this.bitgo
|
|
54
|
+
.post(this.url + '/withdrawal')
|
|
55
|
+
.send({ value, destination, sequenceId })
|
|
56
|
+
.result();
|
|
57
|
+
return decode_1.decodeOrElse(iLightning_1.WithdrawResponse.name, iLightning_1.WithdrawResponse, body, (errors) => {
|
|
58
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async deposit(params) {
|
|
62
|
+
const { amount } = params;
|
|
63
|
+
let { address } = params;
|
|
64
|
+
if (address === undefined) {
|
|
65
|
+
address = (await this.createDepositAddress()).address;
|
|
66
|
+
}
|
|
67
|
+
const res = await this.wallet.send({ amount, address });
|
|
68
|
+
return decode_1.decodeOrElse(iLightning_1.DepositResponse.name, iLightning_1.DepositResponse, res, (errors) => {
|
|
69
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async getInvoices(query) {
|
|
73
|
+
const queryParams = {};
|
|
74
|
+
queryParams.status = query === null || query === void 0 ? void 0 : query.status;
|
|
75
|
+
queryParams.limit = query === null || query === void 0 ? void 0 : query.limit;
|
|
76
|
+
const body = await this.bitgo
|
|
77
|
+
.get(this.url + '/invoices')
|
|
78
|
+
.query(queryParams)
|
|
79
|
+
.result();
|
|
80
|
+
return decode_1.decodeOrElse(iLightning_1.GetInvoicesResponse.name, iLightning_1.GetInvoicesResponse, body, (errors) => {
|
|
81
|
+
throw new Error(`error(s) parsing response body: ${errors}`);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async decodeLnurlPay(lnurl) {
|
|
85
|
+
return await lightningUtils_1.decodeLnurlPay(lnurl);
|
|
86
|
+
}
|
|
87
|
+
async fetchLnurlPayInvoice(params) {
|
|
88
|
+
return await lightningUtils_1.fetchLnurlPayInvoice(params, this.wallet.coin());
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.Lightning = Lightning;
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBZ0JzQjtBQUN0QixxREFBd0U7QUFHeEUsNENBQStDO0FBQy9DLG1DQUFxQztBQUVyQyxNQUFhLFNBQVM7SUFLcEIsWUFBWSxLQUFnQixFQUFFLE1BQWU7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUEyQjtRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ1osTUFBTSxFQUFFLENBQUM7UUFFWixPQUFPLHFCQUFZLENBQUMsa0NBQXFCLENBQUMsSUFBSSxFQUFFLGtDQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQjtRQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkUsT0FB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bmcsXG4gIENyZWF0ZUludm9pY2VQYXJhbXMsXG4gIFBheUludm9pY2VQYXJhbXMsXG4gIExpZ2h0bmluZ1dpdGhkcmF3YWxQYXJhbXMsXG4gIExpZ2h0bmluZ0RlcG9zaXRQYXJhbXMsXG4gIExudXJsUGF5UGFyYW1zLFxuICBDcmVhdGVJbnZvaWNlUmVzcG9uc2UsXG4gIENyZWF0ZURlcG9zaXRBZGRyZXNzUmVzcG9uc2UsXG4gIFBheUludm9pY2VSZXNwb25zZSxcbiAgR2V0QmFsYW5jZVJlc3BvbnNlLFxuICBXaXRoZHJhd1Jlc3BvbnNlLFxuICBEZXBvc2l0UmVzcG9uc2UsXG4gIEdldEludm9pY2VzUXVlcnksXG4gIEdldEludm9pY2VzUmVzcG9uc2UsXG4gIERlY29kZWRMbnVybFBheVJlcXVlc3QsXG59IGZyb20gJy4vaUxpZ2h0bmluZyc7XG5pbXBvcnQgeyBkZWNvZGVMbnVybFBheSwgZmV0Y2hMbnVybFBheUludm9pY2UgfSBmcm9tICcuL2xpZ2h0bmluZ1V0aWxzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzL2RlY29kZSc7XG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5cbmV4cG9ydCBjbGFzcyBMaWdodG5pbmcgaW1wbGVtZW50cyBJTGlnaHRuaW5nIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHdhbGxldDogSVdhbGxldDtcbiAgcHJpdmF0ZSByZWFkb25seSB1cmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB3YWxsZXQ6IElXYWxsZXQpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy51cmwgPSB0aGlzLmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZ2AsIDIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUludm9pY2UocGFyYW1zOiBDcmVhdGVJbnZvaWNlUGFyYW1zKTogUHJvbWlzZTxDcmVhdGVJbnZvaWNlUmVzcG9uc2U+IHtcbiAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy51cmwgKyAnL2ludm9pY2UnKVxuICAgICAgLnNlbmQocGFyYW1zKVxuICAgICAgLnJlc3VsdCgpO1xuXG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShDcmVhdGVJbnZvaWNlUmVzcG9uc2UubmFtZSwgQ3JlYXRlSW52b2ljZVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlRGVwb3NpdEFkZHJlc3MoKTogUHJvbWlzZTxDcmVhdGVEZXBvc2l0QWRkcmVzc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuYml0Z28ucG9zdCh0aGlzLnVybCArICcvYWRkcmVzcycpLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoQ3JlYXRlRGVwb3NpdEFkZHJlc3NSZXNwb25zZS5uYW1lLCBDcmVhdGVEZXBvc2l0QWRkcmVzc1Jlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGF5SW52b2ljZShwYXJhbXM6IFBheUludm9pY2VQYXJhbXMpOiBQcm9taXNlPFBheUludm9pY2VSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLnVybCArICcvcGF5bWVudCcpXG4gICAgICAuc2VuZChwYXJhbXMpXG4gICAgICAucmVzdWx0KCk7XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKFBheUludm9pY2VSZXNwb25zZS5uYW1lLCBQYXlJbnZvaWNlUmVzcG9uc2UsIGJvZHksIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZSBib2R5OiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRCYWxhbmNlKCk6IFByb21pc2U8R2V0QmFsYW5jZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsICsgJy9iYWxhbmNlJykucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShHZXRCYWxhbmNlUmVzcG9uc2UubmFtZSwgR2V0QmFsYW5jZVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgd2l0aGRyYXcocGFyYW1zOiBMaWdodG5pbmdXaXRoZHJhd2FsUGFyYW1zKTogUHJvbWlzZTxXaXRoZHJhd1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcGFyYW1zO1xuICAgIGxldCB7IGRlc3RpbmF0aW9uLCBzZXF1ZW5jZUlkIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoZGVzdGluYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVzdGluYXRpb24gPSAoYXdhaXQgdGhpcy53YWxsZXQuY3JlYXRlQWRkcmVzcygpKS5hZGRyZXNzO1xuICAgIH1cblxuICAgIGlmIChzZXF1ZW5jZUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlcXVlbmNlSWQgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLnVybCArICcvd2l0aGRyYXdhbCcpXG4gICAgICAuc2VuZCh7IHZhbHVlLCBkZXN0aW5hdGlvbiwgc2VxdWVuY2VJZCB9KVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoV2l0aGRyYXdSZXNwb25zZS5uYW1lLCBXaXRoZHJhd1Jlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwb3NpdChwYXJhbXM6IExpZ2h0bmluZ0RlcG9zaXRQYXJhbXMpOiBQcm9taXNlPERlcG9zaXRSZXNwb25zZT4ge1xuICAgIGNvbnN0IHsgYW1vdW50IH0gPSBwYXJhbXM7XG4gICAgbGV0IHsgYWRkcmVzcyB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkcmVzcyA9IChhd2FpdCB0aGlzLmNyZWF0ZURlcG9zaXRBZGRyZXNzKCkpLmFkZHJlc3M7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy53YWxsZXQuc2VuZCh7IGFtb3VudCwgYWRkcmVzcyB9KTtcblxuICAgIHJldHVybiBkZWNvZGVPckVsc2UoRGVwb3NpdFJlc3BvbnNlLm5hbWUsIERlcG9zaXRSZXNwb25zZSwgcmVzLCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZXMocXVlcnk/OiBHZXRJbnZvaWNlc1F1ZXJ5KTogUHJvbWlzZTxHZXRJbnZvaWNlc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IHsgc3RhdHVzPzogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9ID0ge307XG4gICAgcXVlcnlQYXJhbXMuc3RhdHVzID0gcXVlcnk/LnN0YXR1cztcbiAgICBxdWVyeVBhcmFtcy5saW1pdCA9IHF1ZXJ5Py5saW1pdDtcblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMudXJsICsgJy9pbnZvaWNlcycpXG4gICAgICAucXVlcnkocXVlcnlQYXJhbXMpXG4gICAgICAucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShHZXRJbnZvaWNlc1Jlc3BvbnNlLm5hbWUsIEdldEludm9pY2VzUmVzcG9uc2UsIGJvZHksIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZSBib2R5OiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWNvZGVMbnVybFBheShsbnVybDogc3RyaW5nKTogUHJvbWlzZTxEZWNvZGVkTG51cmxQYXlSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IGRlY29kZUxudXJsUGF5KGxudXJsKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaExudXJsUGF5SW52b2ljZShwYXJhbXM6IExudXJsUGF5UGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZmV0Y2hMbnVybFBheUludm9pY2UocGFyYW1zLCB0aGlzLndhbGxldC5jb2luKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DecodedLnurlPayRequest, LnurlPayParams } from './iLightning';
|
|
2
|
+
export declare type ParsedLightningInvoice = {
|
|
3
|
+
milliSatoshis: string;
|
|
4
|
+
/** hex-encoded */
|
|
5
|
+
paymentHash: string;
|
|
6
|
+
/** hex-encoded */
|
|
7
|
+
pubkey: string;
|
|
8
|
+
/** hex-encoded */
|
|
9
|
+
descriptionHash?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function decodeLnurlPay(lnurl: string): Promise<DecodedLnurlPayRequest>;
|
|
12
|
+
export declare function fetchLnurlPayInvoice(params: LnurlPayParams, coin: string): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
|
|
15
|
+
* @param {number} amount - amount intended to pay for the invoice
|
|
16
|
+
* @param {string} metadata - metadata that is used to verify the fetched invoice
|
|
17
|
+
* @throws error for invoice that does not match with amount and metadata
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateLnurlInvoice(invoice: ParsedLightningInvoice, milliSatAmount: string, metadata: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* @param {unknown} invoiceStr - a lightning invoice
|
|
22
|
+
* @return {ParsedLightningInvoice}
|
|
23
|
+
* @throws error for invalid lightning invoice
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseLightningInvoice(invoiceStr: unknown): ParsedLightningInvoice;
|
|
26
|
+
//# sourceMappingURL=lightningUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAoB,MAAM,cAAc,CAAC;AAIxF,oBAAY,sBAAsB,GAAG;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYnF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAShG;AAoBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUpH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,sBAAsB,CAoCjF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.parseLightningInvoice = exports.validateLnurlInvoice = exports.fetchLnurlPayInvoice = exports.decodeLnurlPay = void 0;
|
|
23
|
+
const bolt11 = __importStar(require("bolt11"));
|
|
24
|
+
const crypto = __importStar(require("crypto"));
|
|
25
|
+
const request = __importStar(require("superagent"));
|
|
26
|
+
const iLightning_1 = require("./iLightning");
|
|
27
|
+
const lnurlCodec_1 = require("./lnurlCodec");
|
|
28
|
+
const decode_1 = require("../utils/decode");
|
|
29
|
+
async function decodeLnurlPay(lnurl) {
|
|
30
|
+
const url = lnurlCodec_1.decodeLnurl(lnurl);
|
|
31
|
+
const { body } = await request.get(url);
|
|
32
|
+
const decodedRes = decode_1.decodeOrElse(iLightning_1.LnurlPayResponse.name, iLightning_1.LnurlPayResponse, body, (errors) => {
|
|
33
|
+
throw new Error(`error(s) parsing lnurl response: ${errors}`);
|
|
34
|
+
});
|
|
35
|
+
const domain = new URL(url).hostname;
|
|
36
|
+
return {
|
|
37
|
+
...decodedRes,
|
|
38
|
+
domain,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
exports.decodeLnurlPay = decodeLnurlPay;
|
|
42
|
+
async function fetchLnurlPayInvoice(params, coin) {
|
|
43
|
+
const { callback, milliSatAmount, metadata } = params;
|
|
44
|
+
const { pr: invoice } = callback.includes('?')
|
|
45
|
+
? (await request.get(callback + `&amount=${milliSatAmount}`)).body
|
|
46
|
+
: (await request.get(callback).query({ amount: milliSatAmount })).body;
|
|
47
|
+
const parsedInvoice = parseLightningInvoice(invoice);
|
|
48
|
+
validateLnurlInvoice(parsedInvoice, milliSatAmount, metadata);
|
|
49
|
+
return invoice;
|
|
50
|
+
}
|
|
51
|
+
exports.fetchLnurlPayInvoice = fetchLnurlPayInvoice;
|
|
52
|
+
function getNetworkForInvoice(invoice) {
|
|
53
|
+
if (invoice.startsWith('lntbs')) {
|
|
54
|
+
// signet invoices are not supported by our bolt11 dependency
|
|
55
|
+
// because the `tbs` prefix used for the invoice does not match the `tb`
|
|
56
|
+
// prefix used by on-chain signet addresses
|
|
57
|
+
// see: https://github.com/bitcoinjs/bolt11/pull/58#issuecomment-1106495709
|
|
58
|
+
// we can still decode the invoice however using a custom network
|
|
59
|
+
return {
|
|
60
|
+
bech32: 'tbs',
|
|
61
|
+
pubKeyHash: 0x6f,
|
|
62
|
+
scriptHash: 0xc4,
|
|
63
|
+
validWitnessVersions: [0, 1],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
|
|
70
|
+
* @param {number} amount - amount intended to pay for the invoice
|
|
71
|
+
* @param {string} metadata - metadata that is used to verify the fetched invoice
|
|
72
|
+
* @throws error for invoice that does not match with amount and metadata
|
|
73
|
+
*/
|
|
74
|
+
function validateLnurlInvoice(invoice, milliSatAmount, metadata) {
|
|
75
|
+
const { milliSatoshis, descriptionHash } = invoice;
|
|
76
|
+
if (milliSatoshis !== milliSatAmount) {
|
|
77
|
+
throw new Error('amount of invoice does not match with given amount');
|
|
78
|
+
}
|
|
79
|
+
const hash = crypto.createHash('sha256').update(metadata).digest('hex');
|
|
80
|
+
if (descriptionHash !== hash) {
|
|
81
|
+
throw new Error('invoice h tag does not match with hash of metadata');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.validateLnurlInvoice = validateLnurlInvoice;
|
|
85
|
+
/**
|
|
86
|
+
* @param {unknown} invoiceStr - a lightning invoice
|
|
87
|
+
* @return {ParsedLightningInvoice}
|
|
88
|
+
* @throws error for invalid lightning invoice
|
|
89
|
+
*/
|
|
90
|
+
function parseLightningInvoice(invoiceStr) {
|
|
91
|
+
var _a;
|
|
92
|
+
if (typeof invoiceStr !== 'string') {
|
|
93
|
+
throw new Error('invoice is malformed');
|
|
94
|
+
}
|
|
95
|
+
let decodedInvoice;
|
|
96
|
+
try {
|
|
97
|
+
decodedInvoice = bolt11.decode(invoiceStr, getNetworkForInvoice(invoiceStr));
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
throw new Error(`invoice is invalid`);
|
|
101
|
+
}
|
|
102
|
+
if (decodedInvoice.network === undefined) {
|
|
103
|
+
throw new Error('invoice network is invalid');
|
|
104
|
+
}
|
|
105
|
+
// The hex encoded payment hash for the invoice we are paying
|
|
106
|
+
const paymentHash = (_a = decodedInvoice.tags.find((tag) => tag.tagName === 'payment_hash')) === null || _a === void 0 ? void 0 : _a.data;
|
|
107
|
+
if (paymentHash === undefined || typeof paymentHash !== 'string') {
|
|
108
|
+
throw new Error('invoice payment hash is invalid');
|
|
109
|
+
}
|
|
110
|
+
// The hex encoded pub key of the lightning node that created the invoice
|
|
111
|
+
const pubkey = decodedInvoice.payeeNodeKey;
|
|
112
|
+
if (pubkey === undefined) {
|
|
113
|
+
throw new Error('invoice payee pub key is invalid');
|
|
114
|
+
}
|
|
115
|
+
const { millisatoshis, tags } = decodedInvoice;
|
|
116
|
+
if (millisatoshis === null || millisatoshis === undefined) {
|
|
117
|
+
throw new Error('invoice does not have an amount');
|
|
118
|
+
}
|
|
119
|
+
const descriptionHash = tags.find((tag) => tag.tagName === 'purpose_commit_hash').data;
|
|
120
|
+
return { milliSatoshis: millisatoshis, paymentHash, pubkey, descriptionHash };
|
|
121
|
+
}
|
|
122
|
+
exports.parseLightningInvoice = parseLightningInvoice;
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsK0NBQWlDO0FBQ2pDLG9EQUFzQztBQUN0Qyw2Q0FBd0Y7QUFDeEYsNkNBQTJDO0FBQzNDLDRDQUErQztBQVl4QyxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDaEQsTUFBTSxHQUFHLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLHFCQUFZLENBQUMsNkJBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFckMsT0FBTztRQUNMLEdBQUcsVUFBVTtRQUNiLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQVpELHdDQVlDO0FBRU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQXNCLEVBQUUsSUFBWTtJQUM3RSxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdEQsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxH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RCxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQztJQUMvQyxJQUFJLGFBQWEsS0FBSyxJQUFJLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDO0lBRXZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQXBDRCxzREFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBib2x0MTEgZnJvbSAnYm9sdDExJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCB7IERlY29kZWRMbnVybFBheVJlcXVlc3QsIExudXJsUGF5UGFyYW1zLCBMbnVybFBheVJlc3BvbnNlIH0gZnJvbSAnLi9pTGlnaHRuaW5nJztcbmltcG9ydCB7IGRlY29kZUxudXJsIH0gZnJvbSAnLi9sbnVybENvZGVjJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzL2RlY29kZSc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZExpZ2h0bmluZ0ludm9pY2UgPSB7XG4gIG1pbGxpU2F0b3NoaXM6IHN0cmluZztcbiAgLyoqIGhleC1lbmNvZGVkICovXG4gIHBheW1lbnRIYXNoOiBzdHJpbmc7XG4gIC8qKiBoZXgtZW5jb2RlZCAqL1xuICBwdWJrZXk6IHN0cmluZztcbiAgLyoqIGhleC1lbmNvZGVkICovXG4gIGRlc2NyaXB0aW9uSGFzaD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNvZGVMbnVybFBheShsbnVybDogc3RyaW5nKTogUHJvbWlzZTxEZWNvZGVkTG51cmxQYXlSZXF1ZXN0PiB7XG4gIGNvbnN0IHVybCA9IGRlY29kZUxudXJsKGxudXJsKTtcbiAgY29uc3QgeyBib2R5IH0gPSBhd2FpdCByZXF1ZXN0LmdldCh1cmwpO1xuICBjb25zdCBkZWNvZGVkUmVzID0gZGVjb2RlT3JFbHNlKExudXJsUGF5UmVzcG9uc2UubmFtZSwgTG51cmxQYXlSZXNwb25zZSwgYm9keSwgKGVycm9ycykgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyBsbnVybCByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gIH0pO1xuICBjb25zdCBkb21haW4gPSBuZXcgVVJMKHVybCkuaG9zdG5hbWU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kZWNvZGVkUmVzLFxuICAgIGRvbWFpbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoTG51cmxQYXlJbnZvaWNlKHBhcmFtczogTG51cmxQYXlQYXJhbXMsIGNvaW46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgY2FsbGJhY2ssIG1pbGxpU2F0QW1vdW50LCBtZXRhZGF0YSB9ID0gcGFyYW1zO1xuICBjb25zdCB7IHByOiBpbnZvaWNlIH0gPSBjYWxsYmFjay5pbmNsdWRlcygnPycpXG4gICAgPyAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2sgKyBgJmFtb3VudD0ke21pbGxpU2F0QW1vdW50fWApKS5ib2R5XG4gICAgOiAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2spLnF1ZXJ5KHsgYW1vdW50OiBtaWxsaVNhdEFtb3VudCB9KSkuYm9keTtcbiAgY29uc3QgcGFyc2VkSW52b2ljZSA9IHBhcnNlTGlnaHRuaW5nSW52b2ljZShpbnZvaWNlKTtcbiAgdmFsaWRhdGVMbnVybEludm9pY2UocGFyc2VkSW52b2ljZSwgbWlsbGlTYXRBbW91bnQsIG1ldGFkYXRhKTtcblxuICByZXR1cm4gaW52b2ljZTtcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29ya0Zvckludm9pY2UoaW52b2ljZTogc3RyaW5nKSB7XG4gIGlmIChpbnZvaWNlLnN0YXJ0c1dpdGgoJ2xudGJzJykpIHtcbiAgICAvLyBzaWduZXQgaW52b2ljZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgb3VyIGJvbHQxMSBkZXBlbmRlbmN5XG4gICAgLy8gYmVjYXVzZSB0aGUgYHRic2AgcHJlZml4IHVzZWQgZm9yIHRoZSBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHRoZSBgdGJgXG4gICAgLy8gcHJlZml4IHVzZWQgYnkgb24tY2hhaW4gc2lnbmV0IGFkZHJlc3Nlc1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9ib2x0MTEvcHVsbC81OCNpc3N1ZWNvbW1lbnQtMTEwNjQ5NTcwOVxuICAgIC8vIHdlIGNhbiBzdGlsbCBkZWNvZGUgdGhlIGludm9pY2UgaG93ZXZlciB1c2luZyBhIGN1c3RvbSBuZXR3b3JrXG4gICAgcmV0dXJuIHtcbiAgICAgIGJlY2gzMjogJ3RicycsXG4gICAgICBwdWJLZXlIYXNoOiAweDZmLFxuICAgICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICAgIHZhbGlkV2l0bmVzc1ZlcnNpb25zOiBbMCwgMV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZWRMaWdodG5pbmdJbnZvaWNlfSBpbnZvaWNlIC0gYSBwYXJzZWQgbGlnaHRuaW5nIGludm9pY2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgLSBhbW91bnQgaW50ZW5kZWQgdG8gcGF5IGZvciB0aGUgaW52b2ljZVxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGFkYXRhIC0gbWV0YWRhdGEgdGhhdCBpcyB1c2VkIHRvIHZlcmlmeSB0aGUgZmV0Y2hlZCBpbnZvaWNlXG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZvaWNlIHRoYXQgZG9lcyBub3QgbWF0Y2ggd2l0aCBhbW91bnQgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxudXJsSW52b2ljZShpbnZvaWNlOiBQYXJzZWRMaWdodG5pbmdJbnZvaWNlLCBtaWxsaVNhdEFtb3VudDogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHsgbWlsbGlTYXRvc2hpcywgZGVzY3JpcHRpb25IYXNoIH0gPSBpbnZvaWNlO1xuICBpZiAobWlsbGlTYXRvc2hpcyAhPT0gbWlsbGlTYXRBbW91bnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBvZiBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHdpdGggZ2l2ZW4gYW1vdW50Jyk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShtZXRhZGF0YSkuZGlnZXN0KCdoZXgnKTtcbiAgaWYgKGRlc2NyaXB0aW9uSGFzaCAhPT0gaGFzaCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBoIHRhZyBkb2VzIG5vdCBtYXRjaCB3aXRoIGhhc2ggb2YgbWV0YWRhdGEnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gaW52b2ljZVN0ciAtIGEgbGlnaHRuaW5nIGludm9pY2VcbiAqIEByZXR1cm4ge1BhcnNlZExpZ2h0bmluZ0ludm9pY2V9XG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZhbGlkIGxpZ2h0bmluZyBpbnZvaWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpZ2h0bmluZ0ludm9pY2UoaW52b2ljZVN0cjogdW5rbm93bik6IFBhcnNlZExpZ2h0bmluZ0ludm9pY2Uge1xuICBpZiAodHlwZW9mIGludm9pY2VTdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIGlzIG1hbGZvcm1lZCcpO1xuICB9XG5cbiAgbGV0IGRlY29kZWRJbnZvaWNlO1xuICB0cnkge1xuICAgIGRlY29kZWRJbnZvaWNlID0gYm9sdDExLmRlY29kZShpbnZvaWNlU3RyLCBnZXROZXR3b3JrRm9ySW52b2ljZShpbnZvaWNlU3RyKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludm9pY2UgaXMgaW52YWxpZGApO1xuICB9XG5cbiAgaWYgKGRlY29kZWRJbnZvaWNlLm5ldHdvcmsgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBuZXR3b3JrIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIC8vIFRoZSBoZXggZW5jb2RlZCBwYXltZW50IGhhc2ggZm9yIHRoZSBpbnZvaWNlIHdlIGFyZSBwYXlpbmdcbiAgY29uc3QgcGF5bWVudEhhc2ggPSBkZWNvZGVkSW52b2ljZS50YWdzLmZpbmQoKHRhZykgPT4gdGFnLnRhZ05hbWUgPT09ICdwYXltZW50X2hhc2gnKT8uZGF0YTtcbiAgaWYgKHBheW1lbnRIYXNoID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHBheW1lbnRIYXNoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBwYXltZW50IGhhc2ggaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgLy8gVGhlIGhleCBlbmNvZGVkIHB1YiBrZXkgb2YgdGhlIGxpZ2h0bmluZyBub2RlIHRoYXQgY3JlYXRlZCB0aGUgaW52b2ljZVxuICBjb25zdCBwdWJrZXkgPSBkZWNvZGVkSW52b2ljZS5wYXllZU5vZGVLZXk7XG4gIGlmIChwdWJrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBwYXllZSBwdWIga2V5IGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHsgbWlsbGlzYXRvc2hpcywgdGFncyB9ID0gZGVjb2RlZEludm9pY2U7XG4gIGlmIChtaWxsaXNhdG9zaGlzID09PSBudWxsIHx8IG1pbGxpc2F0b3NoaXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBkb2VzIG5vdCBoYXZlIGFuIGFtb3VudCcpO1xuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRpb25IYXNoID0gdGFncy5maW5kKCh0YWcpID0+IHRhZy50YWdOYW1lID09PSAncHVycG9zZV9jb21taXRfaGFzaCcpLmRhdGE7XG5cbiAgcmV0dXJuIHsgbWlsbGlTYXRvc2hpczogbWlsbGlzYXRvc2hpcywgcGF5bWVudEhhc2gsIHB1YmtleSwgZGVzY3JpcHRpb25IYXNoIH07XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lnurlCodec.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lnurlCodec.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAEtC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAmBxC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeLnurl = exports.encodeLnurl = void 0;
|
|
4
|
+
const bech32_1 = require("bech32");
|
|
5
|
+
function encodeLnurl(url) {
|
|
6
|
+
return bech32_1.bech32.encode('lnurl', bech32_1.bech32.toWords(Buffer.from(url)));
|
|
7
|
+
}
|
|
8
|
+
exports.encodeLnurl = encodeLnurl;
|
|
9
|
+
function decodeLnurl(lnurl) {
|
|
10
|
+
const splittedLnurl = lnurl.split(':');
|
|
11
|
+
let parsedLnurl;
|
|
12
|
+
if (splittedLnurl.length === 2) {
|
|
13
|
+
if (splittedLnurl[0] !== 'lightning') {
|
|
14
|
+
throw new Error('invalid lnurl');
|
|
15
|
+
}
|
|
16
|
+
parsedLnurl = splittedLnurl[1];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
parsedLnurl = splittedLnurl[0];
|
|
20
|
+
}
|
|
21
|
+
const { prefix, words } = bech32_1.bech32.decode(parsedLnurl, 2000);
|
|
22
|
+
if (prefix !== 'lnurl') {
|
|
23
|
+
throw new Error('invalid lnurl');
|
|
24
|
+
}
|
|
25
|
+
return Buffer.from(bech32_1.bech32.fromWords(words)).toString();
|
|
26
|
+
}
|
|
27
|
+
exports.decodeLnurl = decodeLnurl;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG51cmxDb2RlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvbG51cmxDb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFFaEMsU0FBZ0IsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxlQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxLQUFhO0lBQ3ZDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkMsSUFBSSxXQUFtQixDQUFDO0lBQ3hCLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDbEM7UUFDRCxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hDO1NBQU07UUFDTCxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUzRCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDekQsQ0FBQztBQW5CRCxrQ0FtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlTG51cmwodXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGJlY2gzMi5lbmNvZGUoJ2xudXJsJywgYmVjaDMyLnRvV29yZHMoQnVmZmVyLmZyb20odXJsKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTG51cmwobG51cmw6IHN0cmluZykge1xuICBjb25zdCBzcGxpdHRlZExudXJsID0gbG51cmwuc3BsaXQoJzonKTtcblxuICBsZXQgcGFyc2VkTG51cmw6IHN0cmluZztcbiAgaWYgKHNwbGl0dGVkTG51cmwubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHNwbGl0dGVkTG51cmxbMF0gIT09ICdsaWdodG5pbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbG51cmwnKTtcbiAgICB9XG4gICAgcGFyc2VkTG51cmwgPSBzcGxpdHRlZExudXJsWzFdO1xuICB9IGVsc2Uge1xuICAgIHBhcnNlZExudXJsID0gc3BsaXR0ZWRMbnVybFswXTtcbiAgfVxuICBjb25zdCB7IHByZWZpeCwgd29yZHMgfSA9IGJlY2gzMi5kZWNvZGUocGFyc2VkTG51cmwsIDIwMDApO1xuXG4gIGlmIChwcmVmaXggIT09ICdsbnVybCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbG51cmwnKTtcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHdvcmRzKSkudG9TdHJpbmcoKTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6DjE"}
|
|
@@ -305,7 +305,8 @@ class PendingApproval {
|
|
|
305
305
|
if (_.isUndefined(recreatedParsedTransaction.implicitExternalSpendAmount)) {
|
|
306
306
|
return signedTransaction;
|
|
307
307
|
}
|
|
308
|
-
if (
|
|
308
|
+
if (typeof recreatedParsedTransaction.implicitExternalSpendAmount !== 'bigint' &&
|
|
309
|
+
!_.isFinite(recreatedParsedTransaction.implicitExternalSpendAmount)) {
|
|
309
310
|
throw new Error('implicit external spend amount could not be determined');
|
|
310
311
|
}
|
|
311
312
|
if (!_.isUndefined(originalParsedTransaction.implicitExternalSpendAmount) &&
|
|
@@ -316,4 +317,4 @@ class PendingApproval {
|
|
|
316
317
|
}
|
|
317
318
|
}
|
|
318
319
|
exports.PendingApproval = PendingApproval;
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2Qyx3REFRNEI7QUFDNUIsb0NBQW1EO0FBR25ELE1BQWEsZUFBZTtJQU8xQixZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxtQkFBd0MsRUFBRSxNQUFnQjtRQUMzRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxPQUFPLDJCQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzNDLE9BQU8sMkJBQVMsQ0FBQyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7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Q0FBQyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQztZQUNyRSwwQkFBMEIsQ0FBQywyQkFBMkIsR0FBRyx5QkFBeUIsQ0FBQywyQkFBMkIsRUFDOUc7WUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXBWRCwwQ0FvVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBBcHByb3ZlT3B0aW9ucyxcbiAgSVBlbmRpbmdBcHByb3ZhbCxcbiAgT3duZXJUeXBlLFxuICBQZW5kaW5nQXBwcm92YWxEYXRhLFxuICBQZW5kaW5nQXBwcm92YWxJbmZvLFxuICBTdGF0ZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vcGVuZGluZ0FwcHJvdmFsJztcbmltcG9ydCB7IFJlcXVlc3RUcmFjZXIsIFRzc1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5cbmV4cG9ydCBjbGFzcyBQZW5kaW5nQXBwcm92YWwgaW1wbGVtZW50cyBJUGVuZGluZ0FwcHJvdmFsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VDb2luOiBJQmFzZUNvaW47XG4gIHByaXZhdGUgdHNzVXRpbHM6IFRzc1V0aWxzO1xuICBwcml2YXRlIHdhbGxldD86IElXYWxsZXQ7XG4gIHByaXZhdGUgX3BlbmRpbmdBcHByb3ZhbDogUGVuZGluZ0FwcHJvdmFsRGF0YTtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBiYXNlQ29pbjogSUJhc2VDb2luLCBwZW5kaW5nQXBwcm92YWxEYXRhOiBQZW5kaW5nQXBwcm92YWxEYXRhLCB3YWxsZXQ/OiBJV2FsbGV0KSB7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAgIHRoaXMuYmFzZUNvaW4gPSBiYXNlQ29pbjtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLnRzc1V0aWxzID0gbmV3IFRzc1V0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgdGhpcy5fcGVuZGluZ0FwcHJvdmFsID0gcGVuZGluZ0FwcHJvdmFsRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlkIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3duZXIgdHlwZSAod2FsbGV0IG9yIGVudGVycHJpc2UpXG4gICAqIFBlbmRpbmcgYXBwcm92YWxzIGNhbiBiZSBhcHByb3ZlZCBvciBtb2RpZmllZCBieSBkaWZmZXJlbnQgc2NvcGVzIChkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkKVxuICAgKiBJZiBhIHBlbmRpbmcgYXBwcm92YWwgaXMgb3duZWQgYnkgYSB3YWxsZXQsIHRoZW4gaXQgY2FuIGJlIGFwcHJvdmVkIGJ5IGFkbWluaXN0cmF0b3JzIG9mIHRoZSB3YWxsZXRcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGFuIGVudGVycHJpc2UsIHRoZW4gaXQgY2FuIGJlIGFwcHJvdmVkIGJ5IGFkbWluaXN0cmF0b3JzIG9mIHRoZSBlbnRlcnByaXNlXG4gICAqL1xuICBvd25lclR5cGUoKTogT3duZXJUeXBlIHtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLndhbGxldCkge1xuICAgICAgcmV0dXJuIE93bmVyVHlwZS5XQUxMRVQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nQXBwcm92YWwuZW50ZXJwcmlzZSkge1xuICAgICAgcmV0dXJuIE93bmVyVHlwZS5FTlRFUlBSSVNFO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgcGVuZGluZyBhcHByb3ZhbCBvd25lcjogbmVpdGhlciB3YWxsZXQgbm9yIGVudGVycHJpc2Ugd2FzIHByZXNlbnQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgd2FsbGV0IHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgd2FsbGV0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLndhbGxldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVudGVycHJpc2UgSUQgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGVudGVycHJpc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuZW50ZXJwcmlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXRlIG9mIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBzdGF0ZSgpOiBTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5zdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlkIG9mIHRoZSB1c2VyIHRoYXQgcGVyZm9ybWVkIHRoZSBhY3Rpb24gcmVzdWx0aW5nIGluIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBjcmVhdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5jcmVhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdHlwZSBvZiB0aGUgcGVuZGluZyBhcHByb3ZhbCAod2hhdCBpdCBhcHByb3ZlcylcbiAgICovXG4gIHR5cGUoKTogVHlwZSB7XG4gICAgaWYgKCF0aGlzLl9wZW5kaW5nQXBwcm92YWwuaW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwZW5kaW5nIGFwcHJvdmFsIGluZm8gaXMgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuaW5mby50eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgaW5mbygpOiBQZW5kaW5nQXBwcm92YWxJbmZvIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm87XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBiZSBhcHByb3ZlZC5cbiAgICogRGVmYXVsdHMgdG8gMSBpZiBhcHByb3ZhbHNSZXF1aXJlZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBvYmplY3RcbiAgICovXG4gIGFwcHJvdmFsc1JlcXVpcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5hcHByb3ZhbHNSZXF1aXJlZCB8fCAxO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgdXJsIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbCBmb3IgbWFraW5nIHJlcXVlc3RzIHRvIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBleHRyYVxuICAgKi9cbiAgdXJsKGV4dHJhID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJhc2VDb2luLnVybCgnL3BlbmRpbmdhcHByb3ZhbHMvJyArIHRoaXMuaWQoKSArIGV4dHJhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZldGNoZXMgdGhpcyBQZW5kaW5nQXBwcm92YWwgZnJvbSB0aGUgc2VydmVyIGFuZCByZXR1cm5zIGl0LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyBtdXRhdGVzIHRoZSBQZW5kaW5nQXBwcm92YWwgb2JqZWN0IGluIHBsYWNlLlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBnZXQocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8UGVuZGluZ0FwcHJvdmFsPiB7XG4gICAgdGhpcy5fcGVuZGluZ0FwcHJvdmFsID0gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy51cmwoKSkucmVzdWx0KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IHNlbGYud2FsbGV0IGlzIHNldFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVdhbGxldCgpOiBQcm9taXNlPHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgb2JqZWN0IHByb3BlcnR5IHRyYW5zYWN0aW9uUmVxdWVzdCcpO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMud2FsbGV0KSkge1xuICAgICAgY29uc3QgdXBkYXRlZFdhbGxldDogSVdhbGxldCA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0IH0pO1xuXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1cGRhdGVkV2FsbGV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgLSB1bmFibGUgdG8gZ2V0IHdhbGxldCB1c2luZyBzb3VyY2V3YWxsZXQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy53YWxsZXQgPSB1cGRhdGVkV2FsbGV0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhbGxldC5pZCgpICE9PSB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgc291cmNlIHdhbGxldCBmb3IgcGVuZGluZyBhcHByb3ZhbCcpO1xuICAgIH1cblxuICAgIC8vIG90aGVyd2lzZSByZXR1cm5zIHVuZGVmaW5lZFxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIHRvIGFuIGFwcHJvdmVkIHN0YXRlXG4gICAqL1xuICBhc3luYyBhcHByb3ZlKHBhcmFtczogQXBwcm92ZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFsnd2FsbGV0UGFzc3BocmFzZScsICdvdHAnXSk7XG5cbiAgICBsZXQgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgLypcbiAgICAgKiBDb2xkIHdhbGxldHMgY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9ucyBpZiB0aGUgb25seSB0aGluZyBwcm92aWRlZCBpcyB0aGUgd2FsbGV0IHBhc3NwaHJhc2VcbiAgICAgKlxuICAgICAqIFRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgcmVjcmVhdGVkIGlmIGVpdGhlclxuICAgICAqIOKAkyB0aGVyZSBpcyBhbiB4cHJ2XG4gICAgICog4oCTIHRoZXJlIGlzIGEgd2FsbGV0UGFzc3BocmFzZSBhbmQgdGhlIHdhbGxldCBpcyBub3QgY29sZCAoYmVjYXVzZSBpZiBpdCdzIGNvbGQsIHRoZSBwYXNzcGhyYXNlIGlzIG9mIGxpdHRsZSB1c2UpXG4gICAgICpcbiAgICAgKiBUaGVyZWZvcmUsIGlmIG5laXRoZXIgb2YgdGhlc2UgaXMgdHJ1ZSwgdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSByZWNyZWF0ZWQsIHdoaWNoIGlzIHJlZmxlY3RlZCBpbiB0aGUgaWZcbiAgICAgKiBzdGF0ZW1lbnQgYmVsb3cuXG4gICAgICovXG4gICAgY29uc3QgaXNDb2xkV2FsbGV0ID0gISFfLmdldCh0aGlzLndhbGxldCwgJ193YWxsZXQuaXNDb2xkJyk7XG4gICAgY29uc3QgaXNPRkNXYWxsZXQgPSB0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnb2ZjJzsgLy8gT2ZmLWNoYWluIHRyYW5zYWN0aW9ucyBkb24ndCBuZWVkIHRvIGJlIHJlYnVpbHRcbiAgICBpZiAoIXBhcmFtcy54cHJ2ICYmICEocGFyYW1zLndhbGxldFBhc3NwaHJhc2UgJiYgIWlzQ29sZFdhbGxldCAmJiAhaXNPRkNXYWxsZXQpKSB7XG4gICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuXG4gICAgLypcbiAgICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGJlaW5nIGFwcHJvdmVkXG4gICAgICovXG4gICAgY29uc3QgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbiA9IGFzeW5jICgpOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0cmFuc2FjdGlvblJlcXVlc3QnKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhcHByb3ZpbmcgYSB0cmFuc2FjdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyB1c2VyIGhhcyBhIHByaXZhdGUga2V5IHRvIHRoZSB3YWxsZXRcbiAgICAgICAgICogKHNvbWUgYWRtaW5zIG1heSBub3QgaGF2ZSB0aGUgc3BlbmQgcGVybWlzc2lvbiksIHRoZSB0cmFuc2FjdGlvbiBjb3VsZCBlaXRoZXIgYmUgcmVicm9hZGNhc3QgYXMgaXMsIG9yIGl0IGNvdWxkXG4gICAgICAgICAqIGJlIHJlY29uc3RydWN0ZWQuIEl0IGlzIHByZWZlcmFibGUgdG8gcmVjb25zdHJ1Y3QgYSB0eCBpbiBvcmRlciB0byBhZGhlcmUgdG8gdGhlIGxhdGVzdCBuZXR3b3JrIGNvbmRpdGlvbnNcbiAgICAgICAgICogc3VjaCBhcyBuZXdlciB1bnNwZW50cywgZGlmZmVyZW50IGZlZXMsIG9yIGEgaGlnaGVyIHNlcXVlbmNlIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGFyYW1zLnR4KSB7XG4gICAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eEhleDogcGFyYW1zLnR4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IF8uZ2V0KHRoaXMuaW5mbygpLCBgdHJhbnNhY3Rpb25SZXF1ZXN0LmNvaW5TcGVjaWZpYy4ke3RoaXMuYmFzZUNvaW4udHlwZX1gKSBhcyB7XG4gICAgICAgICAgdHhIZXg6IHN0cmluZztcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0aGlzIHVzZXIgbWF5IG5vdCBoYXZlIHNwZW5kaW5nIHByaXZpbGVnZXMgb3IgYSBwYXNzcGhyYXNlIG1heSBub3QgaGF2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgICBpZiAoIWNhblJlY3JlYXRlVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICBpZiAoIV8uaXNPYmplY3QodHJhbnNhY3Rpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZXJlIGlzIG5laXRoZXIgYW4gb3JpZ2luYWwgdHJhbnNhY3Rpb24gb2JqZWN0IG5vciBjYW4gYSBuZXcgb25lIGJlIHJlY3JlYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBvcHVsYXRlV2FsbGV0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGFwcHJvdmFsIHBheWxvYWQgYW5kIHNlbmQgaXQgdG8gYml0Z29cbiAgICAgKi9cbiAgICBjb25zdCBzZW5kQXBwcm92YWwgPSAodHJhbnNhY3Rpb246IHsgdHhIZXg6IHN0cmluZzsgaGFsZlNpZ25lZD86IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsUGFyYW1zOiBhbnkgPSB7IHN0YXRlOiAnYXBwcm92ZWQnLCBvdHA6IHBhcmFtcy5vdHAgfTtcbiAgICAgIGlmICh0cmFuc2FjdGlvbikge1xuICAgICAgICAvLyBpZiB0aGUgdHJhbnNhY3Rpb24gYWxyZWFkeSBoYXMgYSBoYWxmIHNpZ25lZCBwcm9wZXJ0eSwgd2UgdGFrZSB0aGF0IGRpcmVjdGx5XG4gICAgICAgIGFwcHJvdmFsUGFyYW1zLmhhbGZTaWduZWQgPSB0cmFuc2FjdGlvbi5oYWxmU2lnbmVkIHx8IHRyYW5zYWN0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiB0aGlzLmJpdGdvLnB1dCh0aGlzLnVybCgpKS5zZW5kKGFwcHJvdmFsUGFyYW1zKS5yZXN1bHQoKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsVHJhbnNhY3Rpb24gPSAoYXdhaXQgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbigpKSBhcyBhbnk7XG4gICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgcmV0dXJuIGF3YWl0IHNlbmRBcHByb3ZhbChhcHByb3ZhbFRyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uICYmXG4gICAgICAgIChlLm1lc3NhZ2UuaW5kZXhPZignY291bGQgbm90IGZpbmQgdW5zcGVudCBvdXRwdXQgZm9yIGlucHV0JykgIT09IC0xIHx8XG4gICAgICAgICAgZS5tZXNzYWdlLmluZGV4T2YoJ3RyYW5zYWN0aW9uIGNvbmZsaWN0cyB3aXRoIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGluIHRoZSBzZW5kIHF1ZXVlJykgIT09IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5zcGVudHMgZXhwaXJlZCwgd2FsbGV0IHBhc3NwaHJhc2Ugb3IgeHBydiByZXF1aXJlZCB0byByZWNyZWF0ZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhIHJlamVjdGVkIHN0YXRlXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlamVjdChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZCh7IHN0YXRlOiAncmVqZWN0ZWQnIH0pLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciBQZW5kaW5nQXBwcm92YWwucmVqZWN0KClcbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgY2FuY2VsKHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlamVjdChwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGFuZCBzaWduIFRTUyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0FwcHJvdmVPcHRpb25zfSBwYXJhbXMgbmVlZGVkIHRvIGdldCB0eHMgYW5kIHVzZSB0aGUgd2FsbGV0UGFzc3BocmFzZSB0byB0c3Mgc2lnblxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlci5cbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtczogQXBwcm92ZU9wdGlvbnMsIHJlcUlkOiBSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgd2FsbGV0UGFzc3BocmFzZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLnR4UmVxdWVzdElkO1xuXG4gICAgaWYgKCF0aGlzLndhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXYWxsZXQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF3YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldFBhc3NwaHJhc2Ugbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0eFJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eFJlcXVlc3RJZCBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLndhbGxldC5nZXRQcnYoeyB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IHRoaXMudHNzVXRpbHMucmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQsIGRlY3J5cHRlZFBydiwgcmVxSWQpO1xuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogdHhSZXF1ZXN0LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGEgdHJhbnNhY3Rpb24gZm9yIGEgcGVuZGluZyBhcHByb3ZhbCB0byByZXNwb25kIHRvIHVwZGF0ZWQgbmV0d29yayBjb25kaXRpb25zXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbiByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHRyYW5zYWN0aW9uIHJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxQcmVidWlsZCA9IHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWNbdGhpcy5iYXNlQ29pbi50eXBlXTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cztcbiAgICBjb25zdCBwcmVidWlsZFBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwYXJhbXMsIHsgcmVjaXBpZW50czogcmVjaXBpZW50cyB9LCB0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9yaWdpbmFsUHJlYnVpbGQuaG9wVHJhbnNhY3Rpb24pKSB7XG4gICAgICBwcmVidWlsZFBhcmFtcy5ob3AgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMgJiYgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zLnR5cGUgPT09ICdjb25zb2xpZGF0ZScpIHtcbiAgICAgIC8vIGNvbnNvbGlkYXRlIHRhZyBpcyBpbiB0aGUgYnVpbGQgcGFyYW1zIC0gdGhpcyBpcyBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24sIHNvXG4gICAgICAvLyBpdCBuZWVkcyB0byBiZSByZWJ1aWx0IHVzaW5nIHRoZSBzcGVjaWFsIGNvbnNvbGlkYXRpb24gYnVpbGQgcm91dGVcbiAgICAgIHByZWJ1aWxkUGFyYW1zLnByZWJ1aWxkVHggPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAgIC5wb3N0KHRoaXMud2FsbGV0LnVybChgL2NvbnNvbGlkYXRlVW5zcGVudHNgKSlcbiAgICAgICAgLnNlbmQocHJlYnVpbGRQYXJhbXMpXG4gICAgICAgIC5yZXN1bHQoKTtcbiAgICAgIGRlbGV0ZSBwcmVidWlsZFBhcmFtcy5yZWNpcGllbnRzO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy53YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24ocHJlYnVpbGRQYXJhbXMpO1xuICAgIC8vIGNvbXBhcmUgUEFZR28gZmVlc1xuICAgIGNvbnN0IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBvcmlnaW5hbFByZWJ1aWxkLFxuICAgIH0pKSBhcyBhbnk7XG4gICAgY29uc3QgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBzaWduZWRUcmFuc2FjdGlvbixcbiAgICB9KSkgYXMgYW55O1xuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSkge1xuICAgICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH1cblxuICAgIGlmICghXy5pc0Zpbml0ZShyZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhXy5pc1VuZGVmaW5lZChvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkgJiZcbiAgICAgIHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA+IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY3JlYXRlZCB0cmFuc2FjdGlvbiBpcyB1c2luZyBhIGhpZ2hlciBwYXktYXMteW91LWdvLWZlZScpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2Qyx3REFRNEI7QUFDNUIsb0NBQW1EO0FBR25ELE1BQWEsZUFBZTtJQU8xQixZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxtQkFBd0MsRUFBRSxNQUFnQjtRQUMzRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxPQUFPLDJCQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzNDLE9BQU8sMkJBQVMsQ0FBQyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7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Qyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFDRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUM7WUFDckUsMEJBQTBCLENBQUMsMkJBQTJCLEdBQUcseUJBQXlCLENBQUMsMkJBQTJCLEVBQzlHO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUF2VkQsMENBdVZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgY29tbW9uIGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHtcbiAgQXBwcm92ZU9wdGlvbnMsXG4gIElQZW5kaW5nQXBwcm92YWwsXG4gIE93bmVyVHlwZSxcbiAgUGVuZGluZ0FwcHJvdmFsRGF0YSxcbiAgUGVuZGluZ0FwcHJvdmFsSW5mbyxcbiAgU3RhdGUsXG4gIFR5cGUsXG59IGZyb20gJy4uL3BlbmRpbmdBcHByb3ZhbCc7XG5pbXBvcnQgeyBSZXF1ZXN0VHJhY2VyLCBUc3NVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsIGltcGxlbWVudHMgSVBlbmRpbmdBcHByb3ZhbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29pbjogSUJhc2VDb2luO1xuICBwcml2YXRlIHRzc1V0aWxzOiBUc3NVdGlscztcbiAgcHJpdmF0ZSB3YWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIF9wZW5kaW5nQXBwcm92YWw6IFBlbmRpbmdBcHByb3ZhbERhdGE7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgcGVuZGluZ0FwcHJvdmFsRGF0YTogUGVuZGluZ0FwcHJvdmFsRGF0YSwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy50c3NVdGlscyA9IG5ldyBUc3NVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IHBlbmRpbmdBcHByb3ZhbERhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBzZWxmLndhbGxldCBpcyBzZXRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVXYWxsZXQoKTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodXBkYXRlZFdhbGxldCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgc291cmNld2FsbGV0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2FsbGV0ID0gdXBkYXRlZFdhbGxldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXQuaWQoKSAhPT0gdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhbiBhcHByb3ZlZCBzdGF0ZVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZShwYXJhbXM6IEFwcHJvdmVPcHRpb25zID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldFBhc3NwaHJhc2UnLCAnb3RwJ10pO1xuXG4gICAgbGV0IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgIC8qXG4gICAgICogQ29sZCB3YWxsZXRzIGNhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbnMgaWYgdGhlIG9ubHkgdGhpbmcgcHJvdmlkZWQgaXMgdGhlIHdhbGxldCBwYXNzcGhyYXNlXG4gICAgICpcbiAgICAgKiBUaGUgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpZiBlaXRoZXJcbiAgICAgKiDigJMgdGhlcmUgaXMgYW4geHBydlxuICAgICAqIOKAkyB0aGVyZSBpcyBhIHdhbGxldFBhc3NwaHJhc2UgYW5kIHRoZSB3YWxsZXQgaXMgbm90IGNvbGQgKGJlY2F1c2UgaWYgaXQncyBjb2xkLCB0aGUgcGFzc3BocmFzZSBpcyBvZiBsaXR0bGUgdXNlKVxuICAgICAqXG4gICAgICogVGhlcmVmb3JlLCBpZiBuZWl0aGVyIG9mIHRoZXNlIGlzIHRydWUsIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVjcmVhdGVkLCB3aGljaCBpcyByZWZsZWN0ZWQgaW4gdGhlIGlmXG4gICAgICogc3RhdGVtZW50IGJlbG93LlxuICAgICAqL1xuICAgIGNvbnN0IGlzQ29sZFdhbGxldCA9ICEhXy5nZXQodGhpcy53YWxsZXQsICdfd2FsbGV0LmlzQ29sZCcpO1xuICAgIGNvbnN0IGlzT0ZDV2FsbGV0ID0gdGhpcy5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ29mYyc7IC8vIE9mZi1jaGFpbiB0cmFuc2FjdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSByZWJ1aWx0XG4gICAgaWYgKCFwYXJhbXMueHBydiAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlICYmICFpc0NvbGRXYWxsZXQgJiYgIWlzT0ZDV2FsbGV0KSkge1xuICAgICAgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvbiB3aGljaCBpcyBiZWluZyBhcHByb3ZlZFxuICAgICAqL1xuICAgIGNvbnN0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0Jykge1xuICAgICAgICAvKlxuICAgICAgICAgKiBJZiB0aGlzIGlzIGEgcmVxdWVzdCBmb3IgYXBwcm92aW5nIGEgdHJhbnNhY3Rpb24sIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgdXNlciBoYXMgYSBwcml2YXRlIGtleSB0byB0aGUgd2FsbGV0XG4gICAgICAgICAqIChzb21lIGFkbWlucyBtYXkgbm90IGhhdmUgdGhlIHNwZW5kIHBlcm1pc3Npb24pLCB0aGUgdHJhbnNhY3Rpb24gY291bGQgZWl0aGVyIGJlIHJlYnJvYWRjYXN0IGFzIGlzLCBvciBpdCBjb3VsZFxuICAgICAgICAgKiBiZSByZWNvbnN0cnVjdGVkLiBJdCBpcyBwcmVmZXJhYmxlIHRvIHJlY29uc3RydWN0IGEgdHggaW4gb3JkZXIgdG8gYWRoZXJlIHRvIHRoZSBsYXRlc3QgbmV0d29yayBjb25kaXRpb25zXG4gICAgICAgICAqIHN1Y2ggYXMgbmV3ZXIgdW5zcGVudHMsIGRpZmZlcmVudCBmZWVzLCBvciBhIGhpZ2hlciBzZXF1ZW5jZSBpZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBhcmFtcy50eCkge1xuICAgICAgICAgIC8vIHRoZSBhcHByb3ZhbCB0eCB3YXMgcmVjb25zdHJ1Y3RlZCBhbmQgZXhwbGljaXRseSBzcGVjaWZpZWQgLSBwYXNzIGl0IHRocm91Z2hcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhIZXg6IHBhcmFtcy50eCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBfLmdldCh0aGlzLmluZm8oKSwgYHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWMuJHt0aGlzLmJhc2VDb2luLnR5cGV9YCkgYXMge1xuICAgICAgICAgIHR4SGV4OiBzdHJpbmc7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdGhpcyB1c2VyIG1heSBub3QgaGF2ZSBzcGVuZGluZyBwcml2aWxlZ2VzIG9yIGEgcGFzc3BocmFzZSBtYXkgbm90IGhhdmUgYmVlbiBwYXNzZWQgaW5cbiAgICAgICAgaWYgKCFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgaWYgKCFfLmlzT2JqZWN0KHRyYW5zYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGVyZSBpcyBuZWl0aGVyIGFuIG9yaWdpbmFsIHRyYW5zYWN0aW9uIG9iamVjdCBub3IgY2FuIGEgbmV3IG9uZSBiZSByZWNyZWF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVdhbGxldCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nQXBwcm92YWwudHhSZXF1ZXN0SWQpIHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXMsIHJlcUlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKlxuICAgICAqIEludGVybmFsIGhlbHBlciBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBhcHByb3ZhbCBwYXlsb2FkIGFuZCBzZW5kIGl0IHRvIGJpdGdvXG4gICAgICovXG4gICAgY29uc3Qgc2VuZEFwcHJvdmFsID0gKHRyYW5zYWN0aW9uOiB7IHR4SGV4OiBzdHJpbmc7IGhhbGZTaWduZWQ/OiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogYW55ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgLy8gaWYgdGhlIHRyYW5zYWN0aW9uIGFscmVhZHkgaGFzIGEgaGFsZiBzaWduZWQgcHJvcGVydHksIHdlIHRha2UgdGhhdCBkaXJlY3RseVxuICAgICAgICBhcHByb3ZhbFBhcmFtcy5oYWxmU2lnbmVkID0gdHJhbnNhY3Rpb24uaGFsZlNpZ25lZCB8fCB0cmFuc2FjdGlvbjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFJZCk7XG4gICAgICByZXR1cm4gdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHByb3ZhbFRyYW5zYWN0aW9uID0gKGF3YWl0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24oKSkgYXMgYW55O1xuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZW5kQXBwcm92YWwoYXBwcm92YWxUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiAmJlxuICAgICAgICAoZS5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGUubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWplY3QocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgUGVuZGluZ0FwcHJvdmFsLnJlamVjdCgpXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGNhbmNlbChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWplY3QocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhbmQgc2lnbiBUU1MgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcHByb3ZlT3B0aW9uc30gcGFyYW1zIG5lZWRlZCB0byBnZXQgdHhzIGFuZCB1c2UgdGhlIHdhbGxldFBhc3NwaHJhc2UgdG8gdHNzIHNpZ25cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zLCByZXFJZDogUmVxdWVzdFRyYWNlcik6IFByb21pc2U8eyB0eEhleDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IHdhbGxldFBhc3NwaHJhc2UgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0eFJlcXVlc3RJZCA9IHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZDtcblxuICAgIGlmICghdGhpcy53YWxsZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2FsbGV0IG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghd2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3YWxsZXRQYXNzcGhyYXNlIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghdHhSZXF1ZXN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdGVkUHJ2ID0gYXdhaXQgdGhpcy53YWxsZXQuZ2V0UHJ2KHsgd2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCB0aGlzLnRzc1V0aWxzLnJlY3JlYXRlVHhSZXF1ZXN0KHR4UmVxdWVzdElkLCBkZWNyeXB0ZWRQcnYsIHJlcUlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHhIZXg6IHR4UmVxdWVzdC51bnNpZ25lZFR4c1swXS5zZXJpYWxpemVkVHhIZXgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhIHRyYW5zYWN0aW9uIGZvciBhIHBlbmRpbmcgYXBwcm92YWwgdG8gcmVzcG9uZCB0byB1cGRhdGVkIG5ldHdvcmsgY29uZGl0aW9uc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0aGlzIG1ldGhvZCBvbmx5IG1ha2VzIHNlbnNlIHdpdGggZXhpc3RpbmcgdHJhbnNhY3Rpb24gcmVxdWVzdHNcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb24gd2l0aG91dCB0cmFuc2FjdGlvbiByZXF1ZXN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy53YWxsZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHdhbGxldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsUHJlYnVpbGQgPSB0cmFuc2FjdGlvblJlcXVlc3QuY29pblNwZWNpZmljW3RoaXMuYmFzZUNvaW4udHlwZV07XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdHJhbnNhY3Rpb25SZXF1ZXN0LnJlY2lwaWVudHM7XG4gICAgY29uc3QgcHJlYnVpbGRQYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zLCB7IHJlY2lwaWVudHM6IHJlY2lwaWVudHMgfSwgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvcmlnaW5hbFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uKSkge1xuICAgICAgcHJlYnVpbGRQYXJhbXMuaG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zICYmIHRyYW5zYWN0aW9uUmVxdWVzdC5idWlsZFBhcmFtcy50eXBlID09PSAnY29uc29saWRhdGUnKSB7XG4gICAgICAvLyBjb25zb2xpZGF0ZSB0YWcgaXMgaW4gdGhlIGJ1aWxkIHBhcmFtcyAtIHRoaXMgaXMgYSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uLCBzb1xuICAgICAgLy8gaXQgbmVlZHMgdG8gYmUgcmVidWlsdCB1c2luZyB0aGUgc3BlY2lhbCBjb25zb2xpZGF0aW9uIGJ1aWxkIHJvdXRlXG4gICAgICBwcmVidWlsZFBhcmFtcy5wcmVidWlsZFR4ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAucG9zdCh0aGlzLndhbGxldC51cmwoYC9jb25zb2xpZGF0ZVVuc3BlbnRzYCkpXG4gICAgICAgIC5zZW5kKHByZWJ1aWxkUGFyYW1zKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgICBkZWxldGUgcHJlYnVpbGRQYXJhbXMucmVjaXBpZW50cztcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMud2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHByZWJ1aWxkUGFyYW1zKTtcbiAgICAvLyBjb21wYXJlIFBBWUdvIGZlZXNcbiAgICBjb25zdCBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogb3JpZ2luYWxQcmVidWlsZCxcbiAgICB9KSkgYXMgYW55O1xuICAgIGNvbnN0IHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfSkpIGFzIGFueTtcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkpIHtcbiAgICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ICE9PSAnYmlnaW50JyAmJlxuICAgICAgIV8uaXNGaW5pdGUocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgY291bGQgbm90IGJlIGRldGVybWluZWQnKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIV8uaXNVbmRlZmluZWQob3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpICYmXG4gICAgICByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPiBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWNyZWF0ZWQgdHJhbnNhY3Rpb24gaXMgdXNpbmcgYSBoaWdoZXIgcGF5LWFzLXlvdS1nby1mZWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @prettier
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import { BIP32Interface } from 'bip32';
|
|
5
5
|
import { BaseCoin } from '../baseCoin';
|
|
6
6
|
import { BitGoBase } from '../bitgoBase';
|
|
7
7
|
import { KrsProvider } from '../config';
|
|
@@ -41,9 +41,9 @@ export declare function getIsUnsignedSweep({ backupKey, userKey }: {
|
|
|
41
41
|
backupKey: string;
|
|
42
42
|
userKey: string;
|
|
43
43
|
}): boolean;
|
|
44
|
-
export declare function validateKey(bitgo: BitGoBase, { key, source, passphrase, isUnsignedSweep, isKrsRecovery }: ValidateKeyOptions):
|
|
44
|
+
export declare function validateKey(bitgo: BitGoBase, { key, source, passphrase, isUnsignedSweep, isKrsRecovery }: ValidateKeyOptions): BIP32Interface;
|
|
45
45
|
export declare function getBip32Keys(bitgo: BitGoBase, params: InitiateRecoveryOptions, { requireBitGoXpub }: {
|
|
46
46
|
requireBitGoXpub: boolean;
|
|
47
|
-
}):
|
|
47
|
+
}): BIP32Interface[];
|
|
48
48
|
export {};
|
|
49
49
|
//# sourceMappingURL=initiate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/recovery/initiate.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"initiate.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/recovery/initiate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAgB,MAAM,WAAW,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,aAAK,qBAAqB,GAAG;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,EAAE,sBAA6B,EAAE,GAAE,qBAA0B,GAC5D,WAAW,CAgBb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAEN;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAExG;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE1G;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,kBAAkB,GAC9E,cAAc,CAgBhB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,uBAAuB,EAC/B,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,GAClD,cAAc,EAAE,CAmClB"}
|
|
@@ -2,28 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @prettier
|
|
4
4
|
*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
8
|
-
}) : (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
o[k2] = m[k];
|
|
11
|
-
}));
|
|
12
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
13
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
14
|
-
}) : function(o, v) {
|
|
15
|
-
o["default"] = v;
|
|
16
|
-
});
|
|
17
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
|
-
if (mod && mod.__esModule) return mod;
|
|
19
|
-
var result = {};
|
|
20
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
-
__setModuleDefault(result, mod);
|
|
22
|
-
return result;
|
|
23
|
-
};
|
|
24
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
6
|
exports.getBip32Keys = exports.validateKey = exports.getIsUnsignedSweep = exports.getIsKrsRecovery = exports.checkKrsProvider = exports.getKrsProvider = void 0;
|
|
26
|
-
const
|
|
7
|
+
const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
27
8
|
const config_1 = require("../config");
|
|
28
9
|
/**
|
|
29
10
|
* @param coin
|
|
@@ -65,7 +46,7 @@ function validateKey(bitgo, { key, source, passphrase, isUnsignedSweep, isKrsRec
|
|
|
65
46
|
// Try to decrypt the key
|
|
66
47
|
try {
|
|
67
48
|
if (source === 'user' || (source === 'backup' && !isKrsRecovery)) {
|
|
68
|
-
return bip32.fromBase58(bitgo.decrypt({ password: passphrase, input: key }));
|
|
49
|
+
return utxo_lib_1.bip32.fromBase58(bitgo.decrypt({ password: passphrase, input: key }));
|
|
69
50
|
}
|
|
70
51
|
}
|
|
71
52
|
catch (e) {
|
|
@@ -73,7 +54,7 @@ function validateKey(bitgo, { key, source, passphrase, isUnsignedSweep, isKrsRec
|
|
|
73
54
|
}
|
|
74
55
|
}
|
|
75
56
|
try {
|
|
76
|
-
return bip32.fromBase58(key);
|
|
57
|
+
return utxo_lib_1.bip32.fromBase58(key);
|
|
77
58
|
}
|
|
78
59
|
catch (e) {
|
|
79
60
|
throw new Error(`Failed to validate ${source} key - try again!`);
|
|
@@ -107,7 +88,7 @@ function getBip32Keys(bitgo, params, { requireBitGoXpub }) {
|
|
|
107
88
|
}
|
|
108
89
|
try {
|
|
109
90
|
// Box C
|
|
110
|
-
keys.push(bip32.fromBase58(params.bitgoKey));
|
|
91
|
+
keys.push(utxo_lib_1.bip32.fromBase58(params.bitgoKey));
|
|
111
92
|
}
|
|
112
93
|
catch (e) {
|
|
113
94
|
throw new Error('Failed to parse bitgo xpub!');
|
|
@@ -116,4 +97,4 @@ function getBip32Keys(bitgo, params, { requireBitGoXpub }) {
|
|
|
116
97
|
return keys;
|
|
117
98
|
}
|
|
118
99
|
exports.getBip32Keys = getBip32Keys;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vcmVjb3ZlcnkvaW5pdGlhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCw4Q0FBd0M7QUFJeEMsc0NBQXNEO0FBb0J0RDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsSUFBYyxFQUNkLGVBQW1DLEVBQ25DLEVBQUUsc0JBQXNCLEdBQUcsSUFBSSxLQUE0QixFQUFFO0lBRTdELElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxXQUFXLEdBQUcscUJBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVsRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzFEO0lBRUQsSUFBSSxzQkFBc0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO1FBQ3BGLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztLQUM3RjtJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFwQkQsd0NBb0JDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsSUFBYyxFQUNkLGVBQW1DLEVBQ25DLFVBQWlDLEVBQUU7SUFFbkMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQU5ELDRDQU1DO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUEwQztJQUM3RixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBMEM7SUFDL0YsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixLQUFnQixFQUNoQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXNCO0lBRS9FLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQy9DLHlCQUF5QjtRQUN6QixJQUFJO1lBQ0YsSUFBSSxNQUFNLEtBQUssTUFBTSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRSxPQUFPLGdCQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUU7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxpQ0FBaUMsQ0FBQyxDQUFDO1NBQy9FO0tBQ0Y7SUFDRCxJQUFJO1FBQ0YsT0FBTyxnQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM5QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDO0tBQ2xFO0FBQ0gsQ0FBQztBQW5CRCxrQ0FtQkM7QUFFRCxTQUFnQixZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLE1BQStCLEVBQy9CLEVBQUUsZ0JBQWdCLEVBQWlDO0lBRW5ELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sSUFBSSxHQUFHO1FBQ1gsUUFBUTtRQUNSLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDakIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ25CLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDbkMsYUFBYTtZQUNiLGVBQWU7U0FDaEIsQ0FBQztRQUNGLFFBQVE7UUFDUixXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsU0FBUztZQUNyQixNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUNuQyxhQUFhO1lBQ2IsZUFBZTtTQUNoQixDQUFDO0tBQ0gsQ0FBQztJQUVGLElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSTtZQUNGLFFBQVE7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXZDRCxvQ0F1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5cbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS3JzUHJvdmlkZXIsIGtyc1Byb3ZpZGVycyB9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmludGVyZmFjZSBWYWxpZGF0ZUtleU9wdGlvbnMge1xuICBrZXk6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIGlzVW5zaWduZWRTd2VlcDogYm9vbGVhbjtcbiAgaXNLcnNSZWNvdmVyeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWF0ZVJlY292ZXJ5T3B0aW9ucyB7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIGJpdGdvS2V5Pzogc3RyaW5nOyAvLyBvcHRpb25hbCBmb3IgeHJwIHJlY292ZXJpZXNcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufVxuXG50eXBlIEdldEtyc1Byb3ZpZGVyT3B0aW9ucyA9IHsgY2hlY2tDb2luRmFtaWx5U3VwcG9ydD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAcGFyYW0gY29pblxuICogQHBhcmFtIGtyc1Byb3ZpZGVyTmFtZVxuICogQHBhcmFtIGNoZWNrQ29pbkZhbWlseVN1cHBvcnQgLSBhc3NlcnQgdGhhdCBrcnNQcm92aWRlciBleHBsaWNpdGx5IHN1cHBvcnRzIGNvaW5cbiAqIEByZXR1cm4gS3JzUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtyc1Byb3ZpZGVyKFxuICBjb2luOiBCYXNlQ29pbixcbiAga3JzUHJvdmlkZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHsgY2hlY2tDb2luRmFtaWx5U3VwcG9ydCA9IHRydWUgfTogR2V0S3JzUHJvdmlkZXJPcHRpb25zID0ge31cbik6IEtyc1Byb3ZpZGVyIHtcbiAgaWYgKCFrcnNQcm92aWRlck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGtyc1Byb3ZpZGVyIG5hbWVgKTtcbiAgfVxuXG4gIGNvbnN0IGtyc1Byb3ZpZGVyID0ga3JzUHJvdmlkZXJzW2tyc1Byb3ZpZGVyTmFtZV07XG5cbiAgaWYgKGtyc1Byb3ZpZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHJlY292ZXJ5IHNlcnZpY2UgcHJvdmlkZXInKTtcbiAgfVxuXG4gIGlmIChjaGVja0NvaW5GYW1pbHlTdXBwb3J0ICYmICFrcnNQcm92aWRlci5zdXBwb3J0ZWRDb2lucy5pbmNsdWRlcyhjb2luLmdldEZhbWlseSgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc3BlY2lmaWVkIGtleSByZWNvdmVyeSBzZXJ2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVjb3ZlcmllcyBmb3IgdGhpcyBjb2luJyk7XG4gIH1cblxuICByZXR1cm4ga3JzUHJvdmlkZXI7XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3Ige0BzZWUgZ2V0S3JzUHJvdmlkZXJ9IHJldHVybmluZyB2b2lkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0tyc1Byb3ZpZGVyKFxuICBjb2luOiBCYXNlQ29pbixcbiAga3JzUHJvdmlkZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IEdldEtyc1Byb3ZpZGVyT3B0aW9ucyA9IHt9XG4pOiB2b2lkIHtcbiAgZ2V0S3JzUHJvdmlkZXIoY29pbiwga3JzUHJvdmlkZXJOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElzS3JzUmVjb3ZlcnkoeyBiYWNrdXBLZXksIHVzZXJLZXkgfTogeyBiYWNrdXBLZXk6IHN0cmluZzsgdXNlcktleTogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGJhY2t1cEtleS5zdGFydHNXaXRoKCd4cHViJykgJiYgIXVzZXJLZXkuc3RhcnRzV2l0aCgneHB1YicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXNVbnNpZ25lZFN3ZWVwKHsgYmFja3VwS2V5LCB1c2VyS2V5IH06IHsgYmFja3VwS2V5OiBzdHJpbmc7IHVzZXJLZXk6IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBiYWNrdXBLZXkuc3RhcnRzV2l0aCgneHB1YicpICYmIHVzZXJLZXkuc3RhcnRzV2l0aCgneHB1YicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVLZXkoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHsga2V5LCBzb3VyY2UsIHBhc3NwaHJhc2UsIGlzVW5zaWduZWRTd2VlcCwgaXNLcnNSZWNvdmVyeSB9OiBWYWxpZGF0ZUtleU9wdGlvbnNcbik6IEJJUDMySW50ZXJmYWNlIHtcbiAgaWYgKCFrZXkuc3RhcnRzV2l0aCgneHBydicpICYmICFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAvLyBUcnkgdG8gZGVjcnlwdCB0aGUga2V5XG4gICAgdHJ5IHtcbiAgICAgIGlmIChzb3VyY2UgPT09ICd1c2VyJyB8fCAoc291cmNlID09PSAnYmFja3VwJyAmJiAhaXNLcnNSZWNvdmVyeSkpIHtcbiAgICAgICAgcmV0dXJuIGJpcDMyLmZyb21CYXNlNTgoYml0Z28uZGVjcnlwdCh7IHBhc3N3b3JkOiBwYXNzcGhyYXNlLCBpbnB1dDoga2V5IH0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNyeXB0ICR7c291cmNlfSBrZXkgd2l0aCBwYXNzY29kZSAtIHRyeSBhZ2FpbiFgKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gYmlwMzIuZnJvbUJhc2U1OChrZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdmFsaWRhdGUgJHtzb3VyY2V9IGtleSAtIHRyeSBhZ2FpbiFgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmlwMzJLZXlzKFxuICBiaXRnbzogQml0R29CYXNlLFxuICBwYXJhbXM6IEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zLFxuICB7IHJlcXVpcmVCaXRHb1hwdWIgfTogeyByZXF1aXJlQml0R29YcHViOiBib29sZWFuIH1cbik6IEJJUDMySW50ZXJmYWNlW10ge1xuICBjb25zdCBpc0tyc1JlY292ZXJ5ID0gZ2V0SXNLcnNSZWNvdmVyeShwYXJhbXMpO1xuICBjb25zdCBpc1Vuc2lnbmVkU3dlZXAgPSBnZXRJc1Vuc2lnbmVkU3dlZXAocGFyYW1zKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAvLyBCb3ggQVxuICAgIHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6IHBhcmFtcy51c2VyS2V5LFxuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBwYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIGlzS3JzUmVjb3ZlcnksXG4gICAgICBpc1Vuc2lnbmVkU3dlZXAsXG4gICAgfSksXG4gICAgLy8gQm94IEJcbiAgICB2YWxpZGF0ZUtleShiaXRnbywge1xuICAgICAga2V5OiBwYXJhbXMuYmFja3VwS2V5LFxuICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgIHBhc3NwaHJhc2U6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgaXNLcnNSZWNvdmVyeSxcbiAgICAgIGlzVW5zaWduZWRTd2VlcCxcbiAgICB9KSxcbiAgXTtcblxuICBpZiAocmVxdWlyZUJpdEdvWHB1Yikge1xuICAgIGlmICghcGFyYW1zLmJpdGdvS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJpdEdvIHhwdWIgcmVxdWlyZWQgYnV0IG5vdCBwcm92aWRlZGApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gQm94IENcbiAgICAgIGtleXMucHVzaChiaXAzMi5mcm9tQmFzZTU4KHBhcmFtcy5iaXRnb0tleSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIGJpdGdvIHhwdWIhJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
|