@bitgo/sdk-core 28.4.0 → 28.5.0
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 +12 -0
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +9 -2
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightningUtils.js +24 -7
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +3 -3
- package/dist/src/bitgo/wallet/iWallet.d.ts +43 -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 +19 -1
- 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 +31 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +109 -2
- package/dist/src/bitgo/wallet/wallets.d.ts +25 -1
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +75 -1
- package/dist/test/unit/bitgo/lightning/lightningUtils.js +38 -23
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -27,11 +27,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const assert_1 = __importDefault(require("assert"));
|
|
30
|
-
const
|
|
30
|
+
const sinon = __importStar(require("sinon"));
|
|
31
31
|
const macaroon_1 = require("macaroon");
|
|
32
|
-
const
|
|
32
|
+
const statics = __importStar(require("@bitgo/statics"));
|
|
33
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
33
34
|
const createWatchOnlyFixture_1 = require("./createWatchOnlyFixture");
|
|
34
|
-
const
|
|
35
|
+
const lightningUtils_1 = require("./../../../../src/bitgo/lightning/lightningUtils");
|
|
36
|
+
const lightningUtils = __importStar(require("../../../../src/bitgo/lightning/lightningUtils"));
|
|
37
|
+
const src_1 = require("../../../../src");
|
|
35
38
|
describe('lightning utils', function () {
|
|
36
39
|
[
|
|
37
40
|
{ name: 'lnbtc', networkName: 'bitcoin' },
|
|
@@ -39,52 +42,64 @@ describe('lightning utils', function () {
|
|
|
39
42
|
].forEach(({ name, networkName }) => {
|
|
40
43
|
describe(`success - coin ${name} and network ${networkName}`, function () {
|
|
41
44
|
it(`isValidLightningNetworkName and getLightningNetwork`, function () {
|
|
42
|
-
(0, assert_1.default)((0,
|
|
43
|
-
const network = (0,
|
|
45
|
+
(0, assert_1.default)((0, lightningUtils_1.isValidLightningNetworkName)(networkName));
|
|
46
|
+
const network = (0, lightningUtils_1.getLightningNetwork)(networkName);
|
|
44
47
|
assert_1.default.strictEqual(network, utxolib.networks[networkName]);
|
|
45
48
|
});
|
|
46
49
|
it(`isValidLightningNetwork`, function () {
|
|
47
|
-
(0, assert_1.default)((0,
|
|
48
|
-
(0, assert_1.default)((0,
|
|
50
|
+
(0, assert_1.default)((0, lightningUtils_1.isValidLightningNetworkName)(networkName));
|
|
51
|
+
(0, assert_1.default)((0, lightningUtils_1.isValidLightningNetwork)(utxolib.networks[networkName]));
|
|
49
52
|
});
|
|
50
|
-
it(`
|
|
51
|
-
assert_1.default.strictEqual((0,
|
|
53
|
+
it(`getStaticsLightningNetwork`, function () {
|
|
54
|
+
assert_1.default.strictEqual((0, lightningUtils_1.getStaticsLightningNetwork)(name).family, 'lnbtc');
|
|
52
55
|
});
|
|
53
56
|
it(`getUtxolibNetwork`, function () {
|
|
54
|
-
assert_1.default.strictEqual((0,
|
|
57
|
+
assert_1.default.strictEqual((0, lightningUtils_1.getUtxolibNetwork)(name), networkName === 'bitcoin' ? utxolib.networks.bitcoin : utxolib.networks.testnet);
|
|
55
58
|
});
|
|
56
59
|
it(`isLightningCoinName`, function () {
|
|
57
|
-
assert_1.default.strictEqual((0,
|
|
58
|
-
assert_1.default.strictEqual((0,
|
|
60
|
+
assert_1.default.strictEqual((0, lightningUtils_1.isLightningCoinName)(name), true);
|
|
61
|
+
assert_1.default.strictEqual((0, lightningUtils_1.isLightningCoinName)('ltc'), false);
|
|
59
62
|
});
|
|
60
63
|
});
|
|
61
64
|
});
|
|
62
65
|
it(`isValidLightningNetworkName should return false for non lightning network name`, function () {
|
|
63
|
-
assert_1.default.strictEqual((0,
|
|
66
|
+
assert_1.default.strictEqual((0, lightningUtils_1.isValidLightningNetworkName)('litecoin'), false);
|
|
64
67
|
});
|
|
65
68
|
it(`isValidLightningNetwork should return false for non lightning network`, function () {
|
|
66
|
-
assert_1.default.strictEqual((0,
|
|
67
|
-
});
|
|
68
|
-
it(`getUtxolibNetworkName should return undefined for non lightning coin`, function () {
|
|
69
|
-
assert_1.default.strictEqual((0, src_1.getUtxolibNetworkName)('ltc'), undefined);
|
|
69
|
+
assert_1.default.strictEqual((0, lightningUtils_1.isValidLightningNetwork)(utxolib.networks['litecoin']), false);
|
|
70
70
|
});
|
|
71
71
|
it(`getUtxolibNetwork should return fail for invalid lightning coin`, function () {
|
|
72
72
|
assert_1.default.throws(() => {
|
|
73
|
-
(0,
|
|
74
|
-
}, /
|
|
73
|
+
(0, lightningUtils_1.getUtxolibNetwork)('ltc');
|
|
74
|
+
}, /ltc is not a lightning coin/);
|
|
75
75
|
});
|
|
76
76
|
it(`createWatchOnly`, function () {
|
|
77
|
-
const watchOnly = (0,
|
|
77
|
+
const watchOnly = (0, lightningUtils_1.createWatchOnly)(createWatchOnlyFixture_1.signerRootKey, utxolib.networks.testnet);
|
|
78
78
|
assert_1.default.deepStrictEqual(watchOnly.accounts, createWatchOnlyFixture_1.accounts);
|
|
79
|
-
assert_1.default.strictEqual(watchOnly.master_key_fingerprint, utxolib.bip32.fromBase58(createWatchOnlyFixture_1.signerRootKey,
|
|
79
|
+
assert_1.default.strictEqual(watchOnly.master_key_fingerprint, utxolib.bip32.fromBase58(createWatchOnlyFixture_1.signerRootKey, utxolib.networks.testnet).fingerprint.toString('hex'));
|
|
80
80
|
});
|
|
81
81
|
it(`addIPCaveatToMacaroon`, function () {
|
|
82
82
|
const macaroon = 'AgEDbG5kAvgBAwoQMgU7rDi802Yqg/tHll24nhIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgZKiUvEzxGd2QKGUS+9R5ZWevG09S06fMJUnt+k1XXXQ=';
|
|
83
83
|
const macaroonObj = (0, macaroon_1.importMacaroon)(macaroon).exportJSON();
|
|
84
84
|
assert_1.default.strictEqual(macaroonObj.c, undefined);
|
|
85
|
-
const macaroonWithCaveat = (0,
|
|
85
|
+
const macaroonWithCaveat = (0, lightningUtils_1.addIPCaveatToMacaroon)(macaroon, '127.0.0.1');
|
|
86
86
|
const macaroonObjWithCaveat = (0, macaroon_1.importMacaroon)(macaroonWithCaveat).exportJSON();
|
|
87
87
|
assert_1.default.strictEqual(macaroonObjWithCaveat.c[0].i, 'ipaddr 127.0.0.1');
|
|
88
88
|
});
|
|
89
|
+
it(`deriveLightningServiceSharedSecret`, function () {
|
|
90
|
+
const userAuthXprv = 'xprv9s21ZrQH143K4NPkV8riiTnFf72MRyQDVHMmmpekGF1w5QkS2MfTei9KXYvrZVMop4zQ4arnzSF7TRp3Cy73AWaDdADiYMCi5qpYW1bUa5m';
|
|
91
|
+
const lightningServicePubKey = '03b6fe266b3f8ae110b877d942765e9cea9e82faf03cdbb6d0effe980b6371b9c2';
|
|
92
|
+
const lightningServicePrvKey = '8b95613f4341e347743bd2625728d87bc6f0a119acb6ae9121afeee2b2a650f7';
|
|
93
|
+
const coin = statics.coins.get('tlnbtc');
|
|
94
|
+
(0, assert_1.default)(coin instanceof statics.LightningCoin);
|
|
95
|
+
const getStaticsLightningNetworkStub = sinon.stub(lightningUtils, 'getStaticsLightningNetwork').returns({
|
|
96
|
+
...coin.network,
|
|
97
|
+
lightningServicePubKey,
|
|
98
|
+
});
|
|
99
|
+
const secret = (0, lightningUtils_1.deriveLightningServiceSharedSecret)('tlnbtc', userAuthXprv);
|
|
100
|
+
getStaticsLightningNetworkStub.restore();
|
|
101
|
+
const expectedSecret = (0, src_1.getSharedSecret)(Buffer.from(lightningServicePrvKey, 'hex'), utxolib.bip32.fromBase58(userAuthXprv).neutered());
|
|
102
|
+
assert_1.default.deepStrictEqual(secret, expectedSecret);
|
|
103
|
+
});
|
|
89
104
|
});
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIseURBQTJDO0FBQzNDLHVDQUEwQztBQUUxQyx5Q0FTeUI7QUFDekIscUVBQW1FO0FBQ25FLDhDQUEyQztBQUUzQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUI7UUFDRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtRQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUMzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixXQUFXLEVBQUUsRUFBRTtZQUM1RCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELElBQUEsZ0JBQU0sRUFBQyxJQUFBLGlDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUEseUJBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7Z0JBQzVCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLGlDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUEsZ0JBQU0sRUFBQyxJQUFBLDZCQUF1QixFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFD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a0IsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlFLGdCQUFNLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgaW1wb3J0TWFjYXJvb24gfSBmcm9tICdtYWNhcm9vbic7XG5cbmltcG9ydCB7XG4gIGFkZElQQ2F2ZWF0VG9NYWNhcm9vbixcbiAgY3JlYXRlV2F0Y2hPbmx5LFxuICBnZXRMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRVdHhvbGliTmV0d29yayxcbiAgZ2V0VXR4b2xpYk5ldHdvcmtOYW1lLFxuICBpc0xpZ2h0bmluZ0NvaW5OYW1lLFxuICBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayxcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgYWNjb3VudHMsIHNpZ25lclJvb3RLZXkgfSBmcm9tICcuL2NyZWF0ZVdhdGNoT25seUZpeHR1cmUnO1xuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5kZXNjcmliZSgnbGlnaHRuaW5nIHV0aWxzJywgZnVuY3Rpb24gKCkge1xuICBbXG4gICAgeyBuYW1lOiAnbG5idGMnLCBuZXR3b3JrTmFtZTogJ2JpdGNvaW4nIH0sXG4gICAgeyBuYW1lOiAndGxuYnRjJywgbmV0d29ya05hbWU6ICd0ZXN0bmV0JyB9LFxuICBdLmZvckVhY2goKHsgbmFtZSwgbmV0d29ya05hbWUgfSkgPT4ge1xuICAgIGRlc2NyaWJlKGBzdWNjZXNzIC0gY29pbiAke25hbWV9IGFuZCBuZXR3b3JrICR7bmV0d29ya05hbWV9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBhbmQgZ2V0TGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBjb25zdCBuZXR3b3JrID0gZ2V0TGlnaHRuaW5nTmV0d29yayhuZXR3b3JrTmFtZSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChuZXR3b3JrLCB1dHhvbGliLm5ldHdvcmtzW25ldHdvcmtOYW1lXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lKSk7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayh1dHhvbGliLm5ldHdvcmtzW25ldHdvcmtOYW1lXSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBnZXRVdHhvbGliTmV0d29ya05hbWVgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRVdHhvbGliTmV0d29ya05hbWUobmFtZSksIG5ldHdvcmtOYW1lKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0VXR4b2xpYk5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBnZXRVdHhvbGliTmV0d29yayhuYW1lKSxcbiAgICAgICAgICBuZXR3b3JrTmFtZSA9PT0gJ2JpdGNvaW4nID8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luIDogdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGlzTGlnaHRuaW5nQ29pbk5hbWVgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0xpZ2h0bmluZ0NvaW5OYW1lKG5hbWUpLCB0cnVlKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUoJ2x0YycpLCBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmsgbmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKCdsaXRlY29pbicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbJ2xpdGVjb2luJ10pLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBnZXRVdHhvbGliTmV0d29ya05hbWUgc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIG5vbiBsaWdodG5pbmcgY29pbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0VXR4b2xpYk5ldHdvcmtOYW1lKCdsdGMnKSwgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoYGdldFV0eG9saWJOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFpbCBmb3IgaW52YWxpZCBsaWdodG5pbmcgY29pbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGdldFV0eG9saWJOZXR3b3JrKCdsdGMnKTtcbiAgICB9LCAvaW52YWxpZCBsaWdodG5pbmcgbmV0d29yay8pO1xuICB9KTtcblxuICBpdChgY3JlYXRlV2F0Y2hPbmx5YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhdGNoT25seSA9IGNyZWF0ZVdhdGNoT25seShzaWduZXJSb290S2V5LCBuZXR3b3Jrcy50ZXN0bmV0KTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHdhdGNoT25seS5hY2NvdW50cywgYWNjb3VudHMpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHdhdGNoT25seS5tYXN0ZXJfa2V5X2ZpbmdlcnByaW50LFxuICAgICAgdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHNpZ25lclJvb3RLZXksIG5ldHdvcmtzLnRlc3RuZXQpLmZpbmdlcnByaW50LnRvU3RyaW5nKCdoZXgnKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KGBhZGRJUENhdmVhdFRvTWFjYXJvb25gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWFjYXJvb24gPVxuICAgICAgJ0FnRURiRzVrQXZnQkF3b1FNZ1U3ckRpODAyWXFnL3RIbGwyNG5oSUJNQm9XQ2dkaFpHUnlaWE56RWdSeVpXRmtFZ1YzY21sMFpSb1RDZ1JwYm1adkVnUnlaV0ZrRWdWM2NtbDBaUm9YQ2docGJuWnZhV05sY3hJRWNtVmhaQklGZDNKcGRHVWFJUW9JYldGallYSnZiMjRTQ0dkbGJtVnlZWFJsRWdSeVpXRmtFZ1YzY21sMFpSb1dDZ2R0WlhOellXZGxFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHZabVpqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRmdvSGIyNWphR0ZwYmhJRWNtVmhaQklGZDNKcGRHVWFGQW9GY0dWbGNuTVNCSEpsWVdRU0JYZHlhWFJsR2hnS0JuTnBaMjVsY2hJSVoyVnVaWEpoZEdVU0JISmxZV1FBQUFZZ1pLaVV2RXp4R2QyUUtHVVMrOVI1WldldkcwOVMwNmZNSlVudCtrMVhYWFE9JztcbiAgICBjb25zdCBtYWNhcm9vbk9iaiA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uKS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqLmMsIHVuZGVmaW5lZCk7XG4gICAgY29uc3QgbWFjYXJvb25XaXRoQ2F2ZWF0ID0gYWRkSVBDYXZlYXRUb01hY2Fyb29uKG1hY2Fyb29uLCAnMTI3LjAuMC4xJyk7XG4gICAgY29uc3QgbWFjYXJvb25PYmpXaXRoQ2F2ZWF0ID0gaW1wb3J0TWFjYXJvb24obWFjYXJvb25XaXRoQ2F2ZWF0KS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqV2l0aENhdmVhdC5jWzBdLmksICdpcGFkZHIgMTI3LjAuMC4xJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLHVDQUEwQztBQUMxQyx3REFBMEM7QUFDMUMseURBQTJDO0FBRTNDLHFFQUFtRTtBQUNuRSxxRkFVMEQ7QUFFMUQsK0ZBQWlGO0FBQ2pGLHlDQUFrRDtBQUVsRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUI7UUFDRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtRQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUMzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixXQUFXLEVBQUUsRUFBRTtZQUM1RCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUEsb0NBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7Z0JBQzVCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUEsZ0JBQU0sRUFBQyxJQUFBLHdD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cUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1FBQ3ZDLE1BQU0sWUFBWSxHQUNoQixpSEFBaUgsQ0FBQztRQUNwSCxNQUFNLHNCQUFzQixHQUFHLG9FQUFvRSxDQUFDO1FBQ3BHLE1BQU0sc0JBQXNCLEdBQUcsa0VBQWtFLENBQUM7UUFFbEcsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBQSxnQkFBTSxFQUFDLElBQUksWUFBWSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUMsTUFBTSw4QkFBOEIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN0RyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2Ysc0JBQXNCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUEsbURBQWtDLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUEscUJBQWUsRUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsRUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ2xELENBQUM7UUFFRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGltcG9ydE1hY2Fyb29uIH0gZnJvbSAnbWFjYXJvb24nO1xuaW1wb3J0ICogYXMgc3RhdGljcyBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IGFjY291bnRzLCBzaWduZXJSb290S2V5IH0gZnJvbSAnLi9jcmVhdGVXYXRjaE9ubHlGaXh0dXJlJztcbmltcG9ydCB7XG4gIGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSxcbiAgZ2V0TGlnaHRuaW5nTmV0d29yayxcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmssXG4gIGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRVdHhvbGliTmV0d29yayxcbiAgaXNMaWdodG5pbmdDb2luTmFtZSxcbiAgY3JlYXRlV2F0Y2hPbmx5LFxuICBhZGRJUENhdmVhdFRvTWFjYXJvb24sXG4gIGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXQsXG59IGZyb20gJy4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmdVdGlscyc7XG5cbmltcG9ydCAqIGFzIGxpZ2h0bmluZ1V0aWxzIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvbGlnaHRuaW5nVXRpbHMnO1xuaW1wb3J0IHsgZ2V0U2hhcmVkU2VjcmV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ2xpZ2h0bmluZyB1dGlscycsIGZ1bmN0aW9uICgpIHtcbiAgW1xuICAgIHsgbmFtZTogJ2xuYnRjJywgbmV0d29ya05hbWU6ICdiaXRjb2luJyB9LFxuICAgIHsgbmFtZTogJ3RsbmJ0YycsIG5ldHdvcmtOYW1lOiAndGVzdG5ldCcgfSxcbiAgXS5mb3JFYWNoKCh7IG5hbWUsIG5ldHdvcmtOYW1lIH0pID0+IHtcbiAgICBkZXNjcmliZShgc3VjY2VzcyAtIGNvaW4gJHtuYW1lfSBhbmQgbmV0d29yayAke25ldHdvcmtOYW1lfWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUgYW5kIGdldExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgY29uc3QgbmV0d29yayA9IGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobmV0d29yaywgdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yayhuYW1lKS5mYW1pbHksICdsbmJ0YycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBnZXRVdHhvbGliTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFV0eG9saWJOZXR3b3JrKG5hbWUpLFxuICAgICAgICAgIG5ldHdvcmtOYW1lID09PSAnYml0Y29pbicgPyB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gOiB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgaXNMaWdodG5pbmdDb2luTmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUobmFtZSksIHRydWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNMaWdodG5pbmdDb2luTmFtZSgnbHRjJyksIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29yayBuYW1lYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUoJ2xpdGVjb2luJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1snbGl0ZWNvaW4nXSksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGdldFV0eG9saWJOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFpbCBmb3IgaW52YWxpZCBsaWdodG5pbmcgY29pbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGdldFV0eG9saWJOZXR3b3JrKCdsdGMnKTtcbiAgICB9LCAvbHRjIGlzIG5vdCBhIGxpZ2h0bmluZyBjb2luLyk7XG4gIH0pO1xuXG4gIGl0KGBjcmVhdGVXYXRjaE9ubHlgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2F0Y2hPbmx5ID0gY3JlYXRlV2F0Y2hPbmx5KHNpZ25lclJvb3RLZXksIHV0eG9saWIubmV0d29ya3MudGVzdG5ldCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXRjaE9ubHkuYWNjb3VudHMsIGFjY291bnRzKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB3YXRjaE9ubHkubWFzdGVyX2tleV9maW5nZXJwcmludCxcbiAgICAgIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQpLmZpbmdlcnByaW50LnRvU3RyaW5nKCdoZXgnKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KGBhZGRJUENhdmVhdFRvTWFjYXJvb25gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWFjYXJvb24gPVxuICAgICAgJ0FnRURiRzVrQXZnQkF3b1FNZ1U3ckRpODAyWXFnL3RIbGwyNG5oSUJNQm9XQ2dkaFpHUnlaWE56RWdSeVpXRmtFZ1YzY21sMFpSb1RDZ1JwYm1adkVnUnlaV0ZrRWdWM2NtbDBaUm9YQ2docGJuWnZhV05sY3hJRWNtVmhaQklGZDNKcGRHVWFJUW9JYldGallYSnZiMjRTQ0dkbGJtVnlZWFJsRWdSeVpXRmtFZ1YzY21sMFpSb1dDZ2R0WlhOellXZGxFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHZabVpqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRmdvSGIyNWphR0ZwYmhJRWNtVmhaQklGZDNKcGRHVWFGQW9GY0dWbGNuTVNCSEpsWVdRU0JYZHlhWFJsR2hnS0JuTnBaMjVsY2hJSVoyVnVaWEpoZEdVU0JISmxZV1FBQUFZZ1pLaVV2RXp4R2QyUUtHVVMrOVI1WldldkcwOVMwNmZNSlVudCtrMVhYWFE9JztcbiAgICBjb25zdCBtYWNhcm9vbk9iaiA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uKS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqLmMsIHVuZGVmaW5lZCk7XG4gICAgY29uc3QgbWFjYXJvb25XaXRoQ2F2ZWF0ID0gYWRkSVBDYXZlYXRUb01hY2Fyb29uKG1hY2Fyb29uLCAnMTI3LjAuMC4xJyk7XG4gICAgY29uc3QgbWFjYXJvb25PYmpXaXRoQ2F2ZWF0ID0gaW1wb3J0TWFjYXJvb24obWFjYXJvb25XaXRoQ2F2ZWF0KS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqV2l0aENhdmVhdC5jWzBdLmksICdpcGFkZHIgMTI3LjAuMC4xJyk7XG4gIH0pO1xuXG4gIGl0KGBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZXJBdXRoWHBydiA9XG4gICAgICAneHBydjlzMjFaclFIMTQzSzROUGtWOHJpaVRuRmY3Mk1SeVFEVkhNbW1wZWtHRjF3NVFrUzJNZlRlaTlLWFl2clpWTW9wNHpRNGFybnpTRjdUUnAzQ3k3M0FXYURkQURpWU1DaTVxcFlXMWJVYTVtJztcbiAgICBjb25zdCBsaWdodG5pbmdTZXJ2aWNlUHViS2V5ID0gJzAzYjZmZTI2NmIzZjhhZTExMGI4NzdkOTQyNzY1ZTljZWE5ZTgyZmFmMDNjZGJiNmQwZWZmZTk4MGI2MzcxYjljMic7XG4gICAgY29uc3QgbGlnaHRuaW5nU2VydmljZVBydktleSA9ICc4Yjk1NjEzZjQzNDFlMzQ3NzQzYmQyNjI1NzI4ZDg3YmM2ZjBhMTE5YWNiNmFlOTEyMWFmZWVlMmIyYTY1MGY3JztcblxuICAgIGNvbnN0IGNvaW4gPSBzdGF0aWNzLmNvaW5zLmdldCgndGxuYnRjJyk7XG4gICAgYXNzZXJ0KGNvaW4gaW5zdGFuY2VvZiBzdGF0aWNzLkxpZ2h0bmluZ0NvaW4pO1xuXG4gICAgY29uc3QgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmtTdHViID0gc2lub24uc3R1YihsaWdodG5pbmdVdGlscywgJ2dldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrJykucmV0dXJucyh7XG4gICAgICAuLi5jb2luLm5ldHdvcmssXG4gICAgICBsaWdodG5pbmdTZXJ2aWNlUHViS2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCgndGxuYnRjJywgdXNlckF1dGhYcHJ2KTtcbiAgICBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29ya1N0dWIucmVzdG9yZSgpO1xuXG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQoXG4gICAgICBCdWZmZXIuZnJvbShsaWdodG5pbmdTZXJ2aWNlUHJ2S2V5LCAnaGV4JyksXG4gICAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlckF1dGhYcHJ2KS5uZXV0ZXJlZCgpXG4gICAgKTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2VjcmV0LCBleHBlY3RlZFNlY3JldCk7XG4gIH0pO1xufSk7XG4iXX0=
|