@bitgo-beta/sdk-coin-polyx 1.0.1-beta.102 → 1.0.1-beta.1021

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 (147) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/baseBuilder.d.ts +24 -0
  5. package/dist/src/lib/baseBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/baseBuilder.js +31 -0
  7. package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
  8. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/batchStakingBuilder.js +299 -0
  10. package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
  11. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/batchUnstakingBuilder.js +127 -0
  13. package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
  14. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/bondExtraBuilder.js +101 -0
  16. package/dist/src/lib/constants.d.ts +21 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +24 -0
  19. package/dist/src/lib/hexTransferBuilder.d.ts +26 -0
  20. package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/hexTransferBuilder.js +49 -0
  22. package/dist/src/lib/iface.d.ts +132 -2
  23. package/dist/src/lib/iface.d.ts.map +1 -1
  24. package/dist/src/lib/iface.js +37 -1
  25. package/dist/src/lib/index.d.ts +20 -0
  26. package/dist/src/lib/index.d.ts.map +1 -1
  27. package/dist/src/lib/index.js +37 -5
  28. package/dist/src/lib/nominateBuilder.d.ts +18 -0
  29. package/dist/src/lib/nominateBuilder.d.ts.map +1 -0
  30. package/dist/src/lib/nominateBuilder.js +99 -0
  31. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  32. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  34. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +2 -2
  35. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
  36. package/dist/src/lib/registerDidWithCDDBuilder.js +7 -5
  37. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  38. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  40. package/dist/src/lib/tokenTransferBuilder.d.ts +58 -0
  41. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/tokenTransferBuilder.js +158 -0
  43. package/dist/src/lib/transaction.d.ts +21 -2
  44. package/dist/src/lib/transaction.d.ts.map +1 -1
  45. package/dist/src/lib/transaction.js +114 -2
  46. package/dist/src/lib/transactionBuilderFactory.d.ts +20 -0
  47. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  48. package/dist/src/lib/transactionBuilderFactory.js +92 -4
  49. package/dist/src/lib/transferBuilder.d.ts +4 -2
  50. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  51. package/dist/src/lib/transferBuilder.js +10 -4
  52. package/dist/src/lib/txnSchema.d.ts +47 -0
  53. package/dist/src/lib/txnSchema.d.ts.map +1 -1
  54. package/dist/src/lib/txnSchema.js +152 -2
  55. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  56. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/unbondBuilder.js +98 -0
  58. package/dist/src/lib/utils.d.ts +39 -0
  59. package/dist/src/lib/utils.d.ts.map +1 -1
  60. package/dist/src/lib/utils.js +89 -1
  61. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  62. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/withdrawUnbondedBuilder.js +89 -0
  64. package/dist/src/polyx.d.ts +49 -9
  65. package/dist/src/polyx.d.ts.map +1 -1
  66. package/dist/src/polyx.js +271 -18
  67. package/dist/src/polyxToken.d.ts +20 -0
  68. package/dist/src/polyxToken.d.ts.map +1 -0
  69. package/dist/src/polyxToken.js +55 -0
  70. package/dist/src/register.d.ts.map +1 -1
  71. package/dist/src/register.js +5 -1
  72. package/dist/src/tpolyx.d.ts +7 -0
  73. package/dist/src/tpolyx.d.ts.map +1 -1
  74. package/dist/src/tpolyx.js +11 -1
  75. package/dist/test/integration/index.d.ts +1 -0
  76. package/dist/test/integration/index.d.ts.map +1 -0
  77. package/dist/test/integration/index.js +1 -0
  78. package/dist/test/resources/index.d.ts +112 -0
  79. package/dist/test/resources/index.d.ts.map +1 -0
  80. package/dist/test/resources/index.js +121 -0
  81. package/dist/test/resources/mainnet.d.ts +2 -0
  82. package/dist/test/resources/mainnet.d.ts.map +1 -0
  83. package/dist/test/resources/mainnet.js +5 -0
  84. package/dist/test/resources/materialData.json +8 -0
  85. package/dist/test/resources/materialDataModified.json +8 -0
  86. package/dist/test/resources/testnet.d.ts +2 -0
  87. package/dist/test/resources/testnet.d.ts.map +1 -0
  88. package/dist/test/resources/testnet.js +5 -0
  89. package/dist/test/resources/wrwUsers.d.ts +19 -0
  90. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  91. package/dist/test/resources/wrwUsers.js +60 -0
  92. package/dist/test/unit/polyx.d.ts +2 -0
  93. package/dist/test/unit/polyx.d.ts.map +1 -0
  94. package/dist/test/unit/polyx.js +271 -0
  95. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  96. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  97. package/dist/test/unit/transactionBuilder/base.js +245 -0
  98. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  99. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  100. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +263 -0
  101. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  102. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  103. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  104. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  105. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  106. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  107. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts +2 -0
  108. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts.map +1 -0
  109. package/dist/test/unit/transactionBuilder/hexTransferBuilder.js +389 -0
  110. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts +2 -0
  111. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts.map +1 -0
  112. package/dist/test/unit/transactionBuilder/nominateBuilder.js +169 -0
  113. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  114. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  115. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  116. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  117. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  118. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  119. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  120. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  121. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  122. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  123. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  124. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  125. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  126. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  127. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  128. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  129. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  130. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
  131. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  132. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  133. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  134. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  135. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  136. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  137. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  138. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  139. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  140. package/dist/test/unit/utils.d.ts +2 -0
  141. package/dist/test/unit/utils.d.ts.map +1 -0
  142. package/dist/test/unit/utils.js +143 -0
  143. package/dist/tsconfig.tsbuildinfo +1 -0
  144. package/package.json +15 -10
  145. package/.eslintignore +0 -4
  146. package/.mocharc.yml +0 -8
  147. package/CHANGELOG.md +0 -35
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const should_1 = __importDefault(require("should"));
9
+ const sinon_1 = __importDefault(require("sinon"));
10
+ const lib_1 = require("../../../src/lib");
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
13
+ const resources_1 = require("../../resources");
14
+ function createMockTransaction(txData) {
15
+ return {
16
+ id: '123',
17
+ type: sdk_core_1.TransactionType.StakingActivate,
18
+ toBroadcastFormat: () => txData,
19
+ inputs: [],
20
+ outputs: [],
21
+ signature: ['mock-signature'],
22
+ toJson: () => ({
23
+ id: '123',
24
+ type: 'StakingActivate',
25
+ sender: resources_1.accounts.account1.address,
26
+ referenceBlock: '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d',
27
+ blockNumber: 100,
28
+ genesisHash: '0x',
29
+ nonce: 1,
30
+ tip: 0,
31
+ specVersion: 1,
32
+ transactionVersion: 1,
33
+ chainName: 'Polymesh',
34
+ inputs: [],
35
+ outputs: [],
36
+ }),
37
+ };
38
+ }
39
+ describe('Polyx BondExtra Builder', function () {
40
+ let builder;
41
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
42
+ const senderAddress = resources_1.accounts.account1.address;
43
+ const testAmount = '10000';
44
+ beforeEach(() => {
45
+ builder = factory.getBondExtraBuilder();
46
+ });
47
+ describe('setter validation', () => {
48
+ it('should validate staking amount', () => {
49
+ const spy = sinon_1.default.spy(builder, 'validateValue');
50
+ should_1.default.throws(() => builder.amount('-1'), /Value cannot be less than zero/);
51
+ should_1.default.doesNotThrow(() => builder.amount('1000'));
52
+ sinon_1.default.assert.calledTwice(spy);
53
+ });
54
+ });
55
+ describe('Build and Sign', function () {
56
+ it('should build a bondExtra transaction', async () => {
57
+ builder
58
+ .amount(testAmount)
59
+ .sender({ address: senderAddress })
60
+ .validity({ firstValid: 3933, maxDuration: 64 })
61
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
62
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
63
+ const mockTx = createMockTransaction(resources_1.stakingTx.bondExtra.unsigned);
64
+ sinon_1.default.stub(builder, 'build').resolves(mockTx);
65
+ const tx = await builder.build();
66
+ should_1.default.exist(tx);
67
+ should_1.default.equal(builder.getAmount(), testAmount);
68
+ });
69
+ });
70
+ describe('Transaction Validation', function () {
71
+ it('should build, decode, and validate a real bondExtra transaction', () => {
72
+ // Build the transaction with real parameters
73
+ builder
74
+ .amount(testAmount)
75
+ .sender({ address: senderAddress })
76
+ .validity({ firstValid: 3933, maxDuration: 64 })
77
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
78
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
79
+ // Set up material for decoding
80
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
81
+ builder.material(material);
82
+ // Build the actual unsigned transaction
83
+ const unsignedTx = builder['buildTransaction']();
84
+ const registry = builder['_registry'];
85
+ // Decode the actual built transaction
86
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
87
+ metadataRpc: material.metadata,
88
+ registry: registry,
89
+ });
90
+ // Validate the decoded transaction structure
91
+ should_1.default.equal(decodedTx.method.name, 'bondExtra');
92
+ should_1.default.equal(decodedTx.method.pallet, 'staking');
93
+ const bondExtraArgs = decodedTx.method.args;
94
+ should_1.default.equal(bondExtraArgs.maxAdditional, testAmount);
95
+ // validate using the builder's validation method
96
+ should_1.default.doesNotThrow(() => {
97
+ builder.validateDecodedTransaction(decodedTx);
98
+ });
99
+ });
100
+ it('should reject non-bondExtra transactions', () => {
101
+ const mockDecodedTx = {
102
+ method: {
103
+ name: 'bond',
104
+ pallet: 'staking',
105
+ args: {},
106
+ },
107
+ };
108
+ should_1.default.throws(() => {
109
+ builder.validateDecodedTransaction(mockDecodedTx);
110
+ }, /Invalid transaction type/);
111
+ });
112
+ it('should validate amount is positive', () => {
113
+ should_1.default.doesNotThrow(() => {
114
+ builder.validateAmount('2000');
115
+ });
116
+ should_1.default.doesNotThrow(() => {
117
+ builder.validateAmount('500');
118
+ });
119
+ should_1.default.doesNotThrow(() => {
120
+ builder.validateAmount('1');
121
+ });
122
+ should_1.default.doesNotThrow(() => {
123
+ builder.validateAmount('0.0001');
124
+ });
125
+ should_1.default.throws(() => {
126
+ builder.validateAmount('0');
127
+ }, /must be a positive number/);
128
+ should_1.default.throws(() => {
129
+ builder.validateAmount('-10');
130
+ }, /must be a positive number/);
131
+ });
132
+ });
133
+ describe('From Raw Transaction', function () {
134
+ it('should rebuild from real bondExtra transaction', async () => {
135
+ // First build a transaction to get a real raw transaction
136
+ const originalBuilder = factory.getBondExtraBuilder();
137
+ originalBuilder
138
+ .amount(testAmount)
139
+ .sender({ address: senderAddress })
140
+ .validity({ firstValid: 3933, maxDuration: 64 })
141
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
142
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
143
+ // Set up material
144
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
145
+ originalBuilder.material(material);
146
+ // Build the transaction and get the serialized hex
147
+ const tx = await originalBuilder.build();
148
+ const rawTxHex = tx.toBroadcastFormat();
149
+ // Create a new builder and reconstruct from the transaction hex
150
+ const newBuilder = factory.getBondExtraBuilder();
151
+ newBuilder.material(material);
152
+ newBuilder.from(rawTxHex);
153
+ // Verify the reconstructed builder has the same parameters
154
+ should_1.default.equal(newBuilder.getAmount(), testAmount);
155
+ });
156
+ });
157
+ });
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uZEV4dHJhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYm9uZEV4dHJhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBNEY7QUFDNUYsbURBQXVEO0FBQ3ZELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLGVBQWU7UUFDckMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxpQkFBaUI7WUFDdkIsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFDbEMsSUFBSSxPQUF5QixDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sYUFBYSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFFM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtZQUN4QyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFDNUUsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xELGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3BELE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0QsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMscUJBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVqQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtRQUNqQyxFQUFFLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO1lBQ3pFLDZDQUE2QztZQUM3QyxPQUFPO2lCQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQ2xCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELCtCQUErQjtZQUMvQixNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFM0Isd0NBQXdDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXRDLHNDQUFzQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLDJCQUFNLEVBQUMsVUFBVSxFQUFFO2dCQUNuQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzlCLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUMsQ0FBQztZQUVILDZDQUE2QztZQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVqRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQWlDLENBQUM7WUFDekUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RCxpREFBaUQ7WUFDakQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7WUFDbEQsTUFBTSxhQUFhLEdBQTBCO2dCQUMzQyxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLE1BQU07b0JBQ1osTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxFQUFFO2lCQUNUO2FBQ2tDLENBQUM7WUFFdEMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO1lBQzVDLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztZQUVILGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUVILGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztZQUVILGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUVILGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUVoQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtRQUMvQixFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsMERBQTBEO1lBQzFELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RELGVBQWU7aUJBQ1osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0Qsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuQyxtREFBbUQ7WUFDbkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFeEMsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUxQiwyREFBMkQ7WUFDM0QsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29kZWRTaWduaW5nUGF5bG9hZCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBCb25kRXh0cmFCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc3Rha2luZ1R4IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcblxuZnVuY3Rpb24gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHR4RGF0YTogc3RyaW5nKTogUGFydGlhbDxUcmFuc2FjdGlvbj4ge1xuICByZXR1cm4ge1xuICAgIGlkOiAnMTIzJyxcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlLFxuICAgIHRvQnJvYWRjYXN0Rm9ybWF0OiAoKSA9PiB0eERhdGEsXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbXSxcbiAgICBzaWduYXR1cmU6IFsnbW9jay1zaWduYXR1cmUnXSxcbiAgICB0b0pzb246ICgpID0+ICh7XG4gICAgICBpZDogJzEyMycsXG4gICAgICB0eXBlOiAnU3Rha2luZ0FjdGl2YXRlJyxcbiAgICAgIHNlbmRlcjogYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyxcbiAgICAgIHJlZmVyZW5jZUJsb2NrOiAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyxcbiAgICAgIGJsb2NrTnVtYmVyOiAxMDAsXG4gICAgICBnZW5lc2lzSGFzaDogJzB4JyxcbiAgICAgIG5vbmNlOiAxLFxuICAgICAgdGlwOiAwLFxuICAgICAgc3BlY1ZlcnNpb246IDEsXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IDEsXG4gICAgICBjaGFpbk5hbWU6ICdQb2x5bWVzaCcsXG4gICAgICBpbnB1dHM6IFtdLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgfSksXG4gIH07XG59XG5cbmRlc2NyaWJlKCdQb2x5eCBCb25kRXh0cmEgQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJ1aWxkZXI6IEJvbmRFeHRyYUJ1aWxkZXI7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcztcbiAgY29uc3QgdGVzdEFtb3VudCA9ICcxMDAwMCc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0Qm9uZEV4dHJhQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzdGFraW5nIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmFtb3VudCgnLTEnKSwgL1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVyby8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmFtb3VudCgnMTAwMCcpKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgYW5kIFNpZ24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIGJvbmRFeHRyYSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIGNvbnN0IG1vY2tUeCA9IGNyZWF0ZU1vY2tUcmFuc2FjdGlvbihzdGFraW5nVHguYm9uZEV4dHJhLnVuc2lnbmVkKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYnVpbGQsIGRlY29kZSwgYW5kIHZhbGlkYXRlIGEgcmVhbCBib25kRXh0cmEgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAvLyBCdWlsZCB0aGUgdHJhbnNhY3Rpb24gd2l0aCByZWFsIHBhcmFtZXRlcnNcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbCBmb3IgZGVjb2RpbmdcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSBhY3R1YWwgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYnVpbGRlclsnX3JlZ2lzdHJ5J107XG5cbiAgICAgIC8vIERlY29kZSB0aGUgYWN0dWFsIGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodW5zaWduZWRUeCwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBzdHJ1Y3R1cmVcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdib25kRXh0cmEnKTtcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLnBhbGxldCwgJ3N0YWtpbmcnKTtcblxuICAgICAgY29uc3QgYm9uZEV4dHJhQXJncyA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyB7IG1heEFkZGl0aW9uYWw6IHN0cmluZyB9O1xuICAgICAgc2hvdWxkLmVxdWFsKGJvbmRFeHRyYUFyZ3MubWF4QWRkaXRpb25hbCwgdGVzdEFtb3VudCk7XG5cbiAgICAgIC8vIHZhbGlkYXRlIHVzaW5nIHRoZSBidWlsZGVyJ3MgdmFsaWRhdGlvbiBtZXRob2RcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG5vbi1ib25kRXh0cmEgdHJhbnNhY3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWRUeDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBuYW1lOiAnYm9uZCcsXG4gICAgICAgICAgcGFsbGV0OiAnc3Rha2luZycsXG4gICAgICAgICAgYXJnczoge30sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZFR4KTtcbiAgICAgIH0sIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW1vdW50IGlzIHBvc2l0aXZlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVBbW91bnQoJzIwMDAnKTtcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZUFtb3VudCgnNTAwJyk7XG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVBbW91bnQoJzEnKTtcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZUFtb3VudCgnMC4wMDAxJyk7XG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVBbW91bnQoJzAnKTtcbiAgICAgIH0sIC9tdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLyk7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlQW1vdW50KCctMTAnKTtcbiAgICAgIH0sIC9tdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIFJhdyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSByZWFsIGJvbmRFeHRyYSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEZpcnN0IGJ1aWxkIGEgdHJhbnNhY3Rpb24gdG8gZ2V0IGEgcmVhbCByYXcgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0Qm9uZEV4dHJhQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWxcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIGFuZCBnZXQgdGhlIHNlcmlhbGl6ZWQgaGV4XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IG9yaWdpbmFsQnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgcmF3VHhIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgYnVpbGRlciBhbmQgcmVjb25zdHJ1Y3QgZnJvbSB0aGUgdHJhbnNhY3Rpb24gaGV4XG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXRCb25kRXh0cmFCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hexTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hexTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/hexTransferBuilder.ts"],"names":[],"mappings":""}