@bitgo-beta/sdk-coin-cspr 1.2.19-beta.192 → 1.2.19-beta.1921

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.
Files changed (67) hide show
  1. package/dist/src/cspr.d.ts +5 -2
  2. package/dist/src/cspr.d.ts.map +1 -1
  3. package/dist/src/cspr.js +36 -14
  4. package/dist/src/index.js +23 -9
  5. package/dist/src/lib/constants.d.ts +1 -1
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +2 -2
  8. package/dist/src/lib/delegateBuilder.js +6 -6
  9. package/dist/src/lib/ifaces.d.ts +2 -2
  10. package/dist/src/lib/ifaces.d.ts.map +1 -1
  11. package/dist/src/lib/index.js +23 -9
  12. package/dist/src/lib/keyPair.js +9 -10
  13. package/dist/src/lib/transaction.js +47 -34
  14. package/dist/src/lib/transactionBuilder.js +3 -3
  15. package/dist/src/lib/transactionBuilderFactory.js +2 -2
  16. package/dist/src/lib/transferBuilder.js +9 -9
  17. package/dist/src/lib/undelegateBuilder.js +6 -6
  18. package/dist/src/lib/utils.js +58 -45
  19. package/dist/src/lib/walletInitializationBuilder.js +1 -1
  20. package/dist/src/tcspr.js +1 -1
  21. package/dist/test/fixtures/cspr.d.ts +4 -0
  22. package/dist/test/fixtures/cspr.d.ts.map +1 -0
  23. package/dist/test/fixtures/cspr.js +7 -0
  24. package/dist/test/fixtures/resources.d.ts +92 -0
  25. package/dist/test/fixtures/resources.d.ts.map +1 -0
  26. package/dist/test/fixtures/resources.js +96 -0
  27. package/dist/test/integration/index.d.ts +1 -0
  28. package/dist/test/integration/index.d.ts.map +1 -0
  29. package/dist/test/integration/index.js +1 -0
  30. package/dist/test/unit/cspr.d.ts +2 -0
  31. package/dist/test/unit/cspr.d.ts.map +1 -0
  32. package/dist/test/unit/cspr.js +680 -0
  33. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  34. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  35. package/dist/test/unit/lib/keyPair.js +159 -0
  36. package/dist/test/unit/lib/signMessage.d.ts +2 -0
  37. package/dist/test/unit/lib/signMessage.d.ts.map +1 -0
  38. package/dist/test/unit/lib/signMessage.js +68 -0
  39. package/dist/test/unit/lib/transaction.d.ts +2 -0
  40. package/dist/test/unit/lib/transaction.d.ts.map +1 -0
  41. package/dist/test/unit/lib/transaction.js +271 -0
  42. package/dist/test/unit/lib/transactionBuilder/delegateBuilder.d.ts +2 -0
  43. package/dist/test/unit/lib/transactionBuilder/delegateBuilder.d.ts.map +1 -0
  44. package/dist/test/unit/lib/transactionBuilder/delegateBuilder.js +191 -0
  45. package/dist/test/unit/lib/transactionBuilder/transactionBuilder.d.ts +2 -0
  46. package/dist/test/unit/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  47. package/dist/test/unit/lib/transactionBuilder/transactionBuilder.js +315 -0
  48. package/dist/test/unit/lib/transactionBuilder/transferBuilder.d.ts +2 -0
  49. package/dist/test/unit/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
  50. package/dist/test/unit/lib/transactionBuilder/transferBuilder.js +519 -0
  51. package/dist/test/unit/lib/transactionBuilder/undelegateBuilder.d.ts +2 -0
  52. package/dist/test/unit/lib/transactionBuilder/undelegateBuilder.d.ts.map +1 -0
  53. package/dist/test/unit/lib/transactionBuilder/undelegateBuilder.js +192 -0
  54. package/dist/test/unit/lib/transactionBuilder/walletInitialization.d.ts +2 -0
  55. package/dist/test/unit/lib/transactionBuilder/walletInitialization.d.ts.map +1 -0
  56. package/dist/test/unit/lib/transactionBuilder/walletInitialization.js +338 -0
  57. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
  58. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
  59. package/dist/test/unit/lib/transactionBuilderFactory.js +328 -0
  60. package/dist/test/unit/lib/util.d.ts +2 -0
  61. package/dist/test/unit/lib/util.d.ts.map +1 -0
  62. package/dist/test/unit/lib/util.js +176 -0
  63. package/dist/tsconfig.tsbuildinfo +1 -0
  64. package/package.json +14 -11
  65. package/.eslintignore +0 -4
  66. package/.mocharc.yml +0 -8
  67. package/CHANGELOG.md +0 -314
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=undelegateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undelegateBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/lib/transactionBuilder/undelegateBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const assert_1 = __importDefault(require("assert"));
40
+ const should = __importStar(require("should"));
41
+ const lib_1 = require("../../../../src/lib");
42
+ const constants_1 = require("../../../../src/lib/constants");
43
+ const testData = __importStar(require("../../../fixtures/resources"));
44
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
45
+ const statics_1 = require("@bitgo-beta/statics");
46
+ describe('CSPR Undelegate Builder', () => {
47
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tcspr'));
48
+ const sender = testData.ACCOUNT_1;
49
+ const owner1Address = new lib_1.KeyPair({ pub: testData.ACCOUNT_1.publicKey }).getAddress();
50
+ const validator = constants_1.DELEGATE_VALIDATOR_ACCOUNT;
51
+ const initUndelegateTxBuilder = () => {
52
+ const builder = factory.getUndelegateBuilder();
53
+ return builder;
54
+ };
55
+ const addFeeToBuilder = (builder, gasLimit, gasPrice) => {
56
+ builder.fee({ gasLimit: gasLimit, gasPrice: gasPrice });
57
+ return builder;
58
+ };
59
+ const addSourceToBuilder = (builder, source) => {
60
+ builder.source({ address: new lib_1.KeyPair({ pub: source.publicKey }).getAddress() });
61
+ return builder;
62
+ };
63
+ const addValidatorToBuilder = (builder, validator) => {
64
+ builder.validator(validator);
65
+ return builder;
66
+ };
67
+ const addAmountToBuilder = (builder, amount) => {
68
+ builder.amount(amount);
69
+ return builder;
70
+ };
71
+ const initUnsignedUndelegateTxBuilder = () => {
72
+ let builder = initUndelegateTxBuilder();
73
+ builder = addFeeToBuilder(builder, testData.FEE.gasLimit, testData.FEE.gasPrice);
74
+ builder = addSourceToBuilder(builder, sender);
75
+ builder = addValidatorToBuilder(builder, validator);
76
+ builder = addAmountToBuilder(builder, '10');
77
+ return builder;
78
+ };
79
+ describe('should build ', () => {
80
+ it('an init valid undelegate transaction', async () => {
81
+ const txBuilder = initUnsignedUndelegateTxBuilder();
82
+ txBuilder.sign({ key: testData.ACCOUNT_1.privateKey });
83
+ txBuilder.sign({ key: testData.ACCOUNT_2.privateKey });
84
+ const tx = await txBuilder.build();
85
+ const txJson = tx.toJson();
86
+ should.deepEqual(txJson.fee, testData.FEE);
87
+ should.deepEqual(tx.signature.length, 2);
88
+ should.equal(txJson.from, owner1Address);
89
+ tx.type.should.equal(sdk_core_1.TransactionType.StakingUnlock);
90
+ });
91
+ it('an init valid undelegate transaction with an external signature', async () => {
92
+ const txBuilder = initUnsignedUndelegateTxBuilder();
93
+ txBuilder.sign({ key: testData.ACCOUNT_2.privateKey });
94
+ txBuilder.signature(testData.EXTERNAL_SIGNATURE.signature, new lib_1.KeyPair({ pub: testData.EXTERNAL_SIGNATURE.publicKey }));
95
+ const tx = await txBuilder.build();
96
+ const txJson = tx.toJson();
97
+ should.equal(txJson.from, owner1Address);
98
+ should.deepEqual(tx.signature.length, 2);
99
+ tx.type.should.equal(sdk_core_1.TransactionType.StakingUnlock);
100
+ });
101
+ it('an init undelegate transaction with external signature included twice', async () => {
102
+ const txBuilder = initUnsignedUndelegateTxBuilder();
103
+ txBuilder.signature(testData.EXTERNAL_SIGNATURE.signature, new lib_1.KeyPair({ pub: testData.EXTERNAL_SIGNATURE.publicKey }));
104
+ txBuilder.signature(testData.EXTERNAL_SIGNATURE.signature, new lib_1.KeyPair({ pub: testData.EXTERNAL_SIGNATURE.publicKey }));
105
+ const tx = await txBuilder.build();
106
+ const txJson = tx.toJson();
107
+ should.equal(txJson.from, owner1Address);
108
+ should.deepEqual(tx.signature.length, 1);
109
+ tx.type.should.equal(sdk_core_1.TransactionType.StakingUnlock);
110
+ });
111
+ it('an undelegate transaction with large amount', async function () {
112
+ const amount = '10000000000000000';
113
+ let txBuilder = initUnsignedUndelegateTxBuilder();
114
+ txBuilder = addAmountToBuilder(txBuilder, amount);
115
+ const tx = await txBuilder.build();
116
+ const txJson = tx.toJson();
117
+ txJson.amount.should.equal(amount);
118
+ });
119
+ });
120
+ describe('should fail to build', () => {
121
+ it('a undelegate transaction without fee', async () => {
122
+ let txBuilder = initUndelegateTxBuilder();
123
+ txBuilder = addSourceToBuilder(txBuilder, sender);
124
+ txBuilder = addValidatorToBuilder(txBuilder, validator);
125
+ txBuilder = addAmountToBuilder(txBuilder, '10');
126
+ await txBuilder.build().should.be.rejectedWith(testData.INVALID_TRANSACTION_MISSING_FEE);
127
+ });
128
+ it('a undelegate transaction without amount', async () => {
129
+ let txBuilder = initUndelegateTxBuilder();
130
+ txBuilder = addFeeToBuilder(txBuilder, testData.FEE.gasLimit, testData.FEE.gasPrice);
131
+ txBuilder = addSourceToBuilder(txBuilder, sender);
132
+ txBuilder = addValidatorToBuilder(txBuilder, validator);
133
+ await txBuilder.build().should.be.rejectedWith(testData.INVALID_TRANSACTION_MISSING_AMOUNT);
134
+ });
135
+ it('a undelegate transaction with invalid source', async () => {
136
+ let txBuilder = initUndelegateTxBuilder();
137
+ txBuilder = addFeeToBuilder(txBuilder, testData.FEE.gasLimit, testData.FEE.gasPrice);
138
+ txBuilder = addValidatorToBuilder(txBuilder, validator);
139
+ txBuilder = addAmountToBuilder(txBuilder, '10');
140
+ await txBuilder.build().should.be.rejectedWith(testData.INVALID_TRANSACTION_MISSING_SOURCE);
141
+ });
142
+ it('a undelegate transaction without validator', async () => {
143
+ let txBuilder = initUndelegateTxBuilder();
144
+ txBuilder = addFeeToBuilder(txBuilder, testData.FEE.gasLimit, testData.FEE.gasPrice);
145
+ txBuilder = addSourceToBuilder(txBuilder, sender);
146
+ txBuilder = addAmountToBuilder(txBuilder, '10');
147
+ const tx = await txBuilder.build();
148
+ const txJson = tx.toJson();
149
+ should.equal(txJson.from, owner1Address);
150
+ tx.type.should.equal(sdk_core_1.TransactionType.StakingUnlock);
151
+ should.equal(txJson.validator, constants_1.DELEGATE_VALIDATOR_ACCOUNT);
152
+ });
153
+ });
154
+ describe('should validate', () => {
155
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tcspr'));
156
+ it('an address', async () => {
157
+ const txBuilder = factory.getUndelegateBuilder();
158
+ txBuilder.validateAddress({ address: testData.VALID_ADDRESS });
159
+ assert_1.default.throws(() => txBuilder.validateAddress({ address: testData.INVALID_ADDRESS }), new RegExp('Invalid address ' + testData.INVALID_ADDRESS));
160
+ });
161
+ it('a validator address', async () => {
162
+ let txBuilder = initUndelegateTxBuilder();
163
+ txBuilder = addFeeToBuilder(txBuilder, testData.FEE.gasLimit, testData.FEE.gasPrice);
164
+ txBuilder = addSourceToBuilder(txBuilder, sender);
165
+ txBuilder = addAmountToBuilder(txBuilder, '10');
166
+ assert_1.default.throws(() => txBuilder.validator('abc'), /Invalid address/);
167
+ });
168
+ it('fee value should be greater than zero', () => {
169
+ const txBuilder = factory.getUndelegateBuilder();
170
+ assert_1.default.throws(() => txBuilder.fee({ gasLimit: '-10' }));
171
+ should.doesNotThrow(() => txBuilder.fee(testData.FEE));
172
+ });
173
+ it('amount value should be greater than zero', () => {
174
+ const txBuilder = factory.getUndelegateBuilder();
175
+ assert_1.default.throws(() => txBuilder.amount('-1'));
176
+ should.doesNotThrow(() => txBuilder.amount('1'));
177
+ });
178
+ it('a private key', () => {
179
+ const txBuilder = factory.getUndelegateBuilder();
180
+ assert_1.default.throws(() => txBuilder.validateKey({ key: 'abc' }), /Unsupported private key/);
181
+ should.doesNotThrow(() => txBuilder.validateKey({ key: testData.ACCOUNT_1.privateKey }));
182
+ });
183
+ it('a length of signers', () => {
184
+ const txBuilder = initUnsignedUndelegateTxBuilder();
185
+ should.doesNotThrow(() => txBuilder.sign({ key: testData.ACCOUNT_1.privateKey }));
186
+ should.doesNotThrow(() => txBuilder.sign({ key: testData.ACCOUNT_2.privateKey }));
187
+ should.doesNotThrow(() => txBuilder.sign({ key: testData.ACCOUNT_3.privateKey }));
188
+ assert_1.default.throws(() => txBuilder.sign({ key: testData.ACCOUNT_4.privateKey }), new RegExp('A maximum of 3 can sign the transaction.'));
189
+ });
190
+ });
191
+ });
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGliL3RyYW5zYWN0aW9uQnVpbGRlci91bmRlbGVnYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwrQ0FBaUM7QUFDakMsNkNBQXlFO0FBQ3pFLDZEQUEyRTtBQUMzRSxzRUFBd0Q7QUFDeEQsbURBQXVEO0FBRXZELGlEQUE0QztBQUU1QyxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDbEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RGLE1BQU0sU0FBUyxHQUFHLHNDQUEwQixDQUFDO0lBRTdDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1FBQ25DLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQy9DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBMEIsRUFBRSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsRUFBRTtRQUN6RixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBMEIsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNoRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBMEIsRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDOUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBMEIsRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUN4RSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVGLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxFQUFFO1FBQzNDLElBQUksT0FBTyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFDeEMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixPQUFPLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEQsTUFBTSxTQUFTLEdBQUcsK0JBQStCLEVBQUUsQ0FBQztZQUNwRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN6QyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMvRSxNQUFNLFNBQVMsR0FBRywrQkFBK0IsRUFBRSxDQUFDO1lBQ3BELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELFNBQVMsQ0FBQyxTQUFTLENBQ2pCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQ3JDLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUM1RCxDQUFDO1lBQ0YsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVFQUF1RSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JGLE1BQU0sU0FBUyxHQUFHLCtCQUErQixFQUFFLENBQUM7WUFDcEQsU0FBUyxDQUFDLFNBQVMsQ0FDakIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFDckMsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQzVELENBQUM7WUFDRixTQUFTLENBQUMsU0FBUyxDQUNqQixRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUNyQyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztZQUVGLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO1lBQ3JELE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDO1lBQ25DLElBQUksU0FBUyxHQUFHLCtCQUErQixFQUFFLENBQUM7WUFDbEQsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNwRCxJQUFJLFNBQVMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO1lBQzFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEQsU0FBUyxHQUFHLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RCxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZELElBQUksU0FBUyxHQUFHLHVCQUF1QixFQUFFLENBQUM7WUFDMUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRixTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEQsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOENBQThDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUQsSUFBSSxTQUFTLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztZQUMxQyxTQUFTLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEQsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRCxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxRCxJQUFJLFNBQVMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO1lBQzFDLFNBQVMsR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckYsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRCxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWhELE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDekMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHNDQUEwQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFbEUsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNqRCxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQ3RFLElBQUksTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25DLElBQUksU0FBUyxHQUFHLHVCQUF1QixFQUFFLENBQUM7WUFDMUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRixTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtZQUMvQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1lBQ2xELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2pELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2pELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDN0IsTUFBTSxTQUFTLEdBQUcsK0JBQStCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEYsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsRUFDNUQsSUFBSSxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FDdkQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgS2V5UGFpciwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgREVMRUdBVEVfVkFMSURBVE9SX0FDQ09VTlQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi8uLi9maXh0dXJlcy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVW5kZWxlZ2F0ZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL3VuZGVsZWdhdGVCdWlsZGVyJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmRlc2NyaWJlKCdDU1BSIFVuZGVsZWdhdGUgQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGNzcHInKSk7XG4gIGNvbnN0IHNlbmRlciA9IHRlc3REYXRhLkFDQ09VTlRfMTtcbiAgY29uc3Qgb3duZXIxQWRkcmVzcyA9IG5ldyBLZXlQYWlyKHsgcHViOiB0ZXN0RGF0YS5BQ0NPVU5UXzEucHVibGljS2V5IH0pLmdldEFkZHJlc3MoKTtcbiAgY29uc3QgdmFsaWRhdG9yID0gREVMRUdBVEVfVkFMSURBVE9SX0FDQ09VTlQ7XG5cbiAgY29uc3QgaW5pdFVuZGVsZWdhdGVUeEJ1aWxkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCBhZGRGZWVUb0J1aWxkZXIgPSAoYnVpbGRlcjogVW5kZWxlZ2F0ZUJ1aWxkZXIsIGdhc0xpbWl0OiBzdHJpbmcsIGdhc1ByaWNlOiBzdHJpbmcpID0+IHtcbiAgICBidWlsZGVyLmZlZSh7IGdhc0xpbWl0OiBnYXNMaW1pdCwgZ2FzUHJpY2U6IGdhc1ByaWNlIH0pO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IGFkZFNvdXJjZVRvQnVpbGRlciA9IChidWlsZGVyOiBVbmRlbGVnYXRlQnVpbGRlciwgc291cmNlKSA9PiB7XG4gICAgYnVpbGRlci5zb3VyY2UoeyBhZGRyZXNzOiBuZXcgS2V5UGFpcih7IHB1Yjogc291cmNlLnB1YmxpY0tleSB9KS5nZXRBZGRyZXNzKCkgfSk7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG5cbiAgY29uc3QgYWRkVmFsaWRhdG9yVG9CdWlsZGVyID0gKGJ1aWxkZXI6IFVuZGVsZWdhdGVCdWlsZGVyLCB2YWxpZGF0b3I6IHN0cmluZykgPT4ge1xuICAgIGJ1aWxkZXIudmFsaWRhdG9yKHZhbGlkYXRvcik7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG5cbiAgY29uc3QgYWRkQW1vdW50VG9CdWlsZGVyID0gKGJ1aWxkZXI6IFVuZGVsZWdhdGVCdWlsZGVyLCBhbW91bnQ6IHN0cmluZykgPT4ge1xuICAgIGJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG5cbiAgY29uc3QgaW5pdFVuc2lnbmVkVW5kZWxlZ2F0ZVR4QnVpbGRlciA9ICgpID0+IHtcbiAgICBsZXQgYnVpbGRlciA9IGluaXRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgYnVpbGRlciA9IGFkZEZlZVRvQnVpbGRlcihidWlsZGVyLCB0ZXN0RGF0YS5GRUUuZ2FzTGltaXQsIHRlc3REYXRhLkZFRS5nYXNQcmljZSk7XG4gICAgYnVpbGRlciA9IGFkZFNvdXJjZVRvQnVpbGRlcihidWlsZGVyLCBzZW5kZXIpO1xuICAgIGJ1aWxkZXIgPSBhZGRWYWxpZGF0b3JUb0J1aWxkZXIoYnVpbGRlciwgdmFsaWRhdG9yKTtcbiAgICBidWlsZGVyID0gYWRkQW1vdW50VG9CdWlsZGVyKGJ1aWxkZXIsICcxMCcpO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgYnVpbGQgJywgKCkgPT4ge1xuICAgIGl0KCdhbiBpbml0IHZhbGlkIHVuZGVsZWdhdGUgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VW5zaWduZWRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQUNDT1VOVF8xLnByaXZhdGVLZXkgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQUNDT1VOVF8yLnByaXZhdGVLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5mZWUsIHRlc3REYXRhLkZFRSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4LnNpZ25hdHVyZS5sZW5ndGgsIDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5mcm9tLCBvd25lcjFBZGRyZXNzKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBpbml0IHZhbGlkIHVuZGVsZWdhdGUgdHJhbnNhY3Rpb24gd2l0aCBhbiBleHRlcm5hbCBzaWduYXR1cmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VW5zaWduZWRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQUNDT1VOVF8yLnByaXZhdGVLZXkgfSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbmF0dXJlKFxuICAgICAgICB0ZXN0RGF0YS5FWFRFUk5BTF9TSUdOQVRVUkUuc2lnbmF0dXJlLFxuICAgICAgICBuZXcgS2V5UGFpcih7IHB1YjogdGVzdERhdGEuRVhURVJOQUxfU0lHTkFUVVJFLnB1YmxpY0tleSB9KVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZnJvbSwgb3duZXIxQWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4LnNpZ25hdHVyZS5sZW5ndGgsIDIpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGluaXQgdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvbiB3aXRoIGV4dGVybmFsIHNpZ25hdHVyZSBpbmNsdWRlZCB0d2ljZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRVbnNpZ25lZFVuZGVsZWdhdGVUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zaWduYXR1cmUoXG4gICAgICAgIHRlc3REYXRhLkVYVEVSTkFMX1NJR05BVFVSRS5zaWduYXR1cmUsXG4gICAgICAgIG5ldyBLZXlQYWlyKHsgcHViOiB0ZXN0RGF0YS5FWFRFUk5BTF9TSUdOQVRVUkUucHVibGljS2V5IH0pXG4gICAgICApO1xuICAgICAgdHhCdWlsZGVyLnNpZ25hdHVyZShcbiAgICAgICAgdGVzdERhdGEuRVhURVJOQUxfU0lHTkFUVVJFLnNpZ25hdHVyZSxcbiAgICAgICAgbmV3IEtleVBhaXIoeyBwdWI6IHRlc3REYXRhLkVYVEVSTkFMX1NJR05BVFVSRS5wdWJsaWNLZXkgfSlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZnJvbSwgb3duZXIxQWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4LnNpZ25hdHVyZS5sZW5ndGgsIDEpO1xuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIHVuZGVsZWdhdGUgdHJhbnNhY3Rpb24gd2l0aCBsYXJnZSBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwMDAwMDAwMDAwMDAnO1xuICAgICAgbGV0IHR4QnVpbGRlciA9IGluaXRVbnNpZ25lZFVuZGVsZWdhdGVUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlciA9IGFkZEFtb3VudFRvQnVpbGRlcih0eEJ1aWxkZXIsIGFtb3VudCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0eEpzb24uYW1vdW50LnNob3VsZC5lcXVhbChhbW91bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwgdG8gYnVpbGQnLCAoKSA9PiB7XG4gICAgaXQoJ2EgdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IGZlZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB0eEJ1aWxkZXIgPSBpbml0VW5kZWxlZ2F0ZVR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyID0gYWRkU291cmNlVG9CdWlsZGVyKHR4QnVpbGRlciwgc2VuZGVyKTtcbiAgICAgIHR4QnVpbGRlciA9IGFkZFZhbGlkYXRvclRvQnVpbGRlcih0eEJ1aWxkZXIsIHZhbGlkYXRvcik7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRBbW91bnRUb0J1aWxkZXIodHhCdWlsZGVyLCAnMTAnKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgodGVzdERhdGEuSU5WQUxJRF9UUkFOU0FDVElPTl9NSVNTSU5HX0ZFRSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB1bmRlbGVnYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgYW1vdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHR4QnVpbGRlciA9IGluaXRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRGZWVUb0J1aWxkZXIodHhCdWlsZGVyLCB0ZXN0RGF0YS5GRUUuZ2FzTGltaXQsIHRlc3REYXRhLkZFRS5nYXNQcmljZSk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRTb3VyY2VUb0J1aWxkZXIodHhCdWlsZGVyLCBzZW5kZXIpO1xuICAgICAgdHhCdWlsZGVyID0gYWRkVmFsaWRhdG9yVG9CdWlsZGVyKHR4QnVpbGRlciwgdmFsaWRhdG9yKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgodGVzdERhdGEuSU5WQUxJRF9UUkFOU0FDVElPTl9NSVNTSU5HX0FNT1VOVCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB1bmRlbGVnYXRlIHRyYW5zYWN0aW9uIHdpdGggaW52YWxpZCBzb3VyY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdHhCdWlsZGVyID0gaW5pdFVuZGVsZWdhdGVUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlciA9IGFkZEZlZVRvQnVpbGRlcih0eEJ1aWxkZXIsIHRlc3REYXRhLkZFRS5nYXNMaW1pdCwgdGVzdERhdGEuRkVFLmdhc1ByaWNlKTtcbiAgICAgIHR4QnVpbGRlciA9IGFkZFZhbGlkYXRvclRvQnVpbGRlcih0eEJ1aWxkZXIsIHZhbGlkYXRvcik7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRBbW91bnRUb0J1aWxkZXIodHhCdWlsZGVyLCAnMTAnKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgodGVzdERhdGEuSU5WQUxJRF9UUkFOU0FDVElPTl9NSVNTSU5HX1NPVVJDRSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB1bmRlbGVnYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgdmFsaWRhdG9yJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHR4QnVpbGRlciA9IGluaXRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRGZWVUb0J1aWxkZXIodHhCdWlsZGVyLCB0ZXN0RGF0YS5GRUUuZ2FzTGltaXQsIHRlc3REYXRhLkZFRS5nYXNQcmljZSk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRTb3VyY2VUb0J1aWxkZXIodHhCdWlsZGVyLCBzZW5kZXIpO1xuICAgICAgdHhCdWlsZGVyID0gYWRkQW1vdW50VG9CdWlsZGVyKHR4QnVpbGRlciwgJzEwJyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZnJvbSwgb3duZXIxQWRkcmVzcyk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnZhbGlkYXRvciwgREVMRUdBVEVfVkFMSURBVE9SX0FDQ09VTlQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rjc3ByJykpO1xuXG4gICAgaXQoJ2FuIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFVuZGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogdGVzdERhdGEuVkFMSURfQUREUkVTUyB9KTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHR4QnVpbGRlci52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0ZXN0RGF0YS5JTlZBTElEX0FERFJFU1MgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0ludmFsaWQgYWRkcmVzcyAnICsgdGVzdERhdGEuSU5WQUxJRF9BRERSRVNTKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHZhbGlkYXRvciBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHR4QnVpbGRlciA9IGluaXRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRGZWVUb0J1aWxkZXIodHhCdWlsZGVyLCB0ZXN0RGF0YS5GRUUuZ2FzTGltaXQsIHRlc3REYXRhLkZFRS5nYXNQcmljZSk7XG4gICAgICB0eEJ1aWxkZXIgPSBhZGRTb3VyY2VUb0J1aWxkZXIodHhCdWlsZGVyLCBzZW5kZXIpO1xuICAgICAgdHhCdWlsZGVyID0gYWRkQW1vdW50VG9CdWlsZGVyKHR4QnVpbGRlciwgJzEwJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci52YWxpZGF0b3IoJ2FiYycpLCAvSW52YWxpZCBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmVlIHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVybycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZlZSh7IGdhc0xpbWl0OiAnLTEwJyB9KSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5mZWUodGVzdERhdGEuRkVFKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW1vdW50IHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVybycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmFtb3VudCgnLTEnKSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5hbW91bnQoJzEnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnZhbGlkYXRlS2V5KHsga2V5OiAnYWJjJyB9KSwgL1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Lyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci52YWxpZGF0ZUtleSh7IGtleTogdGVzdERhdGEuQUNDT1VOVF8xLnByaXZhdGVLZXkgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgbGVuZ3RoIG9mIHNpZ25lcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VW5zaWduZWRVbmRlbGVnYXRlVHhCdWlsZGVyKCk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5BQ0NPVU5UXzEucHJpdmF0ZUtleSB9KSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5BQ0NPVU5UXzIucHJpdmF0ZUtleSB9KSk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5BQ0NPVU5UXzMucHJpdmF0ZUtleSB9KSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuQUNDT1VOVF80LnByaXZhdGVLZXkgfSksXG4gICAgICAgIG5ldyBSZWdFeHAoJ0EgbWF4aW11bSBvZiAzIGNhbiBzaWduIHRoZSB0cmFuc2FjdGlvbi4nKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=walletInitialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletInitialization.d.ts","sourceRoot":"","sources":["../../../../../test/unit/lib/transactionBuilder/walletInitialization.ts"],"names":[],"mappings":""}