@bitgo-beta/sdk-coin-vet 1.0.1-beta.42 → 1.0.1-beta.420

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 (133) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +3 -1
  4. package/dist/src/lib/constants.d.ts +24 -1
  5. package/dist/src/lib/constants.d.ts.map +1 -1
  6. package/dist/src/lib/constants.js +26 -3
  7. package/dist/src/lib/iface.d.ts +26 -2
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +15 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +32 -2
  13. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  14. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  15. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  16. package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
  17. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction/burnNftTransaction.js +131 -0
  19. package/dist/src/lib/transaction/claimRewards.d.ts +41 -0
  20. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  21. package/dist/src/lib/transaction/claimRewards.js +210 -0
  22. package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
  23. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  24. package/dist/src/lib/transaction/exitDelegation.js +136 -0
  25. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  26. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  27. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  28. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  29. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  30. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  31. package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
  32. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  33. package/dist/src/lib/transaction/stakingTransaction.js +169 -0
  34. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  35. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  36. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  37. package/dist/src/lib/transaction/transaction.d.ts +18 -28
  38. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  39. package/dist/src/lib/transaction/transaction.js +95 -57
  40. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  41. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  43. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
  44. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
  46. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
  47. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -0
  49. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +58 -0
  50. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +115 -0
  52. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  53. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  55. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  56. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  58. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
  59. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
  61. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  62. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  64. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
  65. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
  66. package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
  67. package/dist/src/lib/transactionBuilderFactory.d.ts +46 -0
  68. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  69. package/dist/src/lib/transactionBuilderFactory.js +97 -1
  70. package/dist/src/lib/types.d.ts +24 -0
  71. package/dist/src/lib/types.d.ts.map +1 -1
  72. package/dist/src/lib/types.js +1 -1
  73. package/dist/src/lib/utils.d.ts +79 -1
  74. package/dist/src/lib/utils.d.ts.map +1 -1
  75. package/dist/src/lib/utils.js +219 -10
  76. package/dist/src/register.d.ts.map +1 -1
  77. package/dist/src/register.js +9 -1
  78. package/dist/src/vet.d.ts +80 -2
  79. package/dist/src/vet.d.ts.map +1 -1
  80. package/dist/src/vet.js +478 -8
  81. package/dist/src/vetNFTCollection.d.ts +18 -0
  82. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  83. package/dist/src/vetNFTCollection.js +52 -0
  84. package/dist/src/vetToken.d.ts +19 -0
  85. package/dist/src/vetToken.d.ts.map +1 -0
  86. package/dist/src/vetToken.js +52 -0
  87. package/dist/test/resources/vet.d.ts +68 -0
  88. package/dist/test/resources/vet.d.ts.map +1 -0
  89. package/dist/test/resources/vet.js +123 -0
  90. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
  91. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  92. package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
  93. package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
  94. package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  95. package/dist/test/transactionBuilder/burnNftBuilder.js +154 -0
  96. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
  97. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  98. package/dist/test/transactionBuilder/claimRewardsBuilder.js +246 -0
  99. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
  100. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  101. package/dist/test/transactionBuilder/exitDelegationBuilder.js +154 -0
  102. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
  103. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  104. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
  105. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
  106. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  107. package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
  108. package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
  109. package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
  110. package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
  111. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
  112. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  113. package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
  114. package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
  115. package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
  116. package/dist/test/transactionBuilder/transferBuilder.js +214 -0
  117. package/dist/test/unit/keyPair.d.ts +2 -0
  118. package/dist/test/unit/keyPair.d.ts.map +1 -0
  119. package/dist/test/unit/keyPair.js +181 -0
  120. package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
  121. package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
  122. package/dist/test/unit/stakingFlowE2E.js +229 -0
  123. package/dist/test/unit/utils.d.ts +2 -0
  124. package/dist/test/unit/utils.d.ts.map +1 -0
  125. package/dist/test/unit/utils.js +106 -0
  126. package/dist/test/unit/vet.d.ts +2 -0
  127. package/dist/test/unit/vet.d.ts.map +1 -0
  128. package/dist/test/unit/vet.js +251 -0
  129. package/dist/tsconfig.tsbuildinfo +1 -0
  130. package/package.json +16 -10
  131. package/.eslintignore +0 -5
  132. package/.mocharc.yml +0 -8
  133. package/CHANGELOG.md +0 -28
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Utils = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
7
+ const sdk_core_1 = require("@vechain/sdk-core");
8
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
9
+ const ethereumjs_util_1 = require("ethereumjs-util");
10
+ const sdk_core_2 = require("@bitgo-beta/sdk-core");
11
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
5
12
  const constants_1 = require("./constants");
6
13
  const keyPair_1 = require("./keyPair");
7
- const sdk_core_2 = require("@vechain/sdk-core");
8
14
  class Utils {
9
15
  isValidAddress(address) {
10
- return /^0x[0-9a-fA-F]{40}$/.test(address);
16
+ return this.isValidHex(address, constants_1.VET_ADDRESS_LENGTH);
11
17
  }
12
18
  isValidBlockId(hash) {
13
- throw new Error('Method not implemented');
19
+ return this.isValidHex(hash, constants_1.VET_BLOCK_ID_LENGTH);
14
20
  }
15
21
  isValidPrivateKey(key) {
16
22
  try {
@@ -41,28 +47,231 @@ class Utils {
41
47
  return regex.test(value);
42
48
  }
43
49
  deserializeTransaction(serializedTransaction) {
44
- const txBytes = sdk_core_2.HexUInt.of(serializedTransaction).bytes;
50
+ const txBytes = sdk_core_1.HexUInt.of(serializedTransaction).bytes;
45
51
  try {
46
- return sdk_core_2.Transaction.decode(txBytes, false);
52
+ return sdk_core_1.Transaction.decode(txBytes, false);
47
53
  }
48
54
  catch (err) {
49
55
  if (err.message?.includes('Expected 9 items, but got 10')) {
50
56
  // Likely signed, so retry with isSigned = true
51
- return sdk_core_2.Transaction.decode(txBytes, true);
57
+ return sdk_core_1.Transaction.decode(txBytes, true);
52
58
  }
53
59
  throw err;
54
60
  }
55
61
  }
56
62
  getTransactionTypeFromClause(clauses) {
57
63
  if (clauses[0].data === '0x') {
58
- return sdk_core_1.TransactionType.Send;
64
+ return sdk_core_2.TransactionType.Send;
65
+ }
66
+ else if (clauses[0].data.startsWith(abstract_eth_1.v4CreateForwarderMethodId)) {
67
+ return sdk_core_2.TransactionType.AddressInitialization;
68
+ }
69
+ else if (clauses[0].data.startsWith(abstract_eth_1.flushForwarderTokensMethodIdV4)) {
70
+ return sdk_core_2.TransactionType.FlushTokens;
71
+ }
72
+ else if (clauses[0].data.startsWith(constants_1.TRANSFER_TOKEN_METHOD_ID)) {
73
+ return sdk_core_2.TransactionType.SendToken;
74
+ }
75
+ else if (clauses[0].data.startsWith(constants_1.STAKING_METHOD_ID)) {
76
+ return sdk_core_2.TransactionType.ContractCall;
77
+ }
78
+ else if (clauses[0].data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
79
+ return sdk_core_2.TransactionType.StakingUnlock;
80
+ }
81
+ else if (clauses[0].data.startsWith(constants_1.BURN_NFT_METHOD_ID)) {
82
+ return sdk_core_2.TransactionType.StakingWithdraw;
83
+ }
84
+ else if (clauses[0].data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID) ||
85
+ clauses[0].data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID)) {
86
+ return sdk_core_2.TransactionType.StakingClaim;
87
+ }
88
+ else if (clauses[0].data.startsWith(constants_1.TRANSFER_NFT_METHOD_ID)) {
89
+ return sdk_core_2.TransactionType.SendNFT;
59
90
  }
60
91
  else {
61
- return sdk_core_1.TransactionType.SendToken;
92
+ return sdk_core_2.TransactionType.SendToken;
93
+ }
94
+ }
95
+ getTransferTokenData(toAddress, amountWei) {
96
+ const methodName = 'transfer';
97
+ const types = ['address', 'uint256'];
98
+ const params = [toAddress, new ethereumjs_util_1.BN(amountWei)];
99
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
100
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
101
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
102
+ }
103
+ getTransferNFTData(from, to, tokenId) {
104
+ const methodName = 'transferFrom';
105
+ const types = ['address', 'address', 'uint256'];
106
+ const params = [from, to, new ethereumjs_util_1.BN(tokenId)];
107
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
108
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
109
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
110
+ }
111
+ /**
112
+ * Decodes staking transaction data to extract levelId and autorenew
113
+ *
114
+ * @param {string} data - The encoded transaction data
115
+ * @returns {object} - Object containing levelId and autorenew
116
+ */
117
+ decodeStakingData(data) {
118
+ try {
119
+ const parameters = data.slice(10);
120
+ // Decode using ethereumjs-abi directly
121
+ const decoded = ethereumjs_abi_1.default.rawDecode(['uint8', 'bool'], Buffer.from(parameters, 'hex'));
122
+ return {
123
+ levelId: Number(decoded[0]),
124
+ autorenew: Boolean(decoded[1]),
125
+ };
126
+ }
127
+ catch (error) {
128
+ throw new Error(`Failed to decode staking data: ${error.message}`);
129
+ }
130
+ }
131
+ decodeTransferTokenData(data) {
132
+ const [address, amount] = (0, abstract_eth_1.getRawDecoded)(['address', 'uint256'], (0, abstract_eth_1.getBufferedByteCode)(constants_1.TRANSFER_TOKEN_METHOD_ID, data));
133
+ const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(address.toString()).toLowerCase();
134
+ return {
135
+ address: recipientAddress,
136
+ amount: amount.toString(),
137
+ };
138
+ }
139
+ decodeTransferNFTData(data) {
140
+ const [from, to, tokenIdBN] = (0, abstract_eth_1.getRawDecoded)(['address', 'address', 'uint256'], (0, abstract_eth_1.getBufferedByteCode)(constants_1.TRANSFER_NFT_METHOD_ID, data));
141
+ const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(to.toString()).toLowerCase();
142
+ const recipient = {
143
+ address: recipientAddress,
144
+ amount: '1',
145
+ };
146
+ const sender = (0, ethereumjs_util_1.addHexPrefix)(from.toString()).toLowerCase();
147
+ const tokenId = tokenIdBN.toString();
148
+ return {
149
+ recipients: [recipient],
150
+ sender,
151
+ tokenId,
152
+ };
153
+ }
154
+ /**
155
+ * Decodes claim rewards transaction data to extract tokenId
156
+ *
157
+ * @param {string} data - The encoded claim rewards method call data
158
+ * @returns {string} - The tokenId as a string
159
+ */
160
+ decodeClaimRewardsData(data) {
161
+ try {
162
+ // Remove method ID (first 10 characters: '0x' + 4-byte method ID)
163
+ const methodData = data.slice(10);
164
+ // Extract tokenId from first 32-byte slot
165
+ // The tokenId is a uint256, so we take the full 64 hex characters
166
+ const tokenIdHex = methodData.slice(0, 64);
167
+ // Convert hex to decimal string
168
+ return BigInt('0x' + tokenIdHex).toString();
169
+ }
170
+ catch (error) {
171
+ throw new Error(`Failed to decode claim rewards data: ${error.message}`);
172
+ }
173
+ }
174
+ /**
175
+ * Decodes exit delegation transaction data to extract tokenId
176
+ *
177
+ * @param {string} data - The encoded exit delegation method call data
178
+ * @returns {string} - The tokenId as a string
179
+ */
180
+ decodeExitDelegationData(data) {
181
+ try {
182
+ if (!data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
183
+ throw new Error('Invalid exit delegation method data');
184
+ }
185
+ const tokenIdHex = data.slice(constants_1.EXIT_DELEGATION_METHOD_ID.length);
186
+ // Convert hex to decimal (matching original parseInt logic)
187
+ return parseInt(tokenIdHex, 16).toString();
188
+ }
189
+ catch (error) {
190
+ throw new Error(`Failed to decode exit delegation data: ${error.message}`);
191
+ }
192
+ }
193
+ /**
194
+ * Decodes burn NFT transaction data to extract tokenId
195
+ *
196
+ * @param {string} data - The encoded burn NFT method call data
197
+ * @returns {string} - The tokenId as a string
198
+ */
199
+ decodeBurnNftData(data) {
200
+ try {
201
+ if (!data.startsWith(constants_1.BURN_NFT_METHOD_ID)) {
202
+ throw new Error('Invalid burn NFT method data');
203
+ }
204
+ const tokenIdHex = data.slice(constants_1.BURN_NFT_METHOD_ID.length);
205
+ // Convert hex to decimal (matching original parseInt logic)
206
+ return parseInt(tokenIdHex, 16).toString();
207
+ }
208
+ catch (error) {
209
+ throw new Error(`Failed to decode burn NFT data: ${error.message}`);
210
+ }
211
+ }
212
+ /**
213
+ * Get the network-appropriate delegation contract address
214
+ * @param {CoinConfig} coinConfig - The coin configuration object
215
+ * @returns {string} The delegation contract address for the network
216
+ */
217
+ getDefaultDelegationAddress(coinConfig) {
218
+ const isTestnet = coinConfig.network.type === 'testnet';
219
+ return isTestnet ? constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET : constants_1.STARGATE_DELEGATION_ADDRESS;
220
+ }
221
+ /**
222
+ * Get the network-appropriate staking contract address
223
+ * @param {CoinConfig} coinConfig - The coin configuration object
224
+ * @returns {string} The staking contract address for the network
225
+ */
226
+ getDefaultStakingAddress(coinConfig) {
227
+ const isTestnet = coinConfig.network.type === 'testnet';
228
+ return isTestnet ? constants_1.STARGATE_NFT_ADDRESS_TESTNET : constants_1.STARGATE_NFT_ADDRESS;
229
+ }
230
+ /**
231
+ * Check if an address is a valid delegation contract address for any network
232
+ * @param {string} address - The address to check
233
+ * @returns {boolean} True if the address is a delegation contract address
234
+ */
235
+ isDelegationContractAddress(address) {
236
+ const lowerAddress = address.toLowerCase();
237
+ return (lowerAddress === constants_1.STARGATE_DELEGATION_ADDRESS.toLowerCase() ||
238
+ lowerAddress === constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET.toLowerCase());
239
+ }
240
+ /**
241
+ * Check if an address is a valid NFT contract address for any network
242
+ * @param {string} address - The address to check
243
+ * @returns {boolean} True if the address is an NFT contract address
244
+ */
245
+ isNftContractAddress(address) {
246
+ const lowerAddress = address.toLowerCase();
247
+ return (lowerAddress === constants_1.STARGATE_NFT_ADDRESS.toLowerCase() || lowerAddress === constants_1.STARGATE_NFT_ADDRESS_TESTNET.toLowerCase());
248
+ }
249
+ /**
250
+ * Validate that a contract address matches the expected NFT/staking contract for the network
251
+ * @param {string} address - The contract address to validate
252
+ * @param {CoinConfig} coinConfig - The coin configuration object
253
+ * @throws {Error} If the address doesn't match the expected NFT contract address
254
+ */
255
+ validateStakingContractAddress(address, coinConfig) {
256
+ const expectedAddress = this.getDefaultStakingAddress(coinConfig);
257
+ if (address.toLowerCase() !== expectedAddress.toLowerCase()) {
258
+ throw new Error(`Invalid staking contract address. Expected ${expectedAddress} for ${coinConfig.network.type}, got ${address}`);
259
+ }
260
+ }
261
+ /**
262
+ * Validate that a contract address matches the expected delegation contract for the network
263
+ * @param {string} address - The contract address to validate
264
+ * @param {CoinConfig} coinConfig - The coin configuration object
265
+ * @throws {Error} If the address doesn't match the expected delegation contract address
266
+ */
267
+ validateDelegationContractAddress(address, coinConfig) {
268
+ const expectedAddress = this.getDefaultDelegationAddress(coinConfig);
269
+ if (address.toLowerCase() !== expectedAddress.toLowerCase()) {
270
+ throw new Error(`Invalid delegation contract address. Expected ${expectedAddress} for ${coinConfig.network.type}, got ${address}`);
62
271
  }
63
272
  }
64
273
  }
65
274
  exports.Utils = Utils;
66
275
  const utils = new Utils();
67
276
  exports.default = utils;
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUNsRSwyQ0FBd0Q7QUFDeEQsdUNBQW9DO0FBQ3BDLGdEQUE0RTtBQUU1RSxNQUFhLEtBQUs7SUFDaEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUM7WUFDSCxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxxQ0FBeUIsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsdUJBQXVCLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxxQkFBNkI7UUFDbEQsTUFBTSxPQUFPLEdBQUcsa0JBQU8sQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxzQkFBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQztnQkFDMUQsK0NBQStDO2dCQUMvQyxPQUFPLHNCQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLE9BQTRCO1FBQ3ZELElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixPQUFPLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTywwQkFBZSxDQUFDLFNBQVMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNURELHNCQTREQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVV0aWxzLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBWRVRfVFJBTlNBQ1RJT05fSURfTEVOR1RIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBIZXhVSW50LCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjB4WzAtOWEtZkEtRl17NDB9JC8udGVzdChhZGRyZXNzKTtcbiAgfVxuXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHViOiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleCh0eElkLCBWRVRfVFJBTlNBQ1RJT05fSURfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRIZXgodmFsdWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4oMHh8MFgpW2EtZkEtRjAtOV17JHtsZW5ndGh9fSRgKTtcbiAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XG4gIH1cblxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4Qnl0ZXMgPSBIZXhVSW50Lm9mKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbikuYnl0ZXM7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvbi5kZWNvZGUodHhCeXRlcywgZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5tZXNzYWdlPy5pbmNsdWRlcygnRXhwZWN0ZWQgOSBpdGVtcywgYnV0IGdvdCAxMCcpKSB7XG4gICAgICAgIC8vIExpa2VseSBzaWduZWQsIHNvIHJldHJ5IHdpdGggaXNTaWduZWQgPSB0cnVlXG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvbi5kZWNvZGUodHhCeXRlcywgdHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHJhbnNhY3Rpb25UeXBlRnJvbUNsYXVzZShjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICBpZiAoY2xhdXNlc1swXS5kYXRhID09PSAnMHgnKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUE0RTtBQUM1RSxvRUFBeUM7QUFDekMscURBQW1EO0FBQ25ELG1EQUF3RjtBQUN4RiwyREFLa0M7QUFDbEMsMkNBZXFCO0FBQ3JCLHVDQUFvQztBQUdwQyxNQUFhLEtBQUs7SUFDaEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSw4QkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLCtCQUFtQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFD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QVMsT0FBTyxFQUFFLENBQy9HLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUNBQWlDLENBQUMsT0FBZSxFQUFFLFVBQWdDO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxlQUFlLFFBQVEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsT0FBTyxFQUFFLENBQ2xILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdlNELHNCQXVTQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGV4VUludCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCwgQk4gfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgdjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCxcbiAgZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0LFxuICBnZXRSYXdEZWNvZGVkLFxuICBnZXRCdWZmZXJlZEJ5dGVDb2RlLFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHtcbiAgVFJBTlNGRVJfVE9LRU5fTUVUSE9EX0lELFxuICBTVEFLSU5HX01FVEhPRF9JRCxcbiAgRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCxcbiAgQlVSTl9ORlRfTUVUSE9EX0lELFxuICBWRVRfQUREUkVTU19MRU5HVEgsXG4gIFZFVF9CTE9DS19JRF9MRU5HVEgsXG4gIFZFVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgsXG4gIFRSQU5TRkVSX05GVF9NRVRIT0RfSUQsXG4gIENMQUlNX0JBU0VfUkVXQVJEU19NRVRIT0RfSUQsXG4gIENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQsXG4gIFNUQVJHQVRFX05GVF9BRERSRVNTLFxuICBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULFxuICBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1MsXG4gIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChhZGRyZXNzLCBWRVRfQUREUkVTU19MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChoYXNoLCBWRVRfQkxPQ0tfSURfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1Yjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgodHhJZCwgVkVUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkSGV4KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeKDB4fDBYKVthLWZBLUYwLTldeyR7bGVuZ3RofX0kYCk7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gSGV4VUludC5vZihzZXJpYWxpemVkVHJhbnNhY3Rpb24pLmJ5dGVzO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoJ0V4cGVjdGVkIDkgaXRlbXMsIGJ1dCBnb3QgMTAnKSkge1xuICAgICAgICAvLyBMaWtlbHkgc2lnbmVkLCBzbyByZXRyeSB3aXRoIGlzU2lnbmVkID0gdHJ1ZVxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIHRydWUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21DbGF1c2UoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgaWYgKGNsYXVzZXNbMF0uZGF0YSA9PT0gJzB4Jykge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgodjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0KSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VucztcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoU1RBS0lOR19NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChCVVJOX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCkgfHxcbiAgICAgIGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zZmVyVG9rZW5EYXRhKHRvQWRkcmVzczogc3RyaW5nLCBhbW91bnRXZWk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICd0cmFuc2Zlcic7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0b0FkZHJlc3MsIG5ldyBCTihhbW91bnRXZWkpXTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgZ2V0VHJhbnNmZXJORlREYXRhKGZyb206IHN0cmluZywgdG86IHN0cmluZywgdG9rZW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3RyYW5zZmVyRnJvbSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2J107XG4gICAgY29uc3QgcGFyYW1zID0gW2Zyb20sIHRvLCBuZXcgQk4odG9rZW5JZCldO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBzdGFraW5nIHRyYW5zYWN0aW9uIGRhdGEgdG8gZXh0cmFjdCBsZXZlbElkIGFuZCBhdXRvcmVuZXdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gT2JqZWN0IGNvbnRhaW5pbmcgbGV2ZWxJZCBhbmQgYXV0b3JlbmV3XG4gICAqL1xuICBkZWNvZGVTdGFraW5nRGF0YShkYXRhOiBzdHJpbmcpOiB7IGxldmVsSWQ6IG51bWJlcjsgYXV0b3JlbmV3OiBib29sZWFuIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZGF0YS5zbGljZSgxMCk7XG5cbiAgICAgIC8vIERlY29kZSB1c2luZyBldGhlcmV1bWpzLWFiaSBkaXJlY3RseVxuICAgICAgY29uc3QgZGVjb2RlZCA9IEV0aGVyZXVtQWJpLnJhd0RlY29kZShbJ3VpbnQ4JywgJ2Jvb2wnXSwgQnVmZmVyLmZyb20ocGFyYW1ldGVycywgJ2hleCcpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGV2ZWxJZDogTnVtYmVyKGRlY29kZWRbMF0pLFxuICAgICAgICBhdXRvcmVuZXc6IEJvb2xlYW4oZGVjb2RlZFsxXSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgc3Rha2luZyBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJUb2tlbkRhdGEoZGF0YTogc3RyaW5nKTogVHJhbnNhY3Rpb25SZWNpcGllbnQge1xuICAgIGNvbnN0IFthZGRyZXNzLCBhbW91bnRdID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICd1aW50MjU2J10sXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgoYWRkcmVzcy50b1N0cmluZygpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgZGVjb2RlVHJhbnNmZXJORlREYXRhKGRhdGE6IHN0cmluZyk6IHtcbiAgICByZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIHNlbmRlcjogc3RyaW5nO1xuICAgIHRva2VuSWQ6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgW2Zyb20sIHRvLCB0b2tlbklkQk5dID0gZ2V0UmF3RGVjb2RlZChcbiAgICAgIFsnYWRkcmVzcycsICdhZGRyZXNzJywgJ3VpbnQyNTYnXSxcbiAgICAgIGdldEJ1ZmZlcmVkQnl0ZUNvZGUoVFJBTlNGRVJfTkZUX01FVEhPRF9JRCwgZGF0YSlcbiAgICApO1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBhZGRIZXhQcmVmaXgodG8udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCByZWNpcGllbnQ6IFRyYW5zYWN0aW9uUmVjaXBpZW50ID0ge1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgIGFtb3VudDogJzEnLFxuICAgIH07XG4gICAgY29uc3Qgc2VuZGVyID0gYWRkSGV4UHJlZml4KGZyb20udG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB0b2tlbklkID0gdG9rZW5JZEJOLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY2lwaWVudHM6IFtyZWNpcGllbnRdLFxuICAgICAgc2VuZGVyLFxuICAgICAgdG9rZW5JZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGNsYWltIHJld2FyZHMgbWV0aG9kIGNhbGwgZGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0b2tlbklkIGFzIGEgc3RyaW5nXG4gICAqL1xuICBkZWNvZGVDbGFpbVJld2FyZHNEYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlbW92ZSBtZXRob2QgSUQgKGZpcnN0IDEwIGNoYXJhY3RlcnM6ICcweCcgKyA0LWJ5dGUgbWV0aG9kIElEKVxuICAgICAgY29uc3QgbWV0aG9kRGF0YSA9IGRhdGEuc2xpY2UoMTApO1xuXG4gICAgICAvLyBFeHRyYWN0IHRva2VuSWQgZnJvbSBmaXJzdCAzMi1ieXRlIHNsb3RcbiAgICAgIC8vIFRoZSB0b2tlbklkIGlzIGEgdWludDI1Niwgc28gd2UgdGFrZSB0aGUgZnVsbCA2NCBoZXggY2hhcmFjdGVyc1xuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IG1ldGhvZERhdGEuc2xpY2UoMCwgNjQpO1xuXG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIHN0cmluZ1xuICAgICAgcmV0dXJuIEJpZ0ludCgnMHgnICsgdG9rZW5JZEhleCkudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGNsYWltIHJld2FyZHMgZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGV4aXQgZGVsZWdhdGlvbiBtZXRob2QgY2FsbCBkYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRva2VuSWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIGRlY29kZUV4aXREZWxlZ2F0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZXhpdCBkZWxlZ2F0aW9uIG1ldGhvZCBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuSWRIZXggPSBkYXRhLnNsaWNlKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQubGVuZ3RoKTtcbiAgICAgIC8vIENvbnZlcnQgaGV4IHRvIGRlY2ltYWwgKG1hdGNoaW5nIG9yaWdpbmFsIHBhcnNlSW50IGxvZ2ljKVxuICAgICAgcmV0dXJuIHBhcnNlSW50KHRva2VuSWRIZXgsIDE2KS50b1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgZXhpdCBkZWxlZ2F0aW9uIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBidXJuIE5GVCB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBlbmNvZGVkIGJ1cm4gTkZUIG1ldGhvZCBjYWxsIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdG9rZW5JZCBhcyBhIHN0cmluZ1xuICAgKi9cbiAgZGVjb2RlQnVybk5mdERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoQlVSTl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYnVybiBORlQgbWV0aG9kIGRhdGEnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW5JZEhleCA9IGRhdGEuc2xpY2UoQlVSTl9ORlRfTUVUSE9EX0lELmxlbmd0aCk7XG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIChtYXRjaGluZyBvcmlnaW5hbCBwYXJzZUludCBsb2dpYylcbiAgICAgIHJldHVybiBwYXJzZUludCh0b2tlbklkSGV4LCAxNikudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGJ1cm4gTkZUIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuZXR3b3JrLWFwcHJvcHJpYXRlIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgbmV0d29ya1xuICAgKi9cbiAgZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogc3RyaW5nIHtcbiAgICBjb25zdCBpc1Rlc3RuZXQgPSBjb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gJ3Rlc3RuZXQnO1xuICAgIHJldHVybiBpc1Rlc3RuZXQgPyBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCA6IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5ldHdvcmstYXBwcm9wcmlhdGUgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrXG4gICAqL1xuICBnZXREZWZhdWx0U3Rha2luZ0FkZHJlc3MoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzVGVzdG5ldCA9IGNvaW5Db25maWcubmV0d29yay50eXBlID09PSAndGVzdG5ldCc7XG4gICAgcmV0dXJuIGlzVGVzdG5ldCA/IFNUQVJHQVRFX05GVF9BRERSRVNTX1RFU1RORVQgOiBTVEFSR0FURV9ORlRfQUREUkVTUztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIGEgdmFsaWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGZvciBhbnkgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICBpc0RlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgYSB2YWxpZCBORlQgY29udHJhY3QgYWRkcmVzcyBmb3IgYW55IG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhbiBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgaXNOZnRDb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJBZGRyZXNzID0gYWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlckFkZHJlc3MgPT09IFNUQVJHQVRFX05GVF9BRERSRVNTLnRvTG93ZXJDYXNlKCkgfHwgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgYSBjb250cmFjdCBhZGRyZXNzIG1hdGNoZXMgdGhlIGV4cGVjdGVkIE5GVC9zdGFraW5nIGNvbnRyYWN0IGZvciB0aGUgbmV0d29ya1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBjb250cmFjdCBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYWRkcmVzcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBORlQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgdmFsaWRhdGVTdGFraW5nQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSB0aGlzLmdldERlZmF1bHRTdGFraW5nQWRkcmVzcyhjb2luQ29uZmlnKTtcbiAgICBpZiAoYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSBleHBlY3RlZEFkZHJlc3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MuIEV4cGVjdGVkICR7ZXhwZWN0ZWRBZGRyZXNzfSBmb3IgJHtjb2luQ29uZmlnLm5ldHdvcmsudHlwZX0sIGdvdCAke2FkZHJlc3N9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhIGNvbnRyYWN0IGFkZHJlc3MgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBmb3IgdGhlIG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGFkZHJlc3MgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqL1xuICB2YWxpZGF0ZURlbGVnYXRpb25Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IHZvaWQge1xuICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IHRoaXMuZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKGNvaW5Db25maWcpO1xuICAgIGlmIChhZGRyZXNzLnRvTG93ZXJDYXNlKCkgIT09IGV4cGVjdGVkQWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzcy4gRXhwZWN0ZWQgJHtleHBlY3RlZEFkZHJlc3N9IGZvciAke2NvaW5Db25maWcubmV0d29yay50eXBlfSwgZ290ICR7YWRkcmVzc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IASzC,CAAC"}
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.register = void 0;
4
4
  const vet_1 = require("./vet");
5
5
  const tvet_1 = require("./tvet");
6
+ const vetToken_1 = require("./vetToken");
7
+ const vetNFTCollection_1 = require("./vetNFTCollection");
6
8
  const register = (sdk) => {
7
9
  sdk.register('vet', vet_1.Vet.createInstance);
8
10
  sdk.register('tvet', tvet_1.Tvet.createInstance);
11
+ vetToken_1.VetToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
12
+ sdk.register(name, coinConstructor);
13
+ });
14
+ vetNFTCollection_1.VetNFTCollection.createNFTCollectionConstructors().forEach(({ name, coinConstructor }) => {
15
+ sdk.register(name, coinConstructor);
16
+ });
9
17
  };
10
18
  exports.register = register;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVmV0IH0gZnJvbSAnLi92ZXQnO1xuaW1wb3J0IHsgVHZldCB9IGZyb20gJy4vdHZldCc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlciA9IChzZGs6IEJpdEdvQmFzZSk6IHZvaWQgPT4ge1xuICBzZGsucmVnaXN0ZXIoJ3ZldCcsIFZldC5jcmVhdGVJbnN0YW5jZSk7XG4gIHNkay5yZWdpc3RlcigndHZldCcsIFR2ZXQuY3JlYXRlSW5zdGFuY2UpO1xufTtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUM5Qix5Q0FBc0M7QUFDdEMseURBQXNEO0FBRS9DLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYyxFQUFRLEVBQUU7SUFDL0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxtQkFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtRQUN2RSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNILG1DQUFnQixDQUFDLCtCQUErQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtRQUN2RixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQVRXLFFBQUEsUUFBUSxZQVNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFZldCB9IGZyb20gJy4vdmV0JztcbmltcG9ydCB7IFR2ZXQgfSBmcm9tICcuL3R2ZXQnO1xuaW1wb3J0IHsgVmV0VG9rZW4gfSBmcm9tICcuL3ZldFRva2VuJztcbmltcG9ydCB7IFZldE5GVENvbGxlY3Rpb24gfSBmcm9tICcuL3ZldE5GVENvbGxlY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd2ZXQnLCBWZXQuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R2ZXQnLCBUdmV0LmNyZWF0ZUluc3RhbmNlKTtcbiAgVmV0VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xuICBWZXRORlRDb2xsZWN0aW9uLmNyZWF0ZU5GVENvbGxlY3Rpb25Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
package/dist/src/vet.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { AuditDecryptedKeyParams, BaseCoin, BaseTransaction, BitGoBase, KeyPair, MPCAlgorithm, MultisigType, ParsedTransaction, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
1
+ import BigNumber from 'bignumber.js';
2
+ import { TransactionClause } from '@vechain/sdk-core';
3
+ import { AuditDecryptedKeyParams, BaseCoin, BaseTransaction, BitGoBase, BuildNftTransferDataOptions, KeyPair, MPCAlgorithm, MultisigType, ParsedTransaction, SignedTransaction, SignTransactionOptions, TokenTransferRecipientParams, VerifyAddressOptions, VerifyTransactionOptions, BaseBroadcastTransactionOptions, BaseBroadcastTransactionResult } from '@bitgo-beta/sdk-core';
2
4
  import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
5
+ import { Hash } from 'crypto';
3
6
  import { TransactionBuilderFactory } from './lib';
4
- import { ExplainTransactionOptions, VetParseTransactionOptions } from './lib/types';
7
+ import { ExplainTransactionOptions, RecoverOptions, RecoveryTransaction, UnsignedSweepRecoveryTransaction, VetParseTransactionOptions } from './lib/types';
5
8
  import { VetTransactionExplanation } from './lib/iface';
6
9
  /**
7
10
  * Full Name: Vechain
@@ -19,6 +22,7 @@ export declare class Vet extends BaseCoin {
19
22
  getChain(): string;
20
23
  getFamily(): string;
21
24
  getFullName(): string;
25
+ valuelessTransferAllowed(): boolean;
22
26
  /** @inheritDoc */
23
27
  supportsTss(): boolean;
24
28
  /** inherited doc */
@@ -41,5 +45,79 @@ export declare class Vet extends BaseCoin {
41
45
  protected rebuildTransaction(txHex: string): Promise<BaseTransaction>;
42
46
  /** @inheritDoc */
43
47
  auditDecryptedKey(params: AuditDecryptedKeyParams): void;
48
+ /**
49
+ * Function to get coin specific hash function used to generate transaction digests.
50
+ * @returns {@see Hash} hash function if implemented, otherwise throws exception
51
+ */
52
+ getHashFunction(): Hash;
53
+ buildNftTransferData(params: BuildNftTransferDataOptions): TokenTransferRecipientParams;
54
+ /**
55
+ * Broadcasts a signed transaction to the VeChain network.
56
+ *
57
+ * @param {BaseBroadcastTransactionOptions} payload - The payload containing the serialized signed transaction.
58
+ * @param {string} payload.serializedSignedTransaction - The serialized signed transaction to broadcast.
59
+ * @returns {Promise<BaseBroadcastTransactionResult>} A promise that resolves to an empty object if the broadcast is successful.
60
+ * @throws {Error} If the broadcast fails, an error is thrown with the failure message.
61
+ */
62
+ broadcastTransaction(payload: BaseBroadcastTransactionOptions): Promise<BaseBroadcastTransactionResult>;
63
+ /** @inheritDoc */
64
+ recover(params: RecoverOptions): Promise<RecoveryTransaction | UnsignedSweepRecoveryTransaction>;
65
+ /**
66
+ * Returns the public node URL for the VeChain network.
67
+ * @returns {string} The URL of the public VeChain node.
68
+ */
69
+ private getPublicNodeUrl;
70
+ /**
71
+ * Calculates the transaction fee based on the estimated gas limit and fee estimate data.
72
+ * @param {FeeEstimateData} feeEstimateData - The fee estimate data.
73
+ * @param {BigNumber} estimatedGasLimit - The estimated gas limit for the transaction.
74
+ * @returns {BigNumber} The calculated transaction fee.
75
+ */
76
+ private calculateFee;
77
+ /**
78
+ * Ensures that the given address has sufficient VTHO balance to cover the transaction fee.
79
+ * @param {string} baseAddress - The address to check for VTHO balance.
80
+ * @param {BigNumber} requiredGasUnits - The required gas units for the transaction.
81
+ * @throws {Error} If the VTHO balance is insufficient or if there's an error checking the balance.
82
+ */
83
+ ensureVthoBalanceForFee(baseAddress: string, requiredGasUnits: BigNumber): Promise<void>;
84
+ /**
85
+ * Fetches the balance for a given Vechain address.
86
+ *
87
+ * @param address The Vechain address (e.g., "0x...") to check.
88
+ * @param tokenContractAddress (Optional) The contract address of a VIP180 token.
89
+ * @returns A Promise that resolves to a BigNumber instance of the balance.
90
+ */
91
+ getBalance(address: string, tokenContractAddress?: string): Promise<BigNumber>;
92
+ /**
93
+ * Retrieves the block reference from the VeChain network.
94
+ * @returns {Promise<string>} A promise that resolves to the block reference string.
95
+ * @throws {Error} If there's an error fetching the block reference or if the response is invalid.
96
+ */
97
+ getBlockRef(): Promise<string>;
98
+ /**
99
+ * Generates a random nonce for use in transactions.
100
+ * @returns {string} A hexadecimal string representing the random nonce.
101
+ */
102
+ getRandomNonce(): string;
103
+ /**
104
+ * Estimates the gas required for a set of transaction clauses.
105
+ * @param {TransactionClause[]} clauses - An array of transaction clauses.
106
+ * @param {string} caller - The address of the transaction caller.
107
+ * @returns {Promise<BigNumber>} A promise that resolves to the estimated gas amount.
108
+ * @throws {Error} If the clauses are invalid, the caller is not provided, or if there's an error in gas estimation.
109
+ */
110
+ estimateGas(clauses: TransactionClause[], caller: string): Promise<BigNumber>;
111
+ /**
112
+ * Builds a recovery transaction for the given address.
113
+ * @param {Object} buildParams - The parameters for building the recovery transaction.
114
+ * @param {string} buildParams.baseAddress - The address to recover funds from.
115
+ * @param {RecoverOptions} buildParams.params - The recovery options.
116
+ * @returns {Promise<Transaction>} A promise that resolves to the built recovery transaction.
117
+ * @throws {Error} If there's no VET balance to recover or if there's an error building the transaction.
118
+ */
119
+ private buildRecoveryTransaction;
120
+ recoverTokens(params: RecoverOptions): Promise<RecoveryTransaction | UnsignedSweepRecoveryTransaction>;
121
+ private buildTokenRecoveryTransaction;
44
122
  }
45
123
  //# sourceMappingURL=vet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/vet.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,SAAS,EAET,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;GAIG;AACH,qBAAa,GAAI,SAAQ,QAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACI,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,eAAe,IAAI,YAAY;IAI/B,2BAA2B,IAAI,OAAO;IAIhC,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCrE,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBtF;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAU3G,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAevC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E,SAAS,CAAC,mBAAmB,IAAI,yBAAyB;cAI1C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAU3E,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;CAIzD"}
1
+ {"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/vet.ts"],"names":[],"mappings":"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"}