@bitgo/sdk-core 38.21.0 → 38.23.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/dist/src/bitgo/errors.d.ts +2 -1
- package/dist/src/bitgo/errors.d.ts.map +1 -1
- package/dist/src/bitgo/errors.js +3 -2
- package/dist/src/bitgo/safe/index.d.ts +1 -0
- package/dist/src/bitgo/safe/index.d.ts.map +1 -1
- package/dist/src/bitgo/safe/index.js +2 -1
- package/dist/src/bitgo/safe/recovery.d.ts +92 -0
- package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
- package/dist/src/bitgo/safe/recovery.js +148 -0
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +33 -4
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +71 -4
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +2 -1
- package/dist/src/bitgo/utils/siws.d.ts +5 -2
- package/dist/src/bitgo/utils/siws.d.ts.map +1 -1
- package/dist/src/bitgo/utils/siws.js +8 -18
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +7 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +13 -2
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +8 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +7 -3
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +9 -18
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +3 -2
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -1
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +1 -14
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +1 -62
- package/dist/src/bitgo/wallet/iWallet.d.ts +16 -2
- 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/wallet.d.ts +21 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +52 -38
- package/dist/test/unit/bitgo/recovery/initiate.js +1 -30
- package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/recovery.js +313 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +69 -1
- package/dist/test/unit/bitgo/utils/siws.js +57 -7
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +1 -21
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -169,6 +169,74 @@ describe('RedPallas MPS DSG helper functions', function () {
|
|
|
169
169
|
};
|
|
170
170
|
await assert.rejects((0, redpallasMPCv2_1.verifyPeerMessageRoundThree)(round3Output, bitgoGpgPubKey));
|
|
171
171
|
});
|
|
172
|
+
// ── Rerand (must run before every DSG, same 2 parties) ──────────────────────
|
|
173
|
+
it('getRerandShareRoundOne should build a valid rerand round-1 share for the user', async function () {
|
|
174
|
+
const share = await (0, redpallasMPCv2_1.getRerandShareRoundOne)(userPayload(1), userGpgPrivKey);
|
|
175
|
+
assert.strictEqual(share.from, src_1.SignatureShareType.USER);
|
|
176
|
+
assert.strictEqual(share.to, src_1.SignatureShareType.BITGO);
|
|
177
|
+
const parsed = (0, codecs_1.decodeWithCodec)(public_types_1.RedpallasMPCv2RerandShareRound1Input, JSON.parse(share.share), 'RedpallasMPCv2RerandShareRound1Input');
|
|
178
|
+
assert.strictEqual(parsed.type, 'round1Input');
|
|
179
|
+
assert.ok(parsed.data.msg1.message, 'msg1.message should be set');
|
|
180
|
+
assert.ok(parsed.data.msg1.signature, 'msg1.signature should be set');
|
|
181
|
+
});
|
|
182
|
+
it('getRerandShareRoundOne should build a valid rerand round-1 share for the backup', async function () {
|
|
183
|
+
const share = await (0, redpallasMPCv2_1.getRerandShareRoundOne)(backupPayload(1), backupGpgPrivKey, typesMPCv2_1.MPCv2PartiesEnum.BACKUP);
|
|
184
|
+
assert.strictEqual(share.from, src_1.SignatureShareType.BACKUP);
|
|
185
|
+
assert.strictEqual(share.to, src_1.SignatureShareType.BITGO);
|
|
186
|
+
});
|
|
187
|
+
it('verifyPeerRerandMessageRoundOne should verify a valid BitGo rerand round-1 message', async function () {
|
|
188
|
+
const bitgoSignedMsg1 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(bitgoPayload(1).payload), bitgoGpgPrivKey);
|
|
189
|
+
const round1Output = {
|
|
190
|
+
type: 'round1Output',
|
|
191
|
+
data: { msg1: bitgoSignedMsg1 },
|
|
192
|
+
};
|
|
193
|
+
const result = await (0, redpallasMPCv2_1.verifyPeerRerandMessageRoundOne)(round1Output, bitgoGpgPubKey);
|
|
194
|
+
assert.strictEqual(result.from, typesMPCv2_1.MPCv2PartiesEnum.BITGO);
|
|
195
|
+
assert.deepStrictEqual(Buffer.from(result.payload), Buffer.from(bitgoPayload(1).payload));
|
|
196
|
+
});
|
|
197
|
+
it('verifyPeerRerandMessageRoundOne should throw on a tampered rerand round-1 message', async function () {
|
|
198
|
+
const round1Output = {
|
|
199
|
+
type: 'round1Output',
|
|
200
|
+
data: {
|
|
201
|
+
msg1: {
|
|
202
|
+
message: Buffer.from('tampered').toString('base64'),
|
|
203
|
+
signature: '-----BEGIN PGP SIGNATURE-----\n\nINVALID\n-----END PGP SIGNATURE-----\n',
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
await assert.rejects((0, redpallasMPCv2_1.verifyPeerRerandMessageRoundOne)(round1Output, bitgoGpgPubKey));
|
|
208
|
+
});
|
|
209
|
+
it('getRerandShareRoundTwo should build a valid rerand round-2 share for the user', async function () {
|
|
210
|
+
const share = await (0, redpallasMPCv2_1.getRerandShareRoundTwo)(userPayload(2), userGpgPrivKey);
|
|
211
|
+
assert.strictEqual(share.from, src_1.SignatureShareType.USER);
|
|
212
|
+
assert.strictEqual(share.to, src_1.SignatureShareType.BITGO);
|
|
213
|
+
const parsed = (0, codecs_1.decodeWithCodec)(public_types_1.RedpallasMPCv2RerandShareRound2Input, JSON.parse(share.share), 'RedpallasMPCv2RerandShareRound2Input');
|
|
214
|
+
assert.strictEqual(parsed.type, 'round2Input');
|
|
215
|
+
assert.ok(parsed.data.msg2.message, 'msg2.message should be set');
|
|
216
|
+
assert.ok(parsed.data.msg2.signature, 'msg2.signature should be set');
|
|
217
|
+
});
|
|
218
|
+
it('verifyPeerRerandMessageRoundTwo should verify a valid BitGo rerand round-2 message', async function () {
|
|
219
|
+
const bitgoSignedMsg2 = await sdk_lib_mpc_1.RedPallasMPSComms.detachSignMpsMessage(Buffer.from(bitgoPayload(2).payload), bitgoGpgPrivKey);
|
|
220
|
+
const round2Output = {
|
|
221
|
+
type: 'round2Output',
|
|
222
|
+
data: { msg2: bitgoSignedMsg2 },
|
|
223
|
+
};
|
|
224
|
+
const result = await (0, redpallasMPCv2_1.verifyPeerRerandMessageRoundTwo)(round2Output, bitgoGpgPubKey);
|
|
225
|
+
assert.strictEqual(result.from, typesMPCv2_1.MPCv2PartiesEnum.BITGO);
|
|
226
|
+
assert.deepStrictEqual(Buffer.from(result.payload), Buffer.from(bitgoPayload(2).payload));
|
|
227
|
+
});
|
|
228
|
+
it('verifyPeerRerandMessageRoundTwo should throw on a tampered rerand round-2 message', async function () {
|
|
229
|
+
const round2Output = {
|
|
230
|
+
type: 'round2Output',
|
|
231
|
+
data: {
|
|
232
|
+
msg2: {
|
|
233
|
+
message: Buffer.from('tampered').toString('base64'),
|
|
234
|
+
signature: '-----BEGIN PGP SIGNATURE-----\n\nINVALID\n-----END PGP SIGNATURE-----\n',
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
await assert.rejects((0, redpallasMPCv2_1.verifyPeerRerandMessageRoundTwo)(round2Output, bitgoGpgPubKey));
|
|
239
|
+
});
|
|
172
240
|
// ── Envelope round-trip via the independent RedPallas MPS comms layer ───────
|
|
173
241
|
it('a share built by getSignatureShareRoundOne verifies against RedPallasMPSComms directly', async function () {
|
|
174
242
|
const share = await (0, redpallasMPCv2_1.getSignatureShareRoundOne)(userPayload(1), userGpgPrivKey);
|
|
@@ -178,4 +246,4 @@ describe('RedPallas MPS DSG helper functions', function () {
|
|
|
178
246
|
assert.deepStrictEqual(rawBytes, Buffer.from(userPayload(1).payload));
|
|
179
247
|
});
|
|
180
248
|
});
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0Isb0RBQTBFO0FBQzFFLHNEQU82QjtBQUM3Qiw0Q0FBOEU7QUFDOUUsMEZBTytEO0FBQy9ELGtFQUF3RTtBQUN4RSw4RUFBaUY7QUFDakYsb0ZBQXVGO0FBRXZGLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxJQUFJLGNBQThCLENBQUM7SUFDbkMsSUFBSSxnQkFBZ0MsQ0FBQztJQUNyQyxJQUFJLGVBQStCLENBQUM7SUFDcEMsSUFBSSxjQUF1QixDQUFDO0lBRTVCLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUF5QyxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLEVBQUUsNkJBQWdCLENBQUMsSUFBSTtRQUMzQixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFDLENBQUM7S0FDcEUsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQXlDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksRUFBRSw2QkFBZ0IsQ0FBQyxNQUFNO1FBQzdCLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDO0tBQ3RFLENBQUMsQ0FBQztJQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUF5QyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLEVBQUUsNkJBQWdCLENBQUMsS0FBSztRQUM1QixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFB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QUFDO1FBRUYsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUEsNENBQTJCLEVBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFFSCwrRUFBK0U7SUFFL0UsRUFBRSxDQUFDLHdGQUF3RixFQUFFLEtBQUs7UUFDaEcsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLDBDQUF5QixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFBLHdCQUFlLEVBQzVCLHNEQUF1QyxFQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDdkIseUNBQXlDLENBQzFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsTUFBTSwrQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUzRixNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IFJlZFBhbGxhc01QU0NvbW1zLCBSZWRQYWxsYXNNUFNUeXBlcyB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5pbXBvcnQge1xuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM0lucHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzT3V0cHV0LFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSxcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFR3byxcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFRocmVlLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90c3MvcmVkcGFsbGFzL3JlZHBhbGxhc01QQ3YyJztcbmltcG9ydCB7IGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9jb2RlY3MnO1xuaW1wb3J0IHsgZ2VuZXJhdGVHUEdLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lY2RzYS90eXBlc01QQ3YyJztcblxuZGVzY3JpYmUoJ1JlZFBhbGxhcyBNUFMgRFNHIGhlbHBlciBmdW5jdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB1c2VyR3BnUHJpdktleTogcGdwLlByaXZhdGVLZXk7XG4gIGxldCBiYWNrdXBHcGdQcml2S2V5OiBwZ3AuUHJpdmF0ZUtleTtcbiAgbGV0IGJpdGdvR3BnUHJpdktleTogcGdwLlByaXZhdGVLZXk7XG4gIGxldCBiaXRnb0dwZ1B1YktleTogcGdwLktleTtcblxuICBjb25zdCB1c2VyUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShgdXNlci1yb3VuZC0ke3JvdW5kfS1wYXlsb2FkYCkpLFxuICB9KTtcbiAgY29uc3QgYmFja3VwUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGBiYWNrdXAtcm91bmQtJHtyb3VuZH0tcGF5bG9hZGApKSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oYGJpdGdvLXJvdW5kLSR7cm91bmR9LXBheWxvYWRgKSksXG4gIH0pO1xuXG4gIGJlZm9yZSgnZ2VuZXJhdGUgR1BHIGtleSBwYWlycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB1c2VyR3BnS2V5UGFpciA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignZWQyNTUxOScpO1xuICAgIGNvbnN0IGJhY2t1cEdwZ0tleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCBiaXRnb0dwZ0tleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcblxuICAgIHVzZXJHcGdQcml2S2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlckdwZ0tleVBhaXIucHJpdmF0ZUtleSB9KTtcbiAgICBiYWNrdXBHcGdQcml2S2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogYmFja3VwR3BnS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGJpdGdvR3BnUHJpdktleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IGJpdGdvR3BnS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGJpdGdvR3BnUHViS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb0dwZ0tleVBhaXIucHVibGljS2V5IH0pO1xuICB9KTtcblxuICAvLyDilIDilIAgUm91bmQgMSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBpdCgnZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSBzaG91bGQgYnVpbGQgYSB2YWxpZCByb3VuZC0xIHNoYXJlIGZvciB0aGUgdXNlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSBhd2FpdCBnZXRTaWduYXR1cmVTaGFyZVJvdW5kT25lKHVzZXJQYXlsb2FkKDEpLCB1c2VyR3BnUHJpdktleSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUuZnJvbSwgU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS50bywgU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPKTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCxcbiAgICAgIEpTT04ucGFyc2Uoc2hhcmUuc2hhcmUpLFxuICAgICAgJ1JlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQudHlwZSwgJ3JvdW5kMUlucHV0Jyk7XG4gICAgYXNzZXJ0Lm9rKHBhcnNlZC5kYXRhLm1zZzEubWVzc2FnZSwgJ21zZzEubWVzc2FnZSBzaG91bGQgYmUgc2V0Jyk7XG4gICAgYXNzZXJ0Lm9rKHBhcnNlZC5kYXRhLm1zZzEuc2lnbmF0dXJlLCAnbXNnMS5zaWduYXR1cmUgc2hvdWxkIGJlIHNldCcpO1xuICB9KTtcblxuICBpdCgnZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSBzaG91bGQgYnVpbGQgYSB2YWxpZCByb3VuZC0xIHNoYXJlIGZvciB0aGUgYmFja3VwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFNpZ25hdHVyZVNoYXJlUm91bmRPbmUoXG4gICAgICBiYWNrdXBQYXlsb2FkKDEpLFxuICAgICAgYmFja3VwR3BnUHJpdktleSxcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUudG8sIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByb3VuZC0xIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z29TaWduZWRNc2cxID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMSkucGF5bG9hZCksXG4gICAgICBiaXRnb0dwZ1ByaXZLZXlcbiAgICApO1xuICAgIGNvbnN0IHJvdW5kMU91dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMU91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDFPdXRwdXQnLFxuICAgICAgZGF0YTogeyBtc2cxOiBiaXRnb1NpZ25lZE1zZzEgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZE9uZShyb3VuZDFPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgxKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lIHNob3VsZCB0aHJvdyBvbiBhIHRhbXBlcmVkIHJvdW5kLTEgbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQxT3V0cHV0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbXNnMToge1xuICAgICAgICAgIG1lc3NhZ2U6IEJ1ZmZlci5mcm9tKCd0YW1wZXJlZCcpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICBzaWduYXR1cmU6ICctLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLVxcblxcbklOVkFMSURcXG4tLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS1cXG4nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModmVyaWZ5UGVlck1lc3NhZ2VSb3VuZE9uZShyb3VuZDFPdXRwdXQsIGJpdGdvR3BnUHViS2V5KSk7XG4gIH0pO1xuXG4gIC8vIOKUgOKUgCBSb3VuZCAyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGl0KCdnZXRTaWduYXR1cmVTaGFyZVJvdW5kVHdvIHNob3VsZCBidWlsZCBhIHZhbGlkIHJvdW5kLTIgc2hhcmUgZm9yIHRoZSB1c2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFNpZ25hdHVyZVNoYXJlUm91bmRUd28odXNlclBheWxvYWQoMiksIHVzZXJHcGdQcml2S2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUik7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNoYXJlLnRvLCBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08pO1xuXG4gICAgY29uc3QgcGFyc2VkID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0LFxuICAgICAgSlNPTi5wYXJzZShzaGFyZS5zaGFyZSksXG4gICAgICAnUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC50eXBlLCAncm91bmQySW5wdXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5tZXNzYWdlLCAnbXNnMi5tZXNzYWdlIHNob3VsZCBiZSBzZXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5zaWduYXR1cmUsICdtc2cyLnNpZ25hdHVyZSBzaG91bGQgYmUgc2V0Jyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByb3VuZC0yIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z29TaWduZWRNc2cyID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMikucGF5bG9hZCksXG4gICAgICBiaXRnb0dwZ1ByaXZLZXlcbiAgICApO1xuICAgIGNvbnN0IHJvdW5kMk91dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDJPdXRwdXQnLFxuICAgICAgZGF0YTogeyBtc2cyOiBiaXRnb1NpZ25lZE1zZzIgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFR3byhyb3VuZDJPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgyKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvIHNob3VsZCB0aHJvdyBvbiBhIHRhbXBlcmVkIHJvdW5kLTIgbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQyT3V0cHV0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbXNnMjoge1xuICAgICAgICAgIG1lc3NhZ2U6IEJ1ZmZlci5mcm9tKCd0YW1wZXJlZCcpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICBzaWduYXR1cmU6ICctLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLVxcblxcbklOVkFMSURcXG4tLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS1cXG4nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFR3byhyb3VuZDJPdXRwdXQsIGJpdGdvR3BnUHViS2V5KSk7XG4gIH0pO1xuXG4gIC8vIOKUgOKUgCBSb3VuZCAzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGl0KCdnZXRTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUgc2hvdWxkIGJ1aWxkIGEgdmFsaWQgcm91bmQtMyBzaGFyZSBmb3IgdGhlIGJhY2t1cCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSBhd2FpdCBnZXRTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUoXG4gICAgICBiYWNrdXBQYXlsb2FkKDMpLFxuICAgICAgYmFja3VwR3BnUHJpdktleSxcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUudG8sIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyk7XG5cbiAgICBjb25zdCBwYXJzZWQgPSBkZWNvZGVXaXRoQ29kZWMoXG4gICAgICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQsXG4gICAgICBKU09OLnBhcnNlKHNoYXJlLnNoYXJlKSxcbiAgICAgICdSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VkLnR5cGUsICdyb3VuZDNJbnB1dCcpO1xuICAgIGFzc2VydC5vayhwYXJzZWQuZGF0YS5tc2czLm1lc3NhZ2UsICdtc2czLm1lc3NhZ2Ugc2hvdWxkIGJlIHNldCcpO1xuICAgIGFzc2VydC5vayhwYXJzZWQuZGF0YS5tc2czLnNpZ25hdHVyZSwgJ21zZzMuc2lnbmF0dXJlIHNob3VsZCBiZSBzZXQnKTtcbiAgfSk7XG5cbiAgaXQoJ3ZlcmlmeVBlZXJNZXNzYWdlUm91bmRUaHJlZSBzaG91bGQgdmVyaWZ5IGEgdmFsaWQgQml0R28gcm91bmQtMyBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKFxuICAgICAgQnVmZmVyLmZyb20oYml0Z29QYXlsb2FkKDMpLnBheWxvYWQpLFxuICAgICAgYml0Z29HcGdQcml2S2V5XG4gICAgKTtcbiAgICBjb25zdCByb3VuZDNPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQzT3V0cHV0JyxcbiAgICAgIGRhdGE6IHsgbXNnMzogYml0Z29TaWduZWRNc2czIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVBlZXJNZXNzYWdlUm91bmRUaHJlZShyb3VuZDNPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgzKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUgc2hvdWxkIHRocm93IG9uIGEgdGFtcGVyZWQgcm91bmQtMyBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvdW5kM091dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM091dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDNPdXRwdXQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtc2czOiB7XG4gICAgICAgICAgbWVzc2FnZTogQnVmZmVyLmZyb20oJ3RhbXBlcmVkJykudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHNpZ25hdHVyZTogJy0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXFxuXFxuSU5WQUxJRFxcbi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLVxcbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUocm91bmQzT3V0cHV0LCBiaXRnb0dwZ1B1YktleSkpO1xuICB9KTtcblxuICAvLyDilIDilIAgRW52ZWxvcGUgcm91bmQtdHJpcCB2aWEgdGhlIGluZGVwZW5kZW50IFJlZFBhbGxhcyBNUFMgY29tbXMgbGF5ZXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgaXQoJ2Egc2hhcmUgYnVpbHQgYnkgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSB2ZXJpZmllcyBhZ2FpbnN0IFJlZFBhbGxhc01QU0NvbW1zIGRpcmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlID0gYXdhaXQgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSh1c2VyUGF5bG9hZCgxKSwgdXNlckdwZ1ByaXZLZXkpO1xuICAgIGNvbnN0IHBhcnNlZCA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCxcbiAgICAgIEpTT04ucGFyc2Uoc2hhcmUuc2hhcmUpLFxuICAgICAgJ1JlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCdcbiAgICApO1xuXG4gICAgY29uc3QgdXNlckdwZ1B1YktleSA9IHVzZXJHcGdQcml2S2V5LnRvUHVibGljKCk7XG4gICAgY29uc3QgcmF3Qnl0ZXMgPSBhd2FpdCBSZWRQYWxsYXNNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKHBhcnNlZC5kYXRhLm1zZzEsIHVzZXJHcGdQdWJLZXkpO1xuXG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdCeXRlcywgQnVmZmVyLmZyb20odXNlclBheWxvYWQoMSkucGF5bG9hZCkpO1xuICB9KTtcbn0pO1xuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0Isb0RBQTBFO0FBQzFFLHNEQVc2QjtBQUM3Qiw0Q0FBOEU7QUFDOUUsMEZBVytEO0FBQy9ELGtFQUF3RTtBQUN4RSw4RUFBaUY7QUFDakYsb0ZBQXVGO0FBRXZGLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxJQUFJLGNBQThCLENBQUM7SUFDbkMsSUFBSSxnQkFBZ0MsQ0FBQztJQUNyQyxJQUFJLGVBQStCLENBQUM7SUFDcEMsSUFBSSxjQUF1QixDQUFDO0lBRTVCLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUF5QyxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLEVBQUUsNkJBQWdCLENBQUMsSUFBSTtRQUMzQixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFDLENBQUM7S0FDcEUsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQXlDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksRUFBRSw2QkFBZ0IsQ0FBQyxNQUFNO1FBQzdCLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDO0tBQ3RFLENBQUMsQ0FBQztJQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUF5QyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLEVBQUUsNkJBQWdCLENBQUMsS0FBSztRQUM1QixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFB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QUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUN2Qix5Q0FBeUMsQ0FDMUMsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLCtCQUFpQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTNGLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgcGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgUmVkUGFsbGFzTVBTQ29tbXMsIFJlZFBhbGxhc01QU1R5cGVzIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7XG4gIFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDFJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMU91dHB1dCxcbiAgUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMklucHV0LFxuICBSZWRwYWxsYXNNUEN2MlJlcmFuZFNoYXJlUm91bmQyT3V0cHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQsXG4gIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJJbnB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCxcbiAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM0lucHV0LFxuICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzT3V0cHV0LFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZ2V0UmVyYW5kU2hhcmVSb3VuZE9uZSxcbiAgZ2V0UmVyYW5kU2hhcmVSb3VuZFR3byxcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSxcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFR3byxcbiAgZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZFRocmVlLFxuICB2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kT25lLFxuICB2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kVHdvLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvLFxuICB2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90c3MvcmVkcGFsbGFzL3JlZHBhbGxhc01QQ3YyJztcbmltcG9ydCB7IGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9jb2RlY3MnO1xuaW1wb3J0IHsgZ2VuZXJhdGVHUEdLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lY2RzYS90eXBlc01QQ3YyJztcblxuZGVzY3JpYmUoJ1JlZFBhbGxhcyBNUFMgRFNHIGhlbHBlciBmdW5jdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB1c2VyR3BnUHJpdktleTogcGdwLlByaXZhdGVLZXk7XG4gIGxldCBiYWNrdXBHcGdQcml2S2V5OiBwZ3AuUHJpdmF0ZUtleTtcbiAgbGV0IGJpdGdvR3BnUHJpdktleTogcGdwLlByaXZhdGVLZXk7XG4gIGxldCBiaXRnb0dwZ1B1YktleTogcGdwLktleTtcblxuICBjb25zdCB1c2VyUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShgdXNlci1yb3VuZC0ke3JvdW5kfS1wYXlsb2FkYCkpLFxuICB9KTtcbiAgY29uc3QgYmFja3VwUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGBiYWNrdXAtcm91bmQtJHtyb3VuZH0tcGF5bG9hZGApKSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUGF5bG9hZCA9IChyb3VuZDogbnVtYmVyKTogUmVkUGFsbGFzTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9PiAoe1xuICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oYGJpdGdvLXJvdW5kLSR7cm91bmR9LXBheWxvYWRgKSksXG4gIH0pO1xuXG4gIGJlZm9yZSgnZ2VuZXJhdGUgR1BHIGtleSBwYWlycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB1c2VyR3BnS2V5UGFpciA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignZWQyNTUxOScpO1xuICAgIGNvbnN0IGJhY2t1cEdwZ0tleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCBiaXRnb0dwZ0tleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcblxuICAgIHVzZXJHcGdQcml2S2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlckdwZ0tleVBhaXIucHJpdmF0ZUtleSB9KTtcbiAgICBiYWNrdXBHcGdQcml2S2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogYmFja3VwR3BnS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGJpdGdvR3BnUHJpdktleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IGJpdGdvR3BnS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGJpdGdvR3BnUHViS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb0dwZ0tleVBhaXIucHVibGljS2V5IH0pO1xuICB9KTtcblxuICAvLyDilIDilIAgUm91bmQgMSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBpdCgnZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSBzaG91bGQgYnVpbGQgYSB2YWxpZCByb3VuZC0xIHNoYXJlIGZvciB0aGUgdXNlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSBhd2FpdCBnZXRTaWduYXR1cmVTaGFyZVJvdW5kT25lKHVzZXJQYXlsb2FkKDEpLCB1c2VyR3BnUHJpdktleSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUuZnJvbSwgU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS50bywgU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPKTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCxcbiAgICAgIEpTT04ucGFyc2Uoc2hhcmUuc2hhcmUpLFxuICAgICAgJ1JlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFJbnB1dCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQudHlwZSwgJ3JvdW5kMUlucHV0Jyk7XG4gICAgYXNzZXJ0Lm9rKHBhcnNlZC5kYXRhLm1zZzEubWVzc2FnZSwgJ21zZzEubWVzc2FnZSBzaG91bGQgYmUgc2V0Jyk7XG4gICAgYXNzZXJ0Lm9rKHBhcnNlZC5kYXRhLm1zZzEuc2lnbmF0dXJlLCAnbXNnMS5zaWduYXR1cmUgc2hvdWxkIGJlIHNldCcpO1xuICB9KTtcblxuICBpdCgnZ2V0U2lnbmF0dXJlU2hhcmVSb3VuZE9uZSBzaG91bGQgYnVpbGQgYSB2YWxpZCByb3VuZC0xIHNoYXJlIGZvciB0aGUgYmFja3VwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFNpZ25hdHVyZVNoYXJlUm91bmRPbmUoXG4gICAgICBiYWNrdXBQYXlsb2FkKDEpLFxuICAgICAgYmFja3VwR3BnUHJpdktleSxcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUudG8sIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByb3VuZC0xIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z29TaWduZWRNc2cxID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMSkucGF5bG9hZCksXG4gICAgICBiaXRnb0dwZ1ByaXZLZXlcbiAgICApO1xuICAgIGNvbnN0IHJvdW5kMU91dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMU91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDFPdXRwdXQnLFxuICAgICAgZGF0YTogeyBtc2cxOiBiaXRnb1NpZ25lZE1zZzEgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZE9uZShyb3VuZDFPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgxKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kT25lIHNob3VsZCB0aHJvdyBvbiBhIHRhbXBlcmVkIHJvdW5kLTEgbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDFPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQxT3V0cHV0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbXNnMToge1xuICAgICAgICAgIG1lc3NhZ2U6IEJ1ZmZlci5mcm9tKCd0YW1wZXJlZCcpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICBzaWduYXR1cmU6ICctLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLVxcblxcbklOVkFMSURcXG4tLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS1cXG4nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModmVyaWZ5UGVlck1lc3NhZ2VSb3VuZE9uZShyb3VuZDFPdXRwdXQsIGJpdGdvR3BnUHViS2V5KSk7XG4gIH0pO1xuXG4gIC8vIOKUgOKUgCBSb3VuZCAyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGl0KCdnZXRTaWduYXR1cmVTaGFyZVJvdW5kVHdvIHNob3VsZCBidWlsZCBhIHZhbGlkIHJvdW5kLTIgc2hhcmUgZm9yIHRoZSB1c2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFNpZ25hdHVyZVNoYXJlUm91bmRUd28odXNlclBheWxvYWQoMiksIHVzZXJHcGdQcml2S2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUik7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNoYXJlLnRvLCBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08pO1xuXG4gICAgY29uc3QgcGFyc2VkID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0LFxuICAgICAgSlNPTi5wYXJzZShzaGFyZS5zaGFyZSksXG4gICAgICAnUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMklucHV0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC50eXBlLCAncm91bmQySW5wdXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5tZXNzYWdlLCAnbXNnMi5tZXNzYWdlIHNob3VsZCBiZSBzZXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5zaWduYXR1cmUsICdtc2cyLnNpZ25hdHVyZSBzaG91bGQgYmUgc2V0Jyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByb3VuZC0yIG1lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYml0Z29TaWduZWRNc2cyID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMikucGF5bG9hZCksXG4gICAgICBiaXRnb0dwZ1ByaXZLZXlcbiAgICApO1xuICAgIGNvbnN0IHJvdW5kMk91dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kMk91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDJPdXRwdXQnLFxuICAgICAgZGF0YTogeyBtc2cyOiBiaXRnb1NpZ25lZE1zZzIgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFR3byhyb3VuZDJPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgyKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVHdvIHNob3VsZCB0aHJvdyBvbiBhIHRhbXBlcmVkIHJvdW5kLTIgbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDJPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQyT3V0cHV0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbXNnMjoge1xuICAgICAgICAgIG1lc3NhZ2U6IEJ1ZmZlci5mcm9tKCd0YW1wZXJlZCcpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICBzaWduYXR1cmU6ICctLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLVxcblxcbklOVkFMSURcXG4tLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS1cXG4nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModmVyaWZ5UGVlck1lc3NhZ2VSb3VuZFR3byhyb3VuZDJPdXRwdXQsIGJpdGdvR3BnUHViS2V5KSk7XG4gIH0pO1xuXG4gIC8vIOKUgOKUgCBSb3VuZCAzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGl0KCdnZXRTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUgc2hvdWxkIGJ1aWxkIGEgdmFsaWQgcm91bmQtMyBzaGFyZSBmb3IgdGhlIGJhY2t1cCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSBhd2FpdCBnZXRTaWduYXR1cmVTaGFyZVJvdW5kVGhyZWUoXG4gICAgICBiYWNrdXBQYXlsb2FkKDMpLFxuICAgICAgYmFja3VwR3BnUHJpdktleSxcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUudG8sIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyk7XG5cbiAgICBjb25zdCBwYXJzZWQgPSBkZWNvZGVXaXRoQ29kZWMoXG4gICAgICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQsXG4gICAgICBKU09OLnBhcnNlKHNoYXJlLnNoYXJlKSxcbiAgICAgICdSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQzSW5wdXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VkLnR5cGUsICdyb3VuZDNJbnB1dCcpO1xuICAgIGFzc2VydC5vayhwYXJzZWQuZGF0YS5tc2czLm1lc3NhZ2UsICdtc2czLm1lc3NhZ2Ugc2hvdWxkIGJlIHNldCcpO1xuICAgIGFzc2VydC5vayhwYXJzZWQuZGF0YS5tc2czLnNpZ25hdHVyZSwgJ21zZzMuc2lnbmF0dXJlIHNob3VsZCBiZSBzZXQnKTtcbiAgfSk7XG5cbiAgaXQoJ3ZlcmlmeVBlZXJNZXNzYWdlUm91bmRUaHJlZSBzaG91bGQgdmVyaWZ5IGEgdmFsaWQgQml0R28gcm91bmQtMyBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMyA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKFxuICAgICAgQnVmZmVyLmZyb20oYml0Z29QYXlsb2FkKDMpLnBheWxvYWQpLFxuICAgICAgYml0Z29HcGdQcml2S2V5XG4gICAgKTtcbiAgICBjb25zdCByb3VuZDNPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyU2lnbmF0dXJlU2hhcmVSb3VuZDNPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQzT3V0cHV0JyxcbiAgICAgIGRhdGE6IHsgbXNnMzogYml0Z29TaWduZWRNc2czIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVBlZXJNZXNzYWdlUm91bmRUaHJlZShyb3VuZDNPdXRwdXQsIGJpdGdvR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZnJvbSwgTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChCdWZmZXIuZnJvbShyZXN1bHQucGF5bG9hZCksIEJ1ZmZlci5mcm9tKGJpdGdvUGF5bG9hZCgzKS5wYXlsb2FkKSk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUgc2hvdWxkIHRocm93IG9uIGEgdGFtcGVyZWQgcm91bmQtMyBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvdW5kM091dHB1dDogUmVkcGFsbGFzTVBDdjJTaWduYXR1cmVTaGFyZVJvdW5kM091dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDNPdXRwdXQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtc2czOiB7XG4gICAgICAgICAgbWVzc2FnZTogQnVmZmVyLmZyb20oJ3RhbXBlcmVkJykudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHNpZ25hdHVyZTogJy0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXFxuXFxuSU5WQUxJRFxcbi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLVxcbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh2ZXJpZnlQZWVyTWVzc2FnZVJvdW5kVGhyZWUocm91bmQzT3V0cHV0LCBiaXRnb0dwZ1B1YktleSkpO1xuICB9KTtcblxuICAvLyDilIDilIAgUmVyYW5kIChtdXN0IHJ1biBiZWZvcmUgZXZlcnkgRFNHLCBzYW1lIDIgcGFydGllcykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgaXQoJ2dldFJlcmFuZFNoYXJlUm91bmRPbmUgc2hvdWxkIGJ1aWxkIGEgdmFsaWQgcmVyYW5kIHJvdW5kLTEgc2hhcmUgZm9yIHRoZSB1c2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFJlcmFuZFNoYXJlUm91bmRPbmUodXNlclBheWxvYWQoMSksIHVzZXJHcGdQcml2S2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUik7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNoYXJlLnRvLCBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08pO1xuXG4gICAgY29uc3QgcGFyc2VkID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMUlucHV0LFxuICAgICAgSlNPTi5wYXJzZShzaGFyZS5zaGFyZSksXG4gICAgICAnUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMUlucHV0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC50eXBlLCAncm91bmQxSW5wdXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMS5tZXNzYWdlLCAnbXNnMS5tZXNzYWdlIHNob3VsZCBiZSBzZXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMS5zaWduYXR1cmUsICdtc2cxLnNpZ25hdHVyZSBzaG91bGQgYmUgc2V0Jyk7XG4gIH0pO1xuXG4gIGl0KCdnZXRSZXJhbmRTaGFyZVJvdW5kT25lIHNob3VsZCBidWlsZCBhIHZhbGlkIHJlcmFuZCByb3VuZC0xIHNoYXJlIGZvciB0aGUgYmFja3VwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFJlcmFuZFNoYXJlUm91bmRPbmUoXG4gICAgICBiYWNrdXBQYXlsb2FkKDEpLFxuICAgICAgYmFja3VwR3BnUHJpdktleSxcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuQkFDS1VQKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoc2hhcmUudG8sIFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kT25lIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByZXJhbmQgcm91bmQtMSBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMSA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKFxuICAgICAgQnVmZmVyLmZyb20oYml0Z29QYXlsb2FkKDEpLnBheWxvYWQpLFxuICAgICAgYml0Z29HcGdQcml2S2V5XG4gICAgKTtcbiAgICBjb25zdCByb3VuZDFPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDFPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQxT3V0cHV0JyxcbiAgICAgIGRhdGE6IHsgbXNnMTogYml0Z29TaWduZWRNc2cxIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVBlZXJSZXJhbmRNZXNzYWdlUm91bmRPbmUocm91bmQxT3V0cHV0LCBiaXRnb0dwZ1B1YktleSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LmZyb20sIE1QQ3YyUGFydGllc0VudW0uQklUR08pO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoQnVmZmVyLmZyb20ocmVzdWx0LnBheWxvYWQpLCBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMSkucGF5bG9hZCkpO1xuICB9KTtcblxuICBpdCgndmVyaWZ5UGVlclJlcmFuZE1lc3NhZ2VSb3VuZE9uZSBzaG91bGQgdGhyb3cgb24gYSB0YW1wZXJlZCByZXJhbmQgcm91bmQtMSBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvdW5kMU91dHB1dDogUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMU91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDFPdXRwdXQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtc2cxOiB7XG4gICAgICAgICAgbWVzc2FnZTogQnVmZmVyLmZyb20oJ3RhbXBlcmVkJykudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHNpZ25hdHVyZTogJy0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXFxuXFxuSU5WQUxJRFxcbi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLVxcbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kT25lKHJvdW5kMU91dHB1dCwgYml0Z29HcGdQdWJLZXkpKTtcbiAgfSk7XG5cbiAgaXQoJ2dldFJlcmFuZFNoYXJlUm91bmRUd28gc2hvdWxkIGJ1aWxkIGEgdmFsaWQgcmVyYW5kIHJvdW5kLTIgc2hhcmUgZm9yIHRoZSB1c2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IGF3YWl0IGdldFJlcmFuZFNoYXJlUm91bmRUd28odXNlclBheWxvYWQoMiksIHVzZXJHcGdQcml2S2V5KTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaGFyZS5mcm9tLCBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUik7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHNoYXJlLnRvLCBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08pO1xuXG4gICAgY29uc3QgcGFyc2VkID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMklucHV0LFxuICAgICAgSlNPTi5wYXJzZShzaGFyZS5zaGFyZSksXG4gICAgICAnUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMklucHV0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZC50eXBlLCAncm91bmQySW5wdXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5tZXNzYWdlLCAnbXNnMi5tZXNzYWdlIHNob3VsZCBiZSBzZXQnKTtcbiAgICBhc3NlcnQub2socGFyc2VkLmRhdGEubXNnMi5zaWduYXR1cmUsICdtc2cyLnNpZ25hdHVyZSBzaG91bGQgYmUgc2V0Jyk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kVHdvIHNob3VsZCB2ZXJpZnkgYSB2YWxpZCBCaXRHbyByZXJhbmQgcm91bmQtMiBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJpdGdvU2lnbmVkTXNnMiA9IGF3YWl0IFJlZFBhbGxhc01QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKFxuICAgICAgQnVmZmVyLmZyb20oYml0Z29QYXlsb2FkKDIpLnBheWxvYWQpLFxuICAgICAgYml0Z29HcGdQcml2S2V5XG4gICAgKTtcbiAgICBjb25zdCByb3VuZDJPdXRwdXQ6IFJlZHBhbGxhc01QQ3YyUmVyYW5kU2hhcmVSb3VuZDJPdXRwdXQgPSB7XG4gICAgICB0eXBlOiAncm91bmQyT3V0cHV0JyxcbiAgICAgIGRhdGE6IHsgbXNnMjogYml0Z29TaWduZWRNc2cyIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVBlZXJSZXJhbmRNZXNzYWdlUm91bmRUd28ocm91bmQyT3V0cHV0LCBiaXRnb0dwZ1B1YktleSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LmZyb20sIE1QQ3YyUGFydGllc0VudW0uQklUR08pO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoQnVmZmVyLmZyb20ocmVzdWx0LnBheWxvYWQpLCBCdWZmZXIuZnJvbShiaXRnb1BheWxvYWQoMikucGF5bG9hZCkpO1xuICB9KTtcblxuICBpdCgndmVyaWZ5UGVlclJlcmFuZE1lc3NhZ2VSb3VuZFR3byBzaG91bGQgdGhyb3cgb24gYSB0YW1wZXJlZCByZXJhbmQgcm91bmQtMiBtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvdW5kMk91dHB1dDogUmVkcGFsbGFzTVBDdjJSZXJhbmRTaGFyZVJvdW5kMk91dHB1dCA9IHtcbiAgICAgIHR5cGU6ICdyb3VuZDJPdXRwdXQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtc2cyOiB7XG4gICAgICAgICAgbWVzc2FnZTogQnVmZmVyLmZyb20oJ3RhbXBlcmVkJykudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgIHNpZ25hdHVyZTogJy0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXFxuXFxuSU5WQUxJRFxcbi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLVxcbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh2ZXJpZnlQZWVyUmVyYW5kTWVzc2FnZVJvdW5kVHdvKHJvdW5kMk91dHB1dCwgYml0Z29HcGdQdWJLZXkpKTtcbiAgfSk7XG5cbiAgLy8g4pSA4pSAIEVudmVsb3BlIHJvdW5kLXRyaXAgdmlhIHRoZSBpbmRlcGVuZGVudCBSZWRQYWxsYXMgTVBTIGNvbW1zIGxheWVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIGl0KCdhIHNoYXJlIGJ1aWx0IGJ5IGdldFNpZ25hdHVyZVNoYXJlUm91bmRPbmUgdmVyaWZpZXMgYWdhaW5zdCBSZWRQYWxsYXNNUFNDb21tcyBkaXJlY3RseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzaGFyZSA9IGF3YWl0IGdldFNpZ25hdHVyZVNoYXJlUm91bmRPbmUodXNlclBheWxvYWQoMSksIHVzZXJHcGdQcml2S2V5KTtcbiAgICBjb25zdCBwYXJzZWQgPSBkZWNvZGVXaXRoQ29kZWMoXG4gICAgICBSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQsXG4gICAgICBKU09OLnBhcnNlKHNoYXJlLnNoYXJlKSxcbiAgICAgICdSZWRwYWxsYXNNUEN2MlNpZ25hdHVyZVNoYXJlUm91bmQxSW5wdXQnXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJHcGdQdWJLZXkgPSB1c2VyR3BnUHJpdktleS50b1B1YmxpYygpO1xuICAgIGNvbnN0IHJhd0J5dGVzID0gYXdhaXQgUmVkUGFsbGFzTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShwYXJzZWQuZGF0YS5tc2cxLCB1c2VyR3BnUHViS2V5KTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3Qnl0ZXMsIEJ1ZmZlci5mcm9tKHVzZXJQYXlsb2FkKDEpLnBheWxvYWQpKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -4,6 +4,7 @@ require("should");
|
|
|
4
4
|
const src_1 = require("../../../../src");
|
|
5
5
|
describe('SIWS message validation', () => {
|
|
6
6
|
const SIWS_ADDRESS = '8knfAmJm9BmaX9mZWjAdHBcYPYp3LmuykRQnGwkWQCyj';
|
|
7
|
+
const siwsHeader = (domain) => `${domain} wants you to sign in with your Solana account:`;
|
|
7
8
|
const buildSiws = (overrides = {}) => {
|
|
8
9
|
const domain = overrides.domain ?? 'hastra.io';
|
|
9
10
|
const lines = [
|
|
@@ -78,6 +79,30 @@ describe('SIWS message validation', () => {
|
|
|
78
79
|
trailingNewlines: true,
|
|
79
80
|
}))).should.not.throw();
|
|
80
81
|
});
|
|
82
|
+
it('accepts the minimal template (header and address only)', () => {
|
|
83
|
+
(() => (0, src_1.validateSiwsMessage)([siwsHeader('example.com'), SIWS_ADDRESS].join('\n'))).should.not.throw();
|
|
84
|
+
(() => (0, src_1.validateSiwsMessage)([siwsHeader('example.com'), SIWS_ADDRESS].join('\n') + '\n')).should.not.throw();
|
|
85
|
+
});
|
|
86
|
+
it('accepts a statement with no fields', () => {
|
|
87
|
+
(() => (0, src_1.validateSiwsMessage)([siwsHeader('example.com'), SIWS_ADDRESS, '', 'I am the wallet owner.'].join('\n'))).should.not.throw();
|
|
88
|
+
});
|
|
89
|
+
it('accepts a statement with a lone Nonce field (partner shape)', () => {
|
|
90
|
+
(() => (0, src_1.validateSiwsMessage)([
|
|
91
|
+
siwsHeader('app.decibel.trade'),
|
|
92
|
+
SIWS_ADDRESS,
|
|
93
|
+
'',
|
|
94
|
+
'Please confirm you explicitly initiated this request from app.decibel.trade.',
|
|
95
|
+
'',
|
|
96
|
+
'Nonce: 0x50ead22afd6ffd976',
|
|
97
|
+
].join('\n'))).should.not.throw();
|
|
98
|
+
});
|
|
99
|
+
it('accepts any subset of advanced fields in canonical order', () => {
|
|
100
|
+
(() => (0, src_1.validateSiwsMessage)(buildSiws({ omit: ['Version:'] }))).should.not.throw();
|
|
101
|
+
(() => (0, src_1.validateSiwsMessage)(buildSiws({ omit: ['Chain ID:'] }))).should.not.throw();
|
|
102
|
+
(() => (0, src_1.validateSiwsMessage)(buildSiws({ omit: ['Nonce:'] }))).should.not.throw();
|
|
103
|
+
(() => (0, src_1.validateSiwsMessage)(buildSiws({ omit: ['Issued At:'] }))).should.not.throw();
|
|
104
|
+
(() => (0, src_1.validateSiwsMessage)(buildSiws({ omit: ['URI:', 'Version:', 'Chain ID:', 'Issued At:'] }))).should.not.throw();
|
|
105
|
+
});
|
|
81
106
|
});
|
|
82
107
|
describe('rejections', () => {
|
|
83
108
|
const rejects = (message) => (() => (0, src_1.validateSiwsMessage)(message)).should.throw(/not a valid SIWS message/);
|
|
@@ -95,12 +120,6 @@ describe('SIWS message validation', () => {
|
|
|
95
120
|
SIWS_ADDRESS +
|
|
96
121
|
'\n\nVersion: 1\nChain ID: mainnet\nNonce: 31a6bab5\nIssued At: 2026-09-21T10:00:00Z');
|
|
97
122
|
});
|
|
98
|
-
it('rejects a missing Version, Chain ID, Nonce or Issued At', () => {
|
|
99
|
-
rejects(buildSiws({ omit: ['Version:'] }));
|
|
100
|
-
rejects(buildSiws({ omit: ['Chain ID:'] }));
|
|
101
|
-
rejects(buildSiws({ omit: ['Nonce:'] }));
|
|
102
|
-
rejects(buildSiws({ omit: ['Issued At:'] }));
|
|
103
|
-
});
|
|
104
123
|
it('rejects invalid field values', () => {
|
|
105
124
|
rejects(buildSiws({ version: '2' }));
|
|
106
125
|
rejects(buildSiws({ chainId: 'polygon' }));
|
|
@@ -126,6 +145,37 @@ describe('SIWS message validation', () => {
|
|
|
126
145
|
it('rejects a stray line after the fields section', () => {
|
|
127
146
|
rejects(buildSiws({ extraLines: ['stray line'] }));
|
|
128
147
|
});
|
|
148
|
+
it('rejects an unknown field label after the fields section starts', () => {
|
|
149
|
+
rejects(buildSiws({ extraLines: ['Unknown Field: value'] }));
|
|
150
|
+
rejects(buildSiws({ extraLines: ['Version2: 1'] }));
|
|
151
|
+
rejects([
|
|
152
|
+
'hastra.io wants you to sign in with your Solana account:',
|
|
153
|
+
SIWS_ADDRESS,
|
|
154
|
+
'',
|
|
155
|
+
'Version: 1',
|
|
156
|
+
'Unknown: x',
|
|
157
|
+
'Chain ID: mainnet',
|
|
158
|
+
].join('\n'));
|
|
159
|
+
});
|
|
160
|
+
it('rejects an unknown field label after the blank line that opens the fields section', () => {
|
|
161
|
+
rejects([
|
|
162
|
+
'hastra.io wants you to sign in with your Solana account:',
|
|
163
|
+
SIWS_ADDRESS,
|
|
164
|
+
'',
|
|
165
|
+
'I am the wallet owner.',
|
|
166
|
+
'',
|
|
167
|
+
'Unknown: x',
|
|
168
|
+
].join('\n'));
|
|
169
|
+
});
|
|
170
|
+
it('rejects a field label that appears twice', () => {
|
|
171
|
+
rejects([
|
|
172
|
+
'hastra.io wants you to sign in with your Solana account:',
|
|
173
|
+
SIWS_ADDRESS,
|
|
174
|
+
'',
|
|
175
|
+
'Nonce: 31a6bab5',
|
|
176
|
+
'Nonce: 31a6bab5',
|
|
177
|
+
].join('\n'));
|
|
178
|
+
});
|
|
129
179
|
it('rejects an invalid address line', () => {
|
|
130
180
|
rejects(buildSiws({ address: 'short' }));
|
|
131
181
|
rejects(buildSiws({ address: '0OIl-invalid-base58-characters-000000000000000000' }));
|
|
@@ -153,4 +203,4 @@ describe('SIWS message validation', () => {
|
|
|
153
203
|
});
|
|
154
204
|
});
|
|
155
205
|
});
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy9zaXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLHlDQUFzRDtBQUV0RCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLDhDQUE4QyxDQUFDO0lBRXBFLE1BQU0sU0FBUyxHQUFHLENBQUMsWUFBcUMsRUFBRSxFQUFVLEVBQUU7UUFDcEUsTUFBTSxNQUFNLEdBQUksU0FBUyxDQUFDLE1BQWlCLElBQUksV0FBVyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxNQUFNLGlEQUFpRDtZQUN6RCxTQUFTLENBQUMsT0FBa0IsSUFBSSxZQUFZO1lBQzdDLEVBQUU7U0FDSCxDQUFDO1FBQ0YsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHO1lBQ2IsZ0JBQWdCLE1BQU0sRUFBRTtZQUN4QixZQUFZLFNBQVMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO1lBQ3RDLGFBQWEsU0FBUyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7WUFDN0MsVUFBVSxTQUFTLENBQUMsS0FBSyxJQUFJLFVBQVUsRUFBRTtZQUN6QyxjQUFjLFNBQVMsQ0FBQyxRQUFRLElBQUksc0JBQXNCLEVBQUU7U0FDN0QsQ0FBQztRQUNGLElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFD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QWtDLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLE9BQU8sR0FBRztnQkFDZCwwREFBMEQ7Z0JBQzFELFlBQVk7Z0JBQ1osRUFBRTtnQkFDRixZQUFZO2dCQUNaLEVBQUU7Z0JBQ0YsbUJBQW1CO2dCQUNuQixpQkFBaUI7Z0JBQ2pCLGlDQUFpQzthQUNsQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNiLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxFQUFFLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO1lBQ3pFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5QkFBbUIsRUFBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN4Riw0QkFBNEIsQ0FDN0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IHZhbGlkYXRlU2l3c01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnU0lXUyBtZXNzYWdlIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IFNJV1NfQUREUkVTUyA9ICc4a25mQW1KbTlCbWFYOW1aV2pBZEhCY1lQWXAzTG11eWtSUW5Hd2tXUUN5aic7XG5cbiAgY29uc3QgYnVpbGRTaXdzID0gKG92ZXJyaWRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZG9tYWluID0gKG92ZXJyaWRlcy5kb21haW4gYXMgc3RyaW5nKSA/PyAnaGFzdHJhLmlvJztcbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgIGAke2RvbWFpbn0gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIFNvbGFuYSBhY2NvdW50OmAsXG4gICAgICAob3ZlcnJpZGVzLmFkZHJlc3MgYXMgc3RyaW5nKSA/PyBTSVdTX0FERFJFU1MsXG4gICAgICAnJyxcbiAgICBdO1xuICAgIGlmIChvdmVycmlkZXMuc3RhdGVtZW50ICE9PSB1bmRlZmluZWQgJiYgb3ZlcnJpZGVzLnN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgbGluZXMucHVzaChvdmVycmlkZXMuc3RhdGVtZW50IGFzIHN0cmluZywgJycpO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBgVVJJOiBodHRwczovLyR7ZG9tYWlufWAsXG4gICAgICBgVmVyc2lvbjogJHtvdmVycmlkZXMudmVyc2lvbiA/PyAnMSd9YCxcbiAgICAgIGBDaGFpbiBJRDogJHtvdmVycmlkZXMuY2hhaW5JZCA/PyAnbWFpbm5ldCd9YCxcbiAgICAgIGBOb25jZTogJHtvdmVycmlkZXMubm9uY2UgPz8gJzMxYTZiYWI1J31gLFxuICAgICAgYElzc3VlZCBBdDogJHtvdmVycmlkZXMuaXNzdWVkQXQgPz8gJzIwMjYtMDktMjFUMTA6MDA6MDBaJ31gLFxuICAgIF07XG4gICAgaWYgKG92ZXJyaWRlcy5leHBpcmF0aW9uVGltZSkge1xuICAgICAgZmllbGRzLnB1c2goYEV4cGlyYXRpb24gVGltZTogJHtvdmVycmlkZXMuZXhwaXJhdGlvblRpbWV9YCk7XG4gICAgfVxuICAgIGlmIChvdmVycmlkZXMubm90QmVmb3JlKSB7XG4gICAgICBmaWVsZHMucHVzaChgTm90IEJlZm9yZTogJHtvdmVycmlkZXMubm90QmVmb3JlfWApO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGVzLnJlcXVlc3RJZCkge1xuICAgICAgZmllbGRzLnB1c2goYFJlcXVlc3QgSUQ6ICR7b3ZlcnJpZGVzLnJlcXVlc3RJZH1gKTtcbiAgICB9XG4gICAgaWYgKG92ZXJyaWRlcy5yZXNvdXJjZXMpIHtcbiAgICAgIGZpZWxkcy5wdXNoKCdSZXNvdXJjZXM6JywgLi4uKG92ZXJyaWRlcy5yZXNvdXJjZXMgYXMgc3RyaW5nW10pLm1hcCgocikgPT4gYC0gJHtyfWApKTtcbiAgICB9XG4gICAgaWYgKG92ZXJyaWRlcy5vbWl0KSB7XG4gICAgICBjb25zdCBvbWl0ID0gb3ZlcnJpZGVzLm9taXQgYXMgc3RyaW5nW107XG4gICAgICBmb3IgKGNvbnN0IG8gb2Ygb21pdCkge1xuICAgICAgICBjb25zdCBpID0gZmllbGRzLmZpbmRJbmRleCgoZikgPT4gZi5zdGFydHNXaXRoKG8pKTtcbiAgICAgICAgaWYgKGkgPj0gMCkge1xuICAgICAgICAgIGZpZWxkcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGluZXMucHVzaCguLi5maWVsZHMsIC4uLigob3ZlcnJpZGVzLmV4dHJhTGluZXMgYXMgc3RyaW5nW10pID8/IFtdKSk7XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpICsgKG92ZXJyaWRlcy50cmFpbGluZ05ld2xpbmVzID8gJ1xcbicgOiAnJyk7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkIG1lc3NhZ2VzJywgKCkgPT4ge1xuICAgIGl0KCdhY2NlcHRzIGEgU0lXUyBtZXNzYWdlIHdpdGggc3RhdGVtZW50IGFuZCByZXNvdXJjZXMnLCAoKSA9PiB7XG4gICAgICAoKCkgPT5cbiAgICAgICAgdmFsaWRhdGVTaXdzTWVzc2FnZShcbiAgICAgICAgICBidWlsZFNpd3MoeyBzdGF0ZW1lbnQ6IGBZb3UgYXJlIHByb3ZpbmcgeW91IG93biAke1NJV1NfQUREUkVTU30uYCwgcmVzb3VyY2VzOiBbJ2h0dHBzOi8vcHJpdnkuaW8nXSB9KVxuICAgICAgICApKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0cyBhIFNJV1MgbWVzc2FnZSB3aXRob3V0IHN0YXRlbWVudCcsICgpID0+IHtcbiAgICAgICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKGJ1aWxkU2l3cyh7IGRvbWFpbjogJ2V4YW1wbGUuY29tJyB9KSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIGEgU0lXUyBtZXNzYWdlIHdpdGggYWxsIG9wdGlvbmFsIGZpZWxkcycsICgpID0+IHtcbiAgICAgICgoKSA9PlxuICAgICAgICB2YWxpZGF0ZVNpd3NNZXNzYWdlKFxuICAgICAgICAgIGJ1aWxkU2l3cyh7XG4gICAgICAgICAgICBkb21haW46ICdleGFtcGxlLmNvbScsXG4gICAgICAgICAgICBzdGF0ZW1lbnQ6ICdJIGFtIHRoZSB3YWxsZXQgb3duZXIuJyxcbiAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lOiAnMjAyNi0wOS0yOFQxMDowMDowMFonLFxuICAgICAgICAgICAgbm90QmVmb3JlOiAnMjAyNi0wOS0yMVQwOTowMDowMFonLFxuICAgICAgICAgICAgcmVxdWVzdElkOiAnMzFhNmJhYjUtMScsXG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnaHR0cHM6Ly9hLmV4YW1wbGUuY29tJywgJ2h0dHBzOi8vYi5leGFtcGxlLmNvbSddLFxuICAgICAgICAgIH0pXG4gICAgICAgICkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIGEgbXVsdGlieXRlIHV0Zi04IHN0YXRlbWVudCwgc29sYW5hOiBjaGFpbiBpZCBhbmQgZnJhY3Rpb25hbCBzZWNvbmRzJywgKCkgPT4ge1xuICAgICAgKCgpID0+XG4gICAgICAgIHZhbGlkYXRlU2l3c01lc3NhZ2UoXG4gICAgICAgICAgYnVpbGRTaXdzKHtcbiAgICAgICAgICAgIGRvbWFpbjogJ2V4YW1wbGUuY29tJyxcbiAgICAgICAgICAgIHN0YXRlbWVudDogJ+OBk+OCk+OBq+OBoeOBr+OAgdCi0LXRgdGC0L7QstC+0LUg0YHQvtC+0LHRidC10L3QuNC1JyxcbiAgICAgICAgICAgIGNoYWluSWQ6ICdzb2xhbmE6bWFpbm5ldCcsXG4gICAgICAgICAgICBpc3N1ZWRBdDogJzIwMjYtMDktMjFUMTA6MDA6MDAuNTAwWicsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgdHJhaWxpbmcgbmV3bGluZXMgYW5kIGEgKzA1OjMwIG9mZnNldCcsICgpID0+IHtcbiAgICAgICgoKSA9PlxuICAgICAgICB2YWxpZGF0ZVNpd3NNZXNzYWdlKFxuICAgICAgICAgIGJ1aWxkU2l3cyh7XG4gICAgICAgICAgICBkb21haW46ICdleGFtcGxlLmNvbScsXG4gICAgICAgICAgICBjaGFpbklkOiAndGVzdG5ldCcsXG4gICAgICAgICAgICBpc3N1ZWRBdDogJzIwMjYtMDktMjFUMTA6MDA6MDArMDU6MzAnLFxuICAgICAgICAgICAgdHJhaWxpbmdOZXdsaW5lczogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWplY3Rpb25zJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlamVjdHMgPSAobWVzc2FnZTogc3RyaW5nKSA9PiAoKCkgPT4gdmFsaWRhdGVTaXdzTWVzc2FnZShtZXNzYWdlKSkuc2hvdWxkLnRocm93KC9ub3QgYSB2YWxpZCBTSVdTIG1lc3NhZ2UvKTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGVtcHR5IG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKCcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIHBsYWluIHRleHQnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKCdIZWxsbyBmcm9tIGRhcHAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIEpTT04nLCAoKSA9PiB7XG4gICAgICByZWplY3RzKCd7XCJhY3Rpb25cIjpcImxvZ2luXCJ9Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHdyb25nIHNrZWxldG9uJywgKCkgPT4ge1xuICAgICAgcmVqZWN0cyhcbiAgICAgICAgJ2V4YW1wbGUuY29tIGxvZ2luOlxcbicgK1xuICAgICAgICAgIFNJV1NfQUREUkVTUyArXG4gICAgICAgICAgJ1xcblxcblZlcnNpb246IDFcXG5DaGFpbiBJRDogbWFpbm5ldFxcbk5vbmNlOiAzMWE2YmFiNVxcbklzc3VlZCBBdDogMjAyNi0wOS0yMVQxMDowMDowMFonXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBtaXNzaW5nIFZlcnNpb24sIENoYWluIElELCBOb25jZSBvciBJc3N1ZWQgQXQnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IG9taXQ6IFsnVmVyc2lvbjonXSB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IG9taXQ6IFsnQ2hhaW4gSUQ6J10gfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBvbWl0OiBbJ05vbmNlOiddIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgb21pdDogWydJc3N1ZWQgQXQ6J10gfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgaW52YWxpZCBmaWVsZCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IHZlcnNpb246ICcyJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGNoYWluSWQ6ICdwb2x5Z29uJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IG5vbmNlOiAnYWJjJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IG5vbmNlOiAnMzFhNiBiYWI1IScgfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBpc3N1ZWRBdDogJzIwMjYtMDktMjEgMTA6MDA6MDBaJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGlzc3VlZEF0OiAnMjAyNi0wOS0yMVQxMDowMDo2MVonIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgaXNzdWVkQXQ6ICcyMDI2LTA5LTIxVDI0OjAwOjAwWicgfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBpc3N1ZWRBdDogJzIwMjYtMDktMjFUMTA6MDA6MDArMjQ6MDAnIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIG91dC1vZi1vcmRlciBmaWVsZHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gW1xuICAgICAgICAnaGFzdHJhLmlvIHdhbnRzIHlvdSB0byBzaWduIGluIHdpdGggeW91ciBTb2xhbmEgYWNjb3VudDonLFxuICAgICAgICBTSVdTX0FERFJFU1MsXG4gICAgICAgICcnLFxuICAgICAgICAnTm9uY2U6IDMxYTZiYWI1JyxcbiAgICAgICAgJ1ZlcnNpb246IDEnLFxuICAgICAgICAnQ2hhaW4gSUQ6IG1haW5uZXQnLFxuICAgICAgICAnSXNzdWVkIEF0OiAyMDI2LTA5LTIxVDEwOjAwOjAwWicsXG4gICAgICBdLmpvaW4oJ1xcbicpO1xuICAgICAgcmVqZWN0cyhtZXNzYWdlKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgc3RyYXkgbGluZSBhZnRlciB0aGUgZmllbGRzIHNlY3Rpb24nLCAoKSA9PiB7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGV4dHJhTGluZXM6IFsnc3RyYXkgbGluZSddIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGludmFsaWQgYWRkcmVzcyBsaW5lJywgKCkgPT4ge1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBhZGRyZXNzOiAnc2hvcnQnIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgYWRkcmVzczogJzBPSWwtaW52YWxpZC1iYXNlNTgtY2hhcmFjdGVycy0wMDAwMDAwMDAwMDAwMDAwMDAnIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgdmFsdWVkIFJlc291cmNlcyBsaW5lJywgKCkgPT4ge1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyByZXNvdXJjZXM6IFtdIH0pLnJlcGxhY2UoJ1Jlc291cmNlczonLCAnUmVzb3VyY2VzOiBodHRwczovL3guZXhhbXBsZS5jb20nKSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIGJsYW5rIGxpbmUgaW5zaWRlIHRoZSBmaWVsZHMgc2VjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICAgICdoYXN0cmEuaW8gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIFNvbGFuYSBhY2NvdW50OicsXG4gICAgICAgIFNJV1NfQUREUkVTUyxcbiAgICAgICAgJycsXG4gICAgICAgICdWZXJzaW9uOiAxJyxcbiAgICAgICAgJycsXG4gICAgICAgICdDaGFpbiBJRDogbWFpbm5ldCcsXG4gICAgICAgICdOb25jZTogMzFhNmJhYjUnLFxuICAgICAgICAnSXNzdWVkIEF0OiAyMDI2LTA5LTIxVDEwOjAwOjAwWicsXG4gICAgICBdLmpvaW4oJ1xcbicpO1xuICAgICAgcmVqZWN0cyhtZXNzYWdlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3V0Zi04IHN0cmljdG5lc3MnLCAoKSA9PiB7XG4gICAgaXQoJ3JlamVjdHMgbG9uZSBzdXJyb2dhdGVzIHRoYXQgQnVmZmVyLmZyb20gd291bGQgbWFuZ2xlIHRvIFUrRkZGRCcsICgpID0+IHtcbiAgICAgICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKGJ1aWxkU2l3cyh7IHN0YXRlbWVudDogJ2JhZCBcXHVEODAwIHN0YXRlbWVudCcgfSkpKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9tZXNzYWdlIGlzIG5vdCB2YWxpZCBVVEYtOC9cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy9zaXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLHlDQUFzRDtBQUV0RCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLDhDQUE4QyxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYyxFQUFVLEVBQUUsQ0FBQyxHQUFHLE1BQU0saURBQWlELENBQUM7SUFFMUcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFxQyxFQUFFLEVBQVUsRUFBRTtRQUNwRSxNQUFNLE1BQU0sR0FBSSxTQUFTLENBQUMsTUFBaUIsSUFBSSxXQUFXLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUc7WUFDWixHQUFHLE1BQU0saURBQWlEO1lBQ3pELFNBQVMsQ0FBQyxPQUFrQixJQUFJLFlBQVk7WUFDN0MsRUFBRTtTQUNILENBQUM7UUFDRixJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdEUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUc7WUFDYixnQkFBZ0IsTUFBTSxFQUFFO1lBQ3hCLFlBQVksU0FBUyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7WUFDdEMsYUFBYSxTQUFTLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtZQUM3QyxVQUFVLFNBQVMsQ0FBQyxLQUFLLElBQUksVUFBVSxFQUFFO1lBQ3pDLGNBQWMsU0FBUyxDQUFDLFFBQVEsSUFBSSxzQkFBc0IsRUFBRTtTQUM3RCxDQUFDO1FBQ0YsSUFBSSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0IsTUFB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IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IHZhbGlkYXRlU2l3c01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnU0lXUyBtZXNzYWdlIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IFNJV1NfQUREUkVTUyA9ICc4a25mQW1KbTlCbWFYOW1aV2pBZEhCY1lQWXAzTG11eWtSUW5Hd2tXUUN5aic7XG4gIGNvbnN0IHNpd3NIZWFkZXIgPSAoZG9tYWluOiBzdHJpbmcpOiBzdHJpbmcgPT4gYCR7ZG9tYWlufSB3YW50cyB5b3UgdG8gc2lnbiBpbiB3aXRoIHlvdXIgU29sYW5hIGFjY291bnQ6YDtcblxuICBjb25zdCBidWlsZFNpd3MgPSAob3ZlcnJpZGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBkb21haW4gPSAob3ZlcnJpZGVzLmRvbWFpbiBhcyBzdHJpbmcpID8/ICdoYXN0cmEuaW8nO1xuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYCR7ZG9tYWlufSB3YW50cyB5b3UgdG8gc2lnbiBpbiB3aXRoIHlvdXIgU29sYW5hIGFjY291bnQ6YCxcbiAgICAgIChvdmVycmlkZXMuYWRkcmVzcyBhcyBzdHJpbmcpID8/IFNJV1NfQUREUkVTUyxcbiAgICAgICcnLFxuICAgIF07XG4gICAgaWYgKG92ZXJyaWRlcy5zdGF0ZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBvdmVycmlkZXMuc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBsaW5lcy5wdXNoKG92ZXJyaWRlcy5zdGF0ZW1lbnQgYXMgc3RyaW5nLCAnJyk7XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIGBVUkk6IGh0dHBzOi8vJHtkb21haW59YCxcbiAgICAgIGBWZXJzaW9uOiAke292ZXJyaWRlcy52ZXJzaW9uID8/ICcxJ31gLFxuICAgICAgYENoYWluIElEOiAke292ZXJyaWRlcy5jaGFpbklkID8/ICdtYWlubmV0J31gLFxuICAgICAgYE5vbmNlOiAke292ZXJyaWRlcy5ub25jZSA/PyAnMzFhNmJhYjUnfWAsXG4gICAgICBgSXNzdWVkIEF0OiAke292ZXJyaWRlcy5pc3N1ZWRBdCA/PyAnMjAyNi0wOS0yMVQxMDowMDowMFonfWAsXG4gICAgXTtcbiAgICBpZiAob3ZlcnJpZGVzLmV4cGlyYXRpb25UaW1lKSB7XG4gICAgICBmaWVsZHMucHVzaChgRXhwaXJhdGlvbiBUaW1lOiAke292ZXJyaWRlcy5leHBpcmF0aW9uVGltZX1gKTtcbiAgICB9XG4gICAgaWYgKG92ZXJyaWRlcy5ub3RCZWZvcmUpIHtcbiAgICAgIGZpZWxkcy5wdXNoKGBOb3QgQmVmb3JlOiAke292ZXJyaWRlcy5ub3RCZWZvcmV9YCk7XG4gICAgfVxuICAgIGlmIChvdmVycmlkZXMucmVxdWVzdElkKSB7XG4gICAgICBmaWVsZHMucHVzaChgUmVxdWVzdCBJRDogJHtvdmVycmlkZXMucmVxdWVzdElkfWApO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGVzLnJlc291cmNlcykge1xuICAgICAgZmllbGRzLnB1c2goJ1Jlc291cmNlczonLCAuLi4ob3ZlcnJpZGVzLnJlc291cmNlcyBhcyBzdHJpbmdbXSkubWFwKChyKSA9PiBgLSAke3J9YCkpO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGVzLm9taXQpIHtcbiAgICAgIGNvbnN0IG9taXQgPSBvdmVycmlkZXMub21pdCBhcyBzdHJpbmdbXTtcbiAgICAgIGZvciAoY29uc3QgbyBvZiBvbWl0KSB7XG4gICAgICAgIGNvbnN0IGkgPSBmaWVsZHMuZmluZEluZGV4KChmKSA9PiBmLnN0YXJ0c1dpdGgobykpO1xuICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgZmllbGRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsaW5lcy5wdXNoKC4uLmZpZWxkcywgLi4uKChvdmVycmlkZXMuZXh0cmFMaW5lcyBhcyBzdHJpbmdbXSkgPz8gW10pKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykgKyAob3ZlcnJpZGVzLnRyYWlsaW5nTmV3bGluZXMgPyAnXFxuJyA6ICcnKTtcbiAgfTtcblxuICBkZXNjcmliZSgndmFsaWQgbWVzc2FnZXMnLCAoKSA9PiB7XG4gICAgaXQoJ2FjY2VwdHMgYSBTSVdTIG1lc3NhZ2Ugd2l0aCBzdGF0ZW1lbnQgYW5kIHJlc291cmNlcycsICgpID0+IHtcbiAgICAgICgoKSA9PlxuICAgICAgICB2YWxpZGF0ZVNpd3NNZXNzYWdlKFxuICAgICAgICAgIGJ1aWxkU2l3cyh7IHN0YXRlbWVudDogYFlvdSBhcmUgcHJvdmluZyB5b3Ugb3duICR7U0lXU19BRERSRVNTfS5gLCByZXNvdXJjZXM6IFsnaHR0cHM6Ly9wcml2eS5pbyddIH0pXG4gICAgICAgICkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIGEgU0lXUyBtZXNzYWdlIHdpdGhvdXQgc3RhdGVtZW50JywgKCkgPT4ge1xuICAgICAgKCgpID0+IHZhbGlkYXRlU2l3c01lc3NhZ2UoYnVpbGRTaXdzKHsgZG9tYWluOiAnZXhhbXBsZS5jb20nIH0pKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgYSBTSVdTIG1lc3NhZ2Ugd2l0aCBhbGwgb3B0aW9uYWwgZmllbGRzJywgKCkgPT4ge1xuICAgICAgKCgpID0+XG4gICAgICAgIHZhbGlkYXRlU2l3c01lc3NhZ2UoXG4gICAgICAgICAgYnVpbGRTaXdzKHtcbiAgICAgICAgICAgIGRvbWFpbjogJ2V4YW1wbGUuY29tJyxcbiAgICAgICAgICAgIHN0YXRlbWVudDogJ0kgYW0gdGhlIHdhbGxldCBvd25lci4nLFxuICAgICAgICAgICAgZXhwaXJhdGlvblRpbWU6ICcyMDI2LTA5LTI4VDEwOjAwOjAwWicsXG4gICAgICAgICAgICBub3RCZWZvcmU6ICcyMDI2LTA5LTIxVDA5OjAwOjAwWicsXG4gICAgICAgICAgICByZXF1ZXN0SWQ6ICczMWE2YmFiNS0xJyxcbiAgICAgICAgICAgIHJlc291cmNlczogWydodHRwczovL2EuZXhhbXBsZS5jb20nLCAnaHR0cHM6Ly9iLmV4YW1wbGUuY29tJ10sXG4gICAgICAgICAgfSlcbiAgICAgICAgKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgYSBtdWx0aWJ5dGUgdXRmLTggc3RhdGVtZW50LCBzb2xhbmE6IGNoYWluIGlkIGFuZCBmcmFjdGlvbmFsIHNlY29uZHMnLCAoKSA9PiB7XG4gICAgICAoKCkgPT5cbiAgICAgICAgdmFsaWRhdGVTaXdzTWVzc2FnZShcbiAgICAgICAgICBidWlsZFNpd3Moe1xuICAgICAgICAgICAgZG9tYWluOiAnZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgc3RhdGVtZW50OiAn44GT44KT44Gr44Gh44Gv44CB0KLQtdGB0YLQvtCy0L7QtSDRgdC+0L7QsdGJ0LXQvdC40LUnLFxuICAgICAgICAgICAgY2hhaW5JZDogJ3NvbGFuYTptYWlubmV0JyxcbiAgICAgICAgICAgIGlzc3VlZEF0OiAnMjAyNi0wOS0yMVQxMDowMDowMC41MDBaJyxcbiAgICAgICAgICB9KVxuICAgICAgICApKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0cyB0cmFpbGluZyBuZXdsaW5lcyBhbmQgYSArMDU6MzAgb2Zmc2V0JywgKCkgPT4ge1xuICAgICAgKCgpID0+XG4gICAgICAgIHZhbGlkYXRlU2l3c01lc3NhZ2UoXG4gICAgICAgICAgYnVpbGRTaXdzKHtcbiAgICAgICAgICAgIGRvbWFpbjogJ2V4YW1wbGUuY29tJyxcbiAgICAgICAgICAgIGNoYWluSWQ6ICd0ZXN0bmV0JyxcbiAgICAgICAgICAgIGlzc3VlZEF0OiAnMjAyNi0wOS0yMVQxMDowMDowMCswNTozMCcsXG4gICAgICAgICAgICB0cmFpbGluZ05ld2xpbmVzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIHRoZSBtaW5pbWFsIHRlbXBsYXRlIChoZWFkZXIgYW5kIGFkZHJlc3Mgb25seSknLCAoKSA9PiB7XG4gICAgICAoKCkgPT4gdmFsaWRhdGVTaXdzTWVzc2FnZShbc2l3c0hlYWRlcignZXhhbXBsZS5jb20nKSwgU0lXU19BRERSRVNTXS5qb2luKCdcXG4nKSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKFtzaXdzSGVhZGVyKCdleGFtcGxlLmNvbScpLCBTSVdTX0FERFJFU1NdLmpvaW4oJ1xcbicpICsgJ1xcbicpKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0cyBhIHN0YXRlbWVudCB3aXRoIG5vIGZpZWxkcycsICgpID0+IHtcbiAgICAgICgoKSA9PlxuICAgICAgICB2YWxpZGF0ZVNpd3NNZXNzYWdlKFxuICAgICAgICAgIFtzaXdzSGVhZGVyKCdleGFtcGxlLmNvbScpLCBTSVdTX0FERFJFU1MsICcnLCAnSSBhbSB0aGUgd2FsbGV0IG93bmVyLiddLmpvaW4oJ1xcbicpXG4gICAgICAgICkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIGEgc3RhdGVtZW50IHdpdGggYSBsb25lIE5vbmNlIGZpZWxkIChwYXJ0bmVyIHNoYXBlKScsICgpID0+IHtcbiAgICAgICgoKSA9PlxuICAgICAgICB2YWxpZGF0ZVNpd3NNZXNzYWdlKFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHNpd3NIZWFkZXIoJ2FwcC5kZWNpYmVsLnRyYWRlJyksXG4gICAgICAgICAgICBTSVdTX0FERFJFU1MsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICdQbGVhc2UgY29uZmlybSB5b3UgZXhwbGljaXRseSBpbml0aWF0ZWQgdGhpcyByZXF1ZXN0IGZyb20gYXBwLmRlY2liZWwudHJhZGUuJyxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgJ05vbmNlOiAweDUwZWFkMjJhZmQ2ZmZkOTc2JyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpXG4gICAgICAgICkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRzIGFueSBzdWJzZXQgb2YgYWR2YW5jZWQgZmllbGRzIGluIGNhbm9uaWNhbCBvcmRlcicsICgpID0+IHtcbiAgICAgICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKGJ1aWxkU2l3cyh7IG9taXQ6IFsnVmVyc2lvbjonXSB9KSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKGJ1aWxkU2l3cyh7IG9taXQ6IFsnQ2hhaW4gSUQ6J10gfSkpKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICAoKCkgPT4gdmFsaWRhdGVTaXdzTWVzc2FnZShidWlsZFNpd3MoeyBvbWl0OiBbJ05vbmNlOiddIH0pKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgKCgpID0+IHZhbGlkYXRlU2l3c01lc3NhZ2UoYnVpbGRTaXdzKHsgb21pdDogWydJc3N1ZWQgQXQ6J10gfSkpKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICAoKCkgPT5cbiAgICAgICAgdmFsaWRhdGVTaXdzTWVzc2FnZShidWlsZFNpd3MoeyBvbWl0OiBbJ1VSSTonLCAnVmVyc2lvbjonLCAnQ2hhaW4gSUQ6JywgJ0lzc3VlZCBBdDonXSB9KSkpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlamVjdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVqZWN0cyA9IChtZXNzYWdlOiBzdHJpbmcpID0+ICgoKSA9PiB2YWxpZGF0ZVNpd3NNZXNzYWdlKG1lc3NhZ2UpKS5zaG91bGQudGhyb3coL25vdCBhIHZhbGlkIFNJV1MgbWVzc2FnZS8pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gZW1wdHkgbWVzc2FnZScsICgpID0+IHtcbiAgICAgIHJlamVjdHMoJycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgcGxhaW4gdGV4dCcsICgpID0+IHtcbiAgICAgIHJlamVjdHMoJ0hlbGxvIGZyb20gZGFwcCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgSlNPTicsICgpID0+IHtcbiAgICAgIHJlamVjdHMoJ3tcImFjdGlvblwiOlwibG9naW5cIn0nKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgd3Jvbmcgc2tlbGV0b24nLCAoKSA9PiB7XG4gICAgICByZWplY3RzKFxuICAgICAgICAnZXhhbXBsZS5jb20gbG9naW46XFxuJyArXG4gICAgICAgICAgU0lXU19BRERSRVNTICtcbiAgICAgICAgICAnXFxuXFxuVmVyc2lvbjogMVxcbkNoYWluIElEOiBtYWlubmV0XFxuTm9uY2U6IDMxYTZiYWI1XFxuSXNzdWVkIEF0OiAyMDI2LTA5LTIxVDEwOjAwOjAwWidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBpbnZhbGlkIGZpZWxkIHZhbHVlcycsICgpID0+IHtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgdmVyc2lvbjogJzInIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgY2hhaW5JZDogJ3BvbHlnb24nIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgbm9uY2U6ICdhYmMnIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgbm9uY2U6ICczMWE2IGJhYjUhJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGlzc3VlZEF0OiAnMjAyNi0wOS0yMSAxMDowMDowMFonIH0pKTtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgaXNzdWVkQXQ6ICcyMDI2LTA5LTIxVDEwOjAwOjYxWicgfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBpc3N1ZWRBdDogJzIwMjYtMDktMjFUMjQ6MDA6MDBaJyB9KSk7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGlzc3VlZEF0OiAnMjAyNi0wOS0yMVQxMDowMDowMCsyNDowMCcgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgb3V0LW9mLW9yZGVyIGZpZWxkcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICAgICdoYXN0cmEuaW8gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIFNvbGFuYSBhY2NvdW50OicsXG4gICAgICAgIFNJV1NfQUREUkVTUyxcbiAgICAgICAgJycsXG4gICAgICAgICdOb25jZTogMzFhNmJhYjUnLFxuICAgICAgICAnVmVyc2lvbjogMScsXG4gICAgICAgICdDaGFpbiBJRDogbWFpbm5ldCcsXG4gICAgICAgICdJc3N1ZWQgQXQ6IDIwMjYtMDktMjFUMTA6MDA6MDBaJyxcbiAgICAgIF0uam9pbignXFxuJyk7XG4gICAgICByZWplY3RzKG1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBzdHJheSBsaW5lIGFmdGVyIHRoZSBmaWVsZHMgc2VjdGlvbicsICgpID0+IHtcbiAgICAgIHJlamVjdHMoYnVpbGRTaXdzKHsgZXh0cmFMaW5lczogWydzdHJheSBsaW5lJ10gfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gdW5rbm93biBmaWVsZCBsYWJlbCBhZnRlciB0aGUgZmllbGRzIHNlY3Rpb24gc3RhcnRzJywgKCkgPT4ge1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBleHRyYUxpbmVzOiBbJ1Vua25vd24gRmllbGQ6IHZhbHVlJ10gfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBleHRyYUxpbmVzOiBbJ1ZlcnNpb24yOiAxJ10gfSkpO1xuICAgICAgcmVqZWN0cyhcbiAgICAgICAgW1xuICAgICAgICAgICdoYXN0cmEuaW8gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIFNvbGFuYSBhY2NvdW50OicsXG4gICAgICAgICAgU0lXU19BRERSRVNTLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdWZXJzaW9uOiAxJyxcbiAgICAgICAgICAnVW5rbm93bjogeCcsXG4gICAgICAgICAgJ0NoYWluIElEOiBtYWlubmV0JyxcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIHVua25vd24gZmllbGQgbGFiZWwgYWZ0ZXIgdGhlIGJsYW5rIGxpbmUgdGhhdCBvcGVucyB0aGUgZmllbGRzIHNlY3Rpb24nLCAoKSA9PiB7XG4gICAgICByZWplY3RzKFxuICAgICAgICBbXG4gICAgICAgICAgJ2hhc3RyYS5pbyB3YW50cyB5b3UgdG8gc2lnbiBpbiB3aXRoIHlvdXIgU29sYW5hIGFjY291bnQ6JyxcbiAgICAgICAgICBTSVdTX0FERFJFU1MsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0kgYW0gdGhlIHdhbGxldCBvd25lci4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdVbmtub3duOiB4JyxcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgZmllbGQgbGFiZWwgdGhhdCBhcHBlYXJzIHR3aWNlJywgKCkgPT4ge1xuICAgICAgcmVqZWN0cyhcbiAgICAgICAgW1xuICAgICAgICAgICdoYXN0cmEuaW8gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIFNvbGFuYSBhY2NvdW50OicsXG4gICAgICAgICAgU0lXU19BRERSRVNTLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdOb25jZTogMzFhNmJhYjUnLFxuICAgICAgICAgICdOb25jZTogMzFhNmJhYjUnLFxuICAgICAgICBdLmpvaW4oJ1xcbicpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gaW52YWxpZCBhZGRyZXNzIGxpbmUnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IGFkZHJlc3M6ICdzaG9ydCcgfSkpO1xuICAgICAgcmVqZWN0cyhidWlsZFNpd3MoeyBhZGRyZXNzOiAnME9JbC1pbnZhbGlkLWJhc2U1OC1jaGFyYWN0ZXJzLTAwMDAwMDAwMDAwMDAwMDAwMCcgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSB2YWx1ZWQgUmVzb3VyY2VzIGxpbmUnLCAoKSA9PiB7XG4gICAgICByZWplY3RzKGJ1aWxkU2l3cyh7IHJlc291cmNlczogW10gfSkucmVwbGFjZSgnUmVzb3VyY2VzOicsICdSZXNvdXJjZXM6IGh0dHBzOi8veC5leGFtcGxlLmNvbScpKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgYmxhbmsgbGluZSBpbnNpZGUgdGhlIGZpZWxkcyBzZWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IFtcbiAgICAgICAgJ2hhc3RyYS5pbyB3YW50cyB5b3UgdG8gc2lnbiBpbiB3aXRoIHlvdXIgU29sYW5hIGFjY291bnQ6JyxcbiAgICAgICAgU0lXU19BRERSRVNTLFxuICAgICAgICAnJyxcbiAgICAgICAgJ1ZlcnNpb246IDEnLFxuICAgICAgICAnJyxcbiAgICAgICAgJ0NoYWluIElEOiBtYWlubmV0JyxcbiAgICAgICAgJ05vbmNlOiAzMWE2YmFiNScsXG4gICAgICAgICdJc3N1ZWQgQXQ6IDIwMjYtMDktMjFUMTA6MDA6MDBaJyxcbiAgICAgIF0uam9pbignXFxuJyk7XG4gICAgICByZWplY3RzKG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXRmLTggc3RyaWN0bmVzcycsICgpID0+IHtcbiAgICBpdCgncmVqZWN0cyBsb25lIHN1cnJvZ2F0ZXMgdGhhdCBCdWZmZXIuZnJvbSB3b3VsZCBtYW5nbGUgdG8gVStGRkZEJywgKCkgPT4ge1xuICAgICAgKCgpID0+IHZhbGlkYXRlU2l3c01lc3NhZ2UoYnVpbGRTaXdzKHsgc3RhdGVtZW50OiAnYmFkIFxcdUQ4MDAgc3RhdGVtZW50JyB9KSkpLnNob3VsZC50aHJvdyhcbiAgICAgICAgL21lc3NhZ2UgaXMgbm90IHZhbGlkIFVURi04L1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyVerification.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/utils/tss/keyVerification.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|