@bitgo-beta/sdk-coin-sui 3.0.3-beta.182 → 3.0.3-beta.1821

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 (196) 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 +7 -2
  4. package/dist/src/lib/compareTransactionBlocks.js +2 -3
  5. package/dist/src/lib/constants.d.ts +9 -2
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +18 -2
  8. package/dist/src/lib/customTransaction.js +3 -3
  9. package/dist/src/lib/customTransactionBuilder.js +5 -5
  10. package/dist/src/lib/iface.d.ts +80 -12
  11. package/dist/src/lib/iface.d.ts.map +1 -1
  12. package/dist/src/lib/iface.js +34 -5
  13. package/dist/src/lib/index.d.ts +6 -0
  14. package/dist/src/lib/index.d.ts.map +1 -1
  15. package/dist/src/lib/index.js +36 -10
  16. package/dist/src/lib/keyPair.js +24 -10
  17. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +64 -11
  18. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  19. package/dist/src/lib/mystenlab/builder/Inputs.js +63 -19
  20. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +88 -355
  21. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  22. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +44 -25
  23. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +152 -77
  24. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  25. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +54 -44
  26. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  27. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  28. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  29. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  30. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  31. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  32. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  33. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  34. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  35. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  36. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  37. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  38. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  39. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  40. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  41. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  42. package/dist/src/lib/mystenlab/framework/sui-system-state.js +2 -2
  43. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  44. package/dist/src/lib/mystenlab/types/coin.d.ts +13 -11
  45. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  46. package/dist/src/lib/mystenlab/types/coin.js +20 -19
  47. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  48. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  49. package/dist/src/lib/mystenlab/types/common.js +22 -22
  50. package/dist/src/lib/mystenlab/types/events.d.ts +15 -15
  51. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  52. package/dist/src/lib/mystenlab/types/events.js +17 -17
  53. package/dist/src/lib/mystenlab/types/index.js +6 -2
  54. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  55. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  56. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  57. package/dist/src/lib/mystenlab/types/objects.d.ts +51 -51
  58. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  59. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  60. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  61. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  62. package/dist/src/lib/mystenlab/types/option.js +2 -3
  63. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +55 -29
  64. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  65. package/dist/src/lib/mystenlab/types/sui-bcs.js +29 -5
  66. package/dist/src/lib/mystenlab/types/transactions.d.ts +625 -625
  67. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  68. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  69. package/dist/src/lib/mystenlab/types/validator.d.ts +13 -13
  70. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  71. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  72. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  73. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  74. package/dist/src/lib/resources/walrusConfig.js +37 -0
  75. package/dist/src/lib/rpcClient.d.ts +5 -0
  76. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  77. package/dist/src/lib/rpcClient.js +74 -0
  78. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  79. package/dist/src/lib/stakingBuilder.js +23 -7
  80. package/dist/src/lib/stakingTransaction.d.ts +0 -1
  81. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  82. package/dist/src/lib/stakingTransaction.js +26 -15
  83. package/dist/src/lib/tokenTransferBuilder.d.ts +66 -0
  84. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  85. package/dist/src/lib/tokenTransferBuilder.js +202 -0
  86. package/dist/src/lib/tokenTransferTransaction.d.ts +59 -0
  87. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  88. package/dist/src/lib/tokenTransferTransaction.js +272 -0
  89. package/dist/src/lib/transaction.d.ts +21 -4
  90. package/dist/src/lib/transaction.d.ts.map +1 -1
  91. package/dist/src/lib/transaction.js +129 -17
  92. package/dist/src/lib/transactionBuilder.d.ts +13 -4
  93. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  94. package/dist/src/lib/transactionBuilder.js +34 -4
  95. package/dist/src/lib/transactionBuilderFactory.d.ts +11 -2
  96. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  97. package/dist/src/lib/transactionBuilderFactory.js +32 -1
  98. package/dist/src/lib/transferBuilder.d.ts +58 -1
  99. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  100. package/dist/src/lib/transferBuilder.js +310 -24
  101. package/dist/src/lib/transferTransaction.d.ts +6 -1
  102. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  103. package/dist/src/lib/transferTransaction.js +129 -12
  104. package/dist/src/lib/unstakingBuilder.js +6 -6
  105. package/dist/src/lib/unstakingTransaction.d.ts +0 -1
  106. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  107. package/dist/src/lib/unstakingTransaction.js +31 -17
  108. package/dist/src/lib/utils.d.ts +24 -3
  109. package/dist/src/lib/utils.d.ts.map +1 -1
  110. package/dist/src/lib/utils.js +254 -21
  111. package/dist/src/lib/walrusStakingBuilder.d.ts +66 -0
  112. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  113. package/dist/src/lib/walrusStakingBuilder.js +200 -0
  114. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  115. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  116. package/dist/src/lib/walrusStakingTransaction.js +269 -0
  117. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  118. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  119. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  120. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  121. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  122. package/dist/src/lib/walrusWithdrawStakeTransaction.js +190 -0
  123. package/dist/src/register.d.ts.map +1 -1
  124. package/dist/src/register.js +5 -1
  125. package/dist/src/sui.d.ts +46 -8
  126. package/dist/src/sui.d.ts.map +1 -1
  127. package/dist/src/sui.js +525 -37
  128. package/dist/src/suiToken.d.ts +22 -0
  129. package/dist/src/suiToken.d.ts.map +1 -0
  130. package/dist/src/suiToken.js +61 -0
  131. package/dist/src/tsui.js +1 -1
  132. package/dist/test/integration/index.d.ts +1 -0
  133. package/dist/test/integration/index.d.ts.map +1 -0
  134. package/dist/test/integration/index.js +1 -0
  135. package/dist/test/local_fullnode/RpcClient.d.ts +60 -0
  136. package/dist/test/local_fullnode/RpcClient.d.ts.map +1 -0
  137. package/dist/test/local_fullnode/RpcClient.js +111 -0
  138. package/dist/test/local_fullnode/faucet.d.ts +6 -0
  139. package/dist/test/local_fullnode/faucet.d.ts.map +1 -0
  140. package/dist/test/local_fullnode/faucet.js +17 -0
  141. package/dist/test/local_fullnode/transactions.d.ts +2 -0
  142. package/dist/test/local_fullnode/transactions.d.ts.map +1 -0
  143. package/dist/test/local_fullnode/transactions.js +190 -0
  144. package/dist/test/resources/sui.d.ts +458 -0
  145. package/dist/test/resources/sui.d.ts.map +1 -0
  146. package/dist/test/resources/sui.js +632 -0
  147. package/dist/test/unit/compareTransactionBlocks.d.ts +2 -0
  148. package/dist/test/unit/compareTransactionBlocks.d.ts.map +1 -0
  149. package/dist/test/unit/compareTransactionBlocks.js +64 -0
  150. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  151. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  152. package/dist/test/unit/getBuilderFactory.js +10 -0
  153. package/dist/test/unit/keyPair.d.ts +2 -0
  154. package/dist/test/unit/keyPair.d.ts.map +1 -0
  155. package/dist/test/unit/keyPair.js +72 -0
  156. package/dist/test/unit/sui.d.ts +2 -0
  157. package/dist/test/unit/sui.d.ts.map +1 -0
  158. package/dist/test/unit/sui.js +2423 -0
  159. package/dist/test/unit/suiToken.d.ts +2 -0
  160. package/dist/test/unit/suiToken.d.ts.map +1 -0
  161. package/dist/test/unit/suiToken.js +39 -0
  162. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
  163. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  164. package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +106 -0
  165. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
  166. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  167. package/dist/test/unit/transactionBuilder/stakingBuilder.js +152 -0
  168. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  169. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  170. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +255 -0
  171. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  172. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  173. package/dist/test/unit/transactionBuilder/transactionBuilder.js +639 -0
  174. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  175. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  176. package/dist/test/unit/transactionBuilder/transferBuilder.js +1055 -0
  177. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts +2 -0
  178. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts.map +1 -0
  179. package/dist/test/unit/transactionBuilder/unstakingBuilder.js +115 -0
  180. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts +2 -0
  181. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts.map +1 -0
  182. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.js +162 -0
  183. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts +2 -0
  184. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts.map +1 -0
  185. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.js +181 -0
  186. package/dist/test/unit/transferTransaction.d.ts +2 -0
  187. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  188. package/dist/test/unit/transferTransaction.js +94 -0
  189. package/dist/test/unit/utils.d.ts +2 -0
  190. package/dist/test/unit/utils.d.ts.map +1 -0
  191. package/dist/test/unit/utils.js +186 -0
  192. package/dist/tsconfig.tsbuildinfo +1 -0
  193. package/package.json +16 -12
  194. package/.eslintignore +0 -6
  195. package/.mocharc.yml +0 -7
  196. package/CHANGELOG.md +0 -420
@@ -9,9 +9,8 @@ const bcs_2 = require("./bcs");
9
9
  const Transactions_1 = require("./Transactions");
10
10
  const Inputs_1 = require("./Inputs");
11
11
  const utils_1 = require("./utils");
12
- exports.TransactionExpiration = superstruct_1.optional(superstruct_1.nullable(superstruct_1.union([superstruct_1.object({ Epoch: superstruct_1.integer() }), superstruct_1.object({ None: superstruct_1.union([superstruct_1.literal(true), superstruct_1.literal(null)]) })])));
13
- const SuiAddress = superstruct_1.string();
14
- const StringEncodedBigint = superstruct_1.define('StringEncodedBigint', (val) => {
12
+ const SuiAddress = (0, superstruct_1.string)();
13
+ const StringEncodedBigint = (0, superstruct_1.define)('StringEncodedBigint', (val) => {
15
14
  if (!['string', 'number', 'bigint'].includes(typeof val))
16
15
  return false;
17
16
  try {
@@ -22,80 +21,84 @@ const StringEncodedBigint = superstruct_1.define('StringEncodedBigint', (val) =>
22
21
  return false;
23
22
  }
24
23
  });
25
- const GasConfig = superstruct_1.object({
26
- budget: superstruct_1.optional(StringEncodedBigint),
27
- price: superstruct_1.optional(StringEncodedBigint),
28
- payment: superstruct_1.optional(superstruct_1.array(types_1.SuiObjectRef)),
29
- owner: superstruct_1.optional(SuiAddress),
24
+ exports.TransactionExpiration = (0, superstruct_1.optional)((0, superstruct_1.nullable)((0, superstruct_1.union)([
25
+ (0, superstruct_1.object)({ Epoch: StringEncodedBigint }),
26
+ (0, superstruct_1.object)({ None: (0, superstruct_1.union)([(0, superstruct_1.literal)(true), (0, superstruct_1.literal)(null)]) }),
27
+ (0, superstruct_1.object)({
28
+ ValidDuring: (0, superstruct_1.object)({
29
+ minEpoch: (0, superstruct_1.union)([(0, superstruct_1.object)({ Some: StringEncodedBigint }), (0, superstruct_1.object)({ None: (0, superstruct_1.union)([(0, superstruct_1.literal)(null), (0, superstruct_1.literal)(true)]) })]),
30
+ maxEpoch: (0, superstruct_1.union)([(0, superstruct_1.object)({ Some: StringEncodedBigint }), (0, superstruct_1.object)({ None: (0, superstruct_1.union)([(0, superstruct_1.literal)(null), (0, superstruct_1.literal)(true)]) })]),
31
+ minTimestamp: (0, superstruct_1.union)([(0, superstruct_1.object)({ Some: StringEncodedBigint }), (0, superstruct_1.object)({ None: (0, superstruct_1.union)([(0, superstruct_1.literal)(null), (0, superstruct_1.literal)(true)]) })]),
32
+ maxTimestamp: (0, superstruct_1.union)([(0, superstruct_1.object)({ Some: StringEncodedBigint }), (0, superstruct_1.object)({ None: (0, superstruct_1.union)([(0, superstruct_1.literal)(null), (0, superstruct_1.literal)(true)]) })]),
33
+ chain: (0, superstruct_1.string)(),
34
+ nonce: (0, superstruct_1.integer)(),
35
+ }),
36
+ }),
37
+ ])));
38
+ const GasConfig = (0, superstruct_1.object)({
39
+ budget: (0, superstruct_1.optional)(StringEncodedBigint),
40
+ price: (0, superstruct_1.optional)(StringEncodedBigint),
41
+ payment: (0, superstruct_1.optional)((0, superstruct_1.array)(types_1.SuiObjectRef)),
42
+ owner: (0, superstruct_1.optional)(SuiAddress),
30
43
  });
31
- exports.SerializedTransactionDataBuilder = superstruct_1.object({
32
- version: superstruct_1.literal(1),
33
- sender: superstruct_1.optional(SuiAddress),
44
+ exports.SerializedTransactionDataBuilder = (0, superstruct_1.object)({
45
+ version: (0, superstruct_1.literal)(1),
46
+ sender: (0, superstruct_1.optional)(SuiAddress),
34
47
  expiration: exports.TransactionExpiration,
35
48
  gasConfig: GasConfig,
36
- inputs: superstruct_1.array(Transactions_1.TransactionBlockInput),
37
- transactions: superstruct_1.array(Transactions_1.TransactionType),
49
+ inputs: (0, superstruct_1.array)(Transactions_1.TransactionBlockInput),
50
+ transactions: (0, superstruct_1.array)(Transactions_1.TransactionType),
38
51
  });
39
52
  function prepareSuiAddress(address) {
40
- return types_1.normalizeSuiAddress(address).replace('0x', '');
53
+ return (0, types_1.normalizeSuiAddress)(address).replace('0x', '');
41
54
  }
42
55
  // NOTE: This value should be kept in sync with the corresponding value in
43
56
  // crates/sui-protocol-config/src/lib.rs
44
57
  exports.TRANSACTION_DATA_MAX_SIZE = 128 * 1024;
45
58
  class TransactionBlockDataBuilder {
46
- constructor(clone) {
47
- var _a, _b, _c;
48
- this.version = 1;
49
- this.sender = clone === null || clone === void 0 ? void 0 : clone.sender;
50
- this.expiration = clone === null || clone === void 0 ? void 0 : clone.expiration;
51
- this.gasConfig = (_a = clone === null || clone === void 0 ? void 0 : clone.gasConfig) !== null && _a !== void 0 ? _a : {};
52
- this.inputs = (_b = clone === null || clone === void 0 ? void 0 : clone.inputs) !== null && _b !== void 0 ? _b : [];
53
- this.transactions = (_c = clone === null || clone === void 0 ? void 0 : clone.transactions) !== null && _c !== void 0 ? _c : [];
54
- }
55
59
  static fromKindBytes(bytes) {
56
60
  const kind = bcs_2.builder.de('TransactionKind', bytes);
57
- const programmableTx = kind === null || kind === void 0 ? void 0 : kind.ProgrammableTransaction;
61
+ const programmableTx = kind?.ProgrammableTransaction;
58
62
  if (!programmableTx) {
59
63
  throw new Error('Unable to deserialize from bytes.');
60
64
  }
61
- const serialized = utils_1.create({
65
+ const serialized = (0, utils_1.create)({
62
66
  version: 1,
63
67
  gasConfig: {},
64
- inputs: programmableTx.inputs.map((value, index) => utils_1.create({
68
+ inputs: programmableTx.inputs.map((value, index) => (0, utils_1.create)({
65
69
  kind: 'Input',
66
70
  value,
67
71
  index,
68
- type: superstruct_1.is(value, Inputs_1.PureCallArg) ? 'pure' : 'object',
72
+ type: (0, superstruct_1.is)(value, Inputs_1.PureCallArg) ? 'pure' : 'object',
69
73
  }, Transactions_1.TransactionBlockInput)),
70
74
  transactions: programmableTx.transactions,
71
75
  }, exports.SerializedTransactionDataBuilder);
72
76
  return TransactionBlockDataBuilder.restore(serialized);
73
77
  }
74
78
  static fromBytes(bytes) {
75
- var _a;
76
79
  const rawData = bcs_2.builder.de('TransactionData', bytes);
77
- const data = rawData === null || rawData === void 0 ? void 0 : rawData.V1;
78
- const programmableTx = (_a = data === null || data === void 0 ? void 0 : data.kind) === null || _a === void 0 ? void 0 : _a.ProgrammableTransaction;
80
+ const data = rawData?.V1;
81
+ const programmableTx = data?.kind?.ProgrammableTransaction;
79
82
  if (!data || !programmableTx) {
80
83
  throw new Error('Unable to deserialize from bytes.');
81
84
  }
82
- const serialized = utils_1.create({
85
+ const serialized = (0, utils_1.create)({
83
86
  version: 1,
84
87
  sender: data.sender,
85
88
  expiration: data.expiration,
86
89
  gasConfig: data.gasData,
87
- inputs: programmableTx.inputs.map((value, index) => utils_1.create({
90
+ inputs: programmableTx.inputs.map((value, index) => (0, utils_1.create)({
88
91
  kind: 'Input',
89
92
  value,
90
93
  index,
91
- type: superstruct_1.is(value, Inputs_1.PureCallArg) ? 'pure' : 'object',
94
+ type: (0, superstruct_1.is)(value, Inputs_1.PureCallArg) ? 'pure' : 'object',
92
95
  }, Transactions_1.TransactionBlockInput)),
93
96
  transactions: programmableTx.transactions,
94
97
  }, exports.SerializedTransactionDataBuilder);
95
98
  return TransactionBlockDataBuilder.restore(serialized);
96
99
  }
97
100
  static restore(data) {
98
- superstruct_1.assert(data, exports.SerializedTransactionDataBuilder);
101
+ (0, superstruct_1.assert)(data, exports.SerializedTransactionDataBuilder);
99
102
  const transactionData = new TransactionBlockDataBuilder();
100
103
  Object.assign(transactionData, data);
101
104
  return transactionData;
@@ -107,14 +110,21 @@ class TransactionBlockDataBuilder {
107
110
  * @returns transaction digest.
108
111
  */
109
112
  static getDigestFromBytes(bytes) {
110
- const hash = hash_1.hashTypedData('TransactionData', bytes);
111
- return bcs_1.toB58(hash);
113
+ const hash = (0, hash_1.hashTypedData)('TransactionData', bytes);
114
+ return (0, bcs_1.toB58)(hash);
115
+ }
116
+ constructor(clone) {
117
+ this.version = 1;
118
+ this.sender = clone?.sender;
119
+ this.expiration = clone?.expiration;
120
+ this.gasConfig = clone?.gasConfig ?? {};
121
+ this.inputs = clone?.inputs ?? [];
122
+ this.transactions = clone?.transactions ?? [];
112
123
  }
113
124
  build({ overrides, onlyTransactionKind, } = {}) {
114
- var _a, _b, _c;
115
125
  // Resolve inputs down to values:
116
126
  const inputs = this.inputs.map((input) => {
117
- superstruct_1.assert(input.value, Inputs_1.BuilderCallArg);
127
+ (0, superstruct_1.assert)(input.value, Inputs_1.BuilderCallArg);
118
128
  return input.value;
119
129
  });
120
130
  const kind = {
@@ -126,9 +136,9 @@ class TransactionBlockDataBuilder {
126
136
  if (onlyTransactionKind) {
127
137
  return bcs_2.builder.ser('TransactionKind', kind, { maxSize: exports.TRANSACTION_DATA_MAX_SIZE }).toBytes();
128
138
  }
129
- const expiration = (_a = overrides === null || overrides === void 0 ? void 0 : overrides.expiration) !== null && _a !== void 0 ? _a : this.expiration;
130
- const sender = (_b = overrides === null || overrides === void 0 ? void 0 : overrides.sender) !== null && _b !== void 0 ? _b : this.sender;
131
- const gasConfig = { ...this.gasConfig, ...overrides === null || overrides === void 0 ? void 0 : overrides.gasConfig };
139
+ const expiration = overrides?.expiration ?? this.expiration;
140
+ const sender = overrides?.sender ?? this.sender;
141
+ const gasConfig = { ...this.gasConfig, ...overrides?.gasConfig };
132
142
  if (!sender) {
133
143
  throw new Error('Missing transaction sender');
134
144
  }
@@ -146,7 +156,7 @@ class TransactionBlockDataBuilder {
146
156
  expiration: expiration ? expiration : { None: true },
147
157
  gasData: {
148
158
  payment: gasConfig.payment,
149
- owner: prepareSuiAddress((_c = this.gasConfig.owner) !== null && _c !== void 0 ? _c : sender),
159
+ owner: prepareSuiAddress(this.gasConfig.owner ?? sender),
150
160
  price: BigInt(gasConfig.price),
151
161
  budget: BigInt(gasConfig.budget),
152
162
  },
@@ -164,8 +174,8 @@ class TransactionBlockDataBuilder {
164
174
  return TransactionBlockDataBuilder.getDigestFromBytes(bytes);
165
175
  }
166
176
  snapshot() {
167
- return utils_1.create(this, exports.SerializedTransactionDataBuilder);
177
+ return (0, utils_1.create)(this, exports.SerializedTransactionDataBuilder);
168
178
  }
169
179
  }
170
180
  exports.TransactionBlockDataBuilder = TransactionBlockDataBuilder;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25EYXRhQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL215c3RlbmxhYi9idWlsZGVyL1RyYW5zYWN0aW9uRGF0YUJsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFvQztBQUNwQyw2Q0FhcUI7QUFDckIsK0NBQXFEO0FBQ3JELG9DQUE2RDtBQUM3RCwrQkFBZ0M7QUFDaEMsaURBQXdFO0FBQ3hFLHFDQUF1RDtBQUN2RCxtQ0FBaUM7QUFFcEIsUUFBQSxxQkFBcUIsR0FBRyxzQkFBUSxDQUMzQyxzQkFBUSxDQUFDLG1CQUFLLENBQUMsQ0FBQyxvQkFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLHFCQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsb0JBQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBSyxDQUFDLENBQUMscUJBQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxxQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3pHLENBQUM7QUFHRixNQUFNLFVBQVUsR0FBRyxvQkFBTSxFQUFFLENBQUM7QUFFNUIsTUFBTSxtQkFBbUIsR0FBRyxvQkFBTSxDQUFTLHFCQUFxQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDeEUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV2RSxJQUFJO1FBQ0YsTUFBTSxDQUFDLEdBQWEsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFBQyxNQUFNO1FBQ04sT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxTQUFTLEdBQUcsb0JBQU0sQ0FBQztJQUN2QixNQUFNLEVBQUUsc0JBQVEsQ0FB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RSxlQUFlLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQ0FBeUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkgsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxjQUFNLENBQUMsSUFBSSxFQUFFLHdDQUFnQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGO0FBektELGtFQXlLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvQjU4IH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0IHtcbiAgYXJyYXksXG4gIGFzc2VydCxcbiAgZGVmaW5lLFxuICBJbmZlcixcbiAgaW50ZWdlcixcbiAgaXMsXG4gIGxpdGVyYWwsXG4gIG51bGxhYmxlLFxuICBvYmplY3QsXG4gIG9wdGlvbmFsLFxuICBzdHJpbmcsXG4gIHVuaW9uLFxufSBmcm9tICdzdXBlcnN0cnVjdCc7XG5pbXBvcnQgeyBoYXNoVHlwZWREYXRhIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2hhc2gnO1xuaW1wb3J0IHsgbm9ybWFsaXplU3VpQWRkcmVzcywgU3VpT2JqZWN0UmVmIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vYmNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25CbG9ja0lucHV0IH0gZnJvbSAnLi9UcmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQnVpbGRlckNhbGxBcmcsIFB1cmVDYWxsQXJnIH0gZnJvbSAnLi9JbnB1dHMnO1xuaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2FjdGlvbkV4cGlyYXRpb24gPSBvcHRpb25hbChcbiAgbnVsbGFibGUodW5pb24oW29iamVjdCh7IEVwb2NoOiBpbnRlZ2VyKCkgfSksIG9iamVjdCh7IE5vbmU6IHVuaW9uKFtsaXRlcmFsKHRydWUpLCBsaXRlcmFsKG51bGwpXSkgfSldKSlcbik7XG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV4cGlyYXRpb24gPSBJbmZlcjx0eXBlb2YgVHJhbnNhY3Rpb25FeHBpcmF0aW9uPjtcblxuY29uc3QgU3VpQWRkcmVzcyA9IHN0cmluZygpO1xuXG5jb25zdCBTdHJpbmdFbmNvZGVkQmlnaW50ID0gZGVmaW5lPHN0cmluZz4oJ1N0cmluZ0VuY29kZWRCaWdpbnQnLCAodmFsKSA9PiB7XG4gIGlmICghWydzdHJpbmcnLCAnbnVtYmVyJywgJ2JpZ2ludCddLmluY2x1ZGVzKHR5cGVvZiB2YWwpKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBCaWdJbnQodmFsIGFzIHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSk7XG5cbmNvbnN0IEdhc0NvbmZpZyA9IG9iamVjdCh7XG4gIGJ1ZGdldDogb3B0aW9uYWwoU3RyaW5nRW5jb2RlZEJpZ2ludCksXG4gIHByaWNlOiBvcHRpb25hbChTdHJpbmdFbmNvZGVkQmlnaW50KSxcbiAgcGF5bWVudDogb3B0aW9uYWwoYXJyYXkoU3VpT2JqZWN0UmVmKSksXG4gIG93bmVyOiBvcHRpb25hbChTdWlBZGRyZXNzKSxcbn0pO1xudHlwZSBHYXNDb25maWcgPSBJbmZlcjx0eXBlb2YgR2FzQ29uZmlnPjtcblxuZXhwb3J0IGNvbnN0IFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyID0gb2JqZWN0KHtcbiAgdmVyc2lvbjogbGl0ZXJhbCgxKSxcbiAgc2VuZGVyOiBvcHRpb25hbChTdWlBZGRyZXNzKSxcbiAgZXhwaXJhdGlvbjogVHJhbnNhY3Rpb25FeHBpcmF0aW9uLFxuICBnYXNDb25maWc6IEdhc0NvbmZpZyxcbiAgaW5wdXRzOiBhcnJheShUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLFxuICB0cmFuc2FjdGlvbnM6IGFycmF5KFRyYW5zYWN0aW9uVHlwZSksXG59KTtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyID0gSW5mZXI8dHlwZW9mIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyPjtcblxuZnVuY3Rpb24gcHJlcGFyZVN1aUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKSB7XG4gIHJldHVybiBub3JtYWxpemVTdWlBZGRyZXNzKGFkZHJlc3MpLnJlcGxhY2UoJzB4JywgJycpO1xufVxuXG4vLyBOT1RFOiBUaGlzIHZhbHVlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpblxuLy8gY3JhdGVzL3N1aS1wcm90b2NvbC1jb25maWcvc3JjL2xpYi5yc1xuZXhwb3J0IGNvbnN0IFRSQU5TQUNUSU9OX0RBVEFfTUFYX1NJWkUgPSAxMjggKiAxMDI0O1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyIHtcbiAgc3RhdGljIGZyb21LaW5kQnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCBraW5kID0gYnVpbGRlci5kZSgnVHJhbnNhY3Rpb25LaW5kJywgYnl0ZXMpO1xuICAgIGNvbnN0IHByb2dyYW1tYWJsZVR4ID0ga2luZD8uUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb247XG4gICAgaWYgKCFwcm9ncmFtbWFibGVUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGVzZXJpYWxpemUgZnJvbSBieXRlcy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gY3JlYXRlKFxuICAgICAge1xuICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICBnYXNDb25maWc6IHt9LFxuICAgICAgICBpbnB1dHM6IHByb2dyYW1tYWJsZVR4LmlucHV0cy5tYXAoKHZhbHVlOiB1bmtub3duLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgIGNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2luZDogJ0lucHV0JyxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICB0eXBlOiBpcyh2YWx1ZSwgUHVyZUNhbGxBcmcpID8gJ3B1cmUnIDogJ29iamVjdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHByb2dyYW1tYWJsZVR4LnRyYW5zYWN0aW9ucyxcbiAgICAgIH0sXG4gICAgICBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlclxuICAgICk7XG5cbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyLnJlc3RvcmUoc2VyaWFsaXplZCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5KSB7XG4gICAgY29uc3QgcmF3RGF0YSA9IGJ1aWxkZXIuZGUoJ1RyYW5zYWN0aW9uRGF0YScsIGJ5dGVzKTtcbiAgICBjb25zdCBkYXRhID0gcmF3RGF0YT8uVjE7XG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHggPSBkYXRhPy5raW5kPy5Qcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcbiAgICBpZiAoIWRhdGEgfHwgIXByb2dyYW1tYWJsZVR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXNlcmlhbGl6ZSBmcm9tIGJ5dGVzLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBjcmVhdGUoXG4gICAgICB7XG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHNlbmRlcjogZGF0YS5zZW5kZXIsXG4gICAgICAgIGV4cGlyYXRpb246IGRhdGEuZXhwaXJhdGlvbixcbiAgICAgICAgZ2FzQ29uZmlnOiBkYXRhLmdhc0RhdGEsXG4gICAgICAgIGlucHV0czogcHJvZ3JhbW1hYmxlVHguaW5wdXRzLm1hcCgodmFsdWU6IHVua25vd24sIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBraW5kOiAnSW5wdXQnLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgIHR5cGU6IGlzKHZhbHVlLCBQdXJlQ2FsbEFyZykgPyAncHVyZScgOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRyYW5zYWN0aW9uczogcHJvZ3JhbW1hYmxlVHgudHJhbnNhY3Rpb25zLFxuICAgICAgfSxcbiAgICAgIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyXG4gICAgKTtcblxuICAgIHJldHVybiBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIucmVzdG9yZShzZXJpYWxpemVkKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKGRhdGE6IFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KGRhdGEsIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSBuZXcgVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyKCk7XG4gICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbkRhdGEsIGRhdGEpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdHJhbnNhY3Rpb24gZGlnZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYnl0ZXMgQkNTIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB0cmFuc2FjdGlvbiBkaWdlc3QuXG4gICAqL1xuICBzdGF0aWMgZ2V0RGlnZXN0RnJvbUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5KSB7XG4gICAgY29uc3QgaGFzaCA9IGhhc2hUeXBlZERhdGEoJ1RyYW5zYWN0aW9uRGF0YScsIGJ5dGVzKTtcbiAgICByZXR1cm4gdG9CNTgoaGFzaCk7XG4gIH1cblxuICB2ZXJzaW9uID0gMSBhcyBjb25zdDtcbiAgc2VuZGVyPzogc3RyaW5nO1xuICBleHBpcmF0aW9uPzogVHJhbnNhY3Rpb25FeHBpcmF0aW9uO1xuICBnYXNDb25maWc6IEdhc0NvbmZpZztcbiAgaW5wdXRzOiBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXTtcbiAgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblR5cGVbXTtcblxuICBjb25zdHJ1Y3RvcihjbG9uZT86IFRyYW5zYWN0aW9uQmxvY2tEYXRhQnVpbGRlcikge1xuICAgIHRoaXMuc2VuZGVyID0gY2xvbmU/LnNlbmRlcjtcbiAgICB0aGlzLmV4cGlyYXRpb24gPSBjbG9uZT8uZXhwaXJhdGlvbjtcbiAgICB0aGlzLmdhc0NvbmZpZyA9IGNsb25lPy5nYXNDb25maWcgPz8ge307XG4gICAgdGhpcy5pbnB1dHMgPSBjbG9uZT8uaW5wdXRzID8/IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb25zID0gY2xvbmU/LnRyYW5zYWN0aW9ucyA/PyBbXTtcbiAgfVxuXG4gIGJ1aWxkKHtcbiAgICBvdmVycmlkZXMsXG4gICAgb25seVRyYW5zYWN0aW9uS2luZCxcbiAgfToge1xuICAgIG92ZXJyaWRlcz86IFBpY2s8UGFydGlhbDxUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXI+LCAnc2VuZGVyJyB8ICdnYXNDb25maWcnIHwgJ2V4cGlyYXRpb24nPjtcbiAgICBvbmx5VHJhbnNhY3Rpb25LaW5kPzogYm9vbGVhbjtcbiAgfSA9IHt9KSB7XG4gICAgLy8gUmVzb2x2ZSBpbnB1dHMgZG93biB0byB2YWx1ZXM6XG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgYXNzZXJ0KGlucHV0LnZhbHVlLCBCdWlsZGVyQ2FsbEFyZyk7XG4gICAgICByZXR1cm4gaW5wdXQudmFsdWU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBraW5kID0ge1xuICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHtcbiAgICAgICAgaW5wdXRzLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHRoaXMudHJhbnNhY3Rpb25zLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKG9ubHlUcmFuc2FjdGlvbktpbmQpIHtcbiAgICAgIHJldHVybiBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25LaW5kJywga2luZCwgeyBtYXhTaXplOiBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFIH0pLnRvQnl0ZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uID0gb3ZlcnJpZGVzPy5leHBpcmF0aW9uID8/IHRoaXMuZXhwaXJhdGlvbjtcbiAgICBjb25zdCBzZW5kZXIgPSBvdmVycmlkZXM/LnNlbmRlciA/PyB0aGlzLnNlbmRlcjtcbiAgICBjb25zdCBnYXNDb25maWcgPSB7IC4uLnRoaXMuZ2FzQ29uZmlnLCAuLi5vdmVycmlkZXM/Lmdhc0NvbmZpZyB9O1xuXG4gICAgaWYgKCFzZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBzZW5kZXInKTtcbiAgICB9XG5cbiAgICBpZiAoIWdhc0NvbmZpZy5idWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnYXMgYnVkZ2V0Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFnYXNDb25maWcucGF5bWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGdhcyBwYXltZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFnYXNDb25maWcucHJpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnYXMgcHJpY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXI6IHByZXBhcmVTdWlBZGRyZXNzKHNlbmRlciksXG4gICAgICBleHBpcmF0aW9uOiBleHBpcmF0aW9uID8gZXhwaXJhdGlvbiA6IHsgTm9uZTogdHJ1ZSB9LFxuICAgICAgZ2FzRGF0YToge1xuICAgICAgICBwYXltZW50OiBnYXNDb25maWcucGF5bWVudCxcbiAgICAgICAgb3duZXI6IHByZXBhcmVTdWlBZGRyZXNzKHRoaXMuZ2FzQ29uZmlnLm93bmVyID8/IHNlbmRlciksXG4gICAgICAgIHByaWNlOiBCaWdJbnQoZ2FzQ29uZmlnLnByaWNlKSxcbiAgICAgICAgYnVkZ2V0OiBCaWdJbnQoZ2FzQ29uZmlnLmJ1ZGdldCksXG4gICAgICB9LFxuICAgICAga2luZDoge1xuICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjoge1xuICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICB0cmFuc2FjdGlvbnM6IHRoaXMudHJhbnNhY3Rpb25zLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1aWxkZXIuc2VyKCdUcmFuc2FjdGlvbkRhdGEnLCB7IFYxOiB0cmFuc2FjdGlvbkRhdGEgfSwgeyBtYXhTaXplOiBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFIH0pLnRvQnl0ZXMoKTtcbiAgfVxuXG4gIGdldERpZ2VzdCgpIHtcbiAgICBjb25zdCBieXRlcyA9IHRoaXMuYnVpbGQoeyBvbmx5VHJhbnNhY3Rpb25LaW5kOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyhieXRlcyk7XG4gIH1cblxuICBzbmFwc2hvdCgpOiBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlciB7XG4gICAgcmV0dXJuIGNyZWF0ZSh0aGlzLCBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlcik7XG4gIH1cbn1cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25EYXRhQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL215c3RlbmxhYi9idWlsZGVyL1RyYW5zYWN0aW9uRGF0YUJsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFvQztBQUNwQyw2Q0FhcUI7QUFDckIsK0NBQXFEO0FBQ3JELG9DQUE2RDtBQUM3RCwrQkFBZ0M7QUFDaEMsaURBQXdFO0FBQ3hFLHFDQUF1RDtBQUN2RCxtQ0FBaUM7QUFFakMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBTSxHQUFFLENBQUM7QUFFNUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLG9CQUFNLEVBQVMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUN4RSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXZFLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFhLENBQUMsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVVLFFBQUEscUJBQXFCLEdBQUcsSUFBQSxzQkFBUSxFQUMzQyxJQUFBLHNCQUFRLEVBQ04sSUFBQSxtQkFBSyxFQUFDO0lBQ0osSUFBQSxvQkFBTSxFQUFDLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDdEMsSUFBQSxvQkFBTSxFQUFDLEVBQUUsSUFBSSxFQUFFLElBQUEsbUJBQUssRUFBQyxDQUFDLElBQUEscUJBQU8sRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFBLHFCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkQsSUFBQSxvQkFB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b0JBQ3ZCLE1BQU07b0JBQ04sWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUNoQzthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU8sYUFBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQ0FBeUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkgsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFBLGNBQU0sRUFBQyxJQUFJLEVBQUUsd0NBQWdDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUF6S0Qsa0VBeUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9CNTggfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQge1xuICBhcnJheSxcbiAgYXNzZXJ0LFxuICBkZWZpbmUsXG4gIEluZmVyLFxuICBpbnRlZ2VyLFxuICBpcyxcbiAgbGl0ZXJhbCxcbiAgbnVsbGFibGUsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHN0cmluZyxcbiAgdW5pb24sXG59IGZyb20gJ3N1cGVyc3RydWN0JztcbmltcG9ydCB7IGhhc2hUeXBlZERhdGEgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvaGFzaCc7XG5pbXBvcnQgeyBub3JtYWxpemVTdWlBZGRyZXNzLCBTdWlPYmplY3RSZWYgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBidWlsZGVyIH0gZnJvbSAnLi9iY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvbkJsb2NrSW5wdXQgfSBmcm9tICcuL1RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZGVyQ2FsbEFyZywgUHVyZUNhbGxBcmcgfSBmcm9tICcuL0lucHV0cyc7XG5pbXBvcnQgeyBjcmVhdGUgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgU3VpQWRkcmVzcyA9IHN0cmluZygpO1xuXG5jb25zdCBTdHJpbmdFbmNvZGVkQmlnaW50ID0gZGVmaW5lPHN0cmluZz4oJ1N0cmluZ0VuY29kZWRCaWdpbnQnLCAodmFsKSA9PiB7XG4gIGlmICghWydzdHJpbmcnLCAnbnVtYmVyJywgJ2JpZ2ludCddLmluY2x1ZGVzKHR5cGVvZiB2YWwpKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBCaWdJbnQodmFsIGFzIHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2FjdGlvbkV4cGlyYXRpb24gPSBvcHRpb25hbChcbiAgbnVsbGFibGUoXG4gICAgdW5pb24oW1xuICAgICAgb2JqZWN0KHsgRXBvY2g6IFN0cmluZ0VuY29kZWRCaWdpbnQgfSksXG4gICAgICBvYmplY3QoeyBOb25lOiB1bmlvbihbbGl0ZXJhbCh0cnVlKSwgbGl0ZXJhbChudWxsKV0pIH0pLFxuICAgICAgb2JqZWN0KHtcbiAgICAgICAgVmFsaWREdXJpbmc6IG9iamVjdCh7XG4gICAgICAgICAgbWluRXBvY2g6IHVuaW9uKFtvYmplY3QoeyBTb21lOiBTdHJpbmdFbmNvZGVkQmlnaW50IH0pLCBvYmplY3QoeyBOb25lOiB1bmlvbihbbGl0ZXJhbChudWxsKSwgbGl0ZXJhbCh0cnVlKV0pIH0pXSksXG4gICAgICAgICAgbWF4RXBvY2g6IHVuaW9uKFtvYmplY3QoeyBTb21lOiBTdHJpbmdFbmNvZGVkQmlnaW50IH0pLCBvYmplY3QoeyBOb25lOiB1bmlvbihbbGl0ZXJhbChudWxsKSwgbGl0ZXJhbCh0cnVlKV0pIH0pXSksXG4gICAgICAgICAgbWluVGltZXN0YW1wOiB1bmlvbihbb2JqZWN0KHsgU29tZTogU3RyaW5nRW5jb2RlZEJpZ2ludCB9KSwgb2JqZWN0KHsgTm9uZTogdW5pb24oW2xpdGVyYWwobnVsbCksIGxpdGVyYWwodHJ1ZSldKSB9KV0pLFxuICAgICAgICAgIG1heFRpbWVzdGFtcDogdW5pb24oW29iamVjdCh7IFNvbWU6IFN0cmluZ0VuY29kZWRCaWdpbnQgfSksIG9iamVjdCh7IE5vbmU6IHVuaW9uKFtsaXRlcmFsKG51bGwpLCBsaXRlcmFsKHRydWUpXSkgfSldKSxcbiAgICAgICAgICBjaGFpbjogc3RyaW5nKCksXG4gICAgICAgICAgbm9uY2U6IGludGVnZXIoKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICBdKVxuICApXG4pO1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBpcmF0aW9uID0gSW5mZXI8dHlwZW9mIFRyYW5zYWN0aW9uRXhwaXJhdGlvbj47XG5cbmNvbnN0IEdhc0NvbmZpZyA9IG9iamVjdCh7XG4gIGJ1ZGdldDogb3B0aW9uYWwoU3RyaW5nRW5jb2RlZEJpZ2ludCksXG4gIHByaWNlOiBvcHRpb25hbChTdHJpbmdFbmNvZGVkQmlnaW50KSxcbiAgcGF5bWVudDogb3B0aW9uYWwoYXJyYXkoU3VpT2JqZWN0UmVmKSksXG4gIG93bmVyOiBvcHRpb25hbChTdWlBZGRyZXNzKSxcbn0pO1xudHlwZSBHYXNDb25maWcgPSBJbmZlcjx0eXBlb2YgR2FzQ29uZmlnPjtcblxuZXhwb3J0IGNvbnN0IFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyID0gb2JqZWN0KHtcbiAgdmVyc2lvbjogbGl0ZXJhbCgxKSxcbiAgc2VuZGVyOiBvcHRpb25hbChTdWlBZGRyZXNzKSxcbiAgZXhwaXJhdGlvbjogVHJhbnNhY3Rpb25FeHBpcmF0aW9uLFxuICBnYXNDb25maWc6IEdhc0NvbmZpZyxcbiAgaW5wdXRzOiBhcnJheShUcmFuc2FjdGlvbkJsb2NrSW5wdXQpLFxuICB0cmFuc2FjdGlvbnM6IGFycmF5KFRyYW5zYWN0aW9uVHlwZSksXG59KTtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyID0gSW5mZXI8dHlwZW9mIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyPjtcblxuZnVuY3Rpb24gcHJlcGFyZVN1aUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKSB7XG4gIHJldHVybiBub3JtYWxpemVTdWlBZGRyZXNzKGFkZHJlc3MpLnJlcGxhY2UoJzB4JywgJycpO1xufVxuXG4vLyBOT1RFOiBUaGlzIHZhbHVlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpblxuLy8gY3JhdGVzL3N1aS1wcm90b2NvbC1jb25maWcvc3JjL2xpYi5yc1xuZXhwb3J0IGNvbnN0IFRSQU5TQUNUSU9OX0RBVEFfTUFYX1NJWkUgPSAxMjggKiAxMDI0O1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyIHtcbiAgc3RhdGljIGZyb21LaW5kQnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCBraW5kID0gYnVpbGRlci5kZSgnVHJhbnNhY3Rpb25LaW5kJywgYnl0ZXMpO1xuICAgIGNvbnN0IHByb2dyYW1tYWJsZVR4ID0ga2luZD8uUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb247XG4gICAgaWYgKCFwcm9ncmFtbWFibGVUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZGVzZXJpYWxpemUgZnJvbSBieXRlcy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gY3JlYXRlKFxuICAgICAge1xuICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICBnYXNDb25maWc6IHt9LFxuICAgICAgICBpbnB1dHM6IHByb2dyYW1tYWJsZVR4LmlucHV0cy5tYXAoKHZhbHVlOiB1bmtub3duLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgIGNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2luZDogJ0lucHV0JyxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICB0eXBlOiBpcyh2YWx1ZSwgUHVyZUNhbGxBcmcpID8gJ3B1cmUnIDogJ29iamVjdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHByb2dyYW1tYWJsZVR4LnRyYW5zYWN0aW9ucyxcbiAgICAgIH0sXG4gICAgICBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlclxuICAgICk7XG5cbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyLnJlc3RvcmUoc2VyaWFsaXplZCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5KSB7XG4gICAgY29uc3QgcmF3RGF0YSA9IGJ1aWxkZXIuZGUoJ1RyYW5zYWN0aW9uRGF0YScsIGJ5dGVzKTtcbiAgICBjb25zdCBkYXRhID0gcmF3RGF0YT8uVjE7XG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHggPSBkYXRhPy5raW5kPy5Qcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcbiAgICBpZiAoIWRhdGEgfHwgIXByb2dyYW1tYWJsZVR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXNlcmlhbGl6ZSBmcm9tIGJ5dGVzLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBjcmVhdGUoXG4gICAgICB7XG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHNlbmRlcjogZGF0YS5zZW5kZXIsXG4gICAgICAgIGV4cGlyYXRpb246IGRhdGEuZXhwaXJhdGlvbixcbiAgICAgICAgZ2FzQ29uZmlnOiBkYXRhLmdhc0RhdGEsXG4gICAgICAgIGlucHV0czogcHJvZ3JhbW1hYmxlVHguaW5wdXRzLm1hcCgodmFsdWU6IHVua25vd24sIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBraW5kOiAnSW5wdXQnLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgIHR5cGU6IGlzKHZhbHVlLCBQdXJlQ2FsbEFyZykgPyAncHVyZScgOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRyYW5zYWN0aW9uczogcHJvZ3JhbW1hYmxlVHgudHJhbnNhY3Rpb25zLFxuICAgICAgfSxcbiAgICAgIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyXG4gICAgKTtcblxuICAgIHJldHVybiBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIucmVzdG9yZShzZXJpYWxpemVkKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKGRhdGE6IFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KGRhdGEsIFNlcmlhbGl6ZWRUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSBuZXcgVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyKCk7XG4gICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbkRhdGEsIGRhdGEpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdHJhbnNhY3Rpb24gZGlnZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYnl0ZXMgQkNTIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB0cmFuc2FjdGlvbiBkaWdlc3QuXG4gICAqL1xuICBzdGF0aWMgZ2V0RGlnZXN0RnJvbUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5KSB7XG4gICAgY29uc3QgaGFzaCA9IGhhc2hUeXBlZERhdGEoJ1RyYW5zYWN0aW9uRGF0YScsIGJ5dGVzKTtcbiAgICByZXR1cm4gdG9CNTgoaGFzaCk7XG4gIH1cblxuICB2ZXJzaW9uID0gMSBhcyBjb25zdDtcbiAgc2VuZGVyPzogc3RyaW5nO1xuICBleHBpcmF0aW9uPzogVHJhbnNhY3Rpb25FeHBpcmF0aW9uO1xuICBnYXNDb25maWc6IEdhc0NvbmZpZztcbiAgaW5wdXRzOiBUcmFuc2FjdGlvbkJsb2NrSW5wdXRbXTtcbiAgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvblR5cGVbXTtcblxuICBjb25zdHJ1Y3RvcihjbG9uZT86IFRyYW5zYWN0aW9uQmxvY2tEYXRhQnVpbGRlcikge1xuICAgIHRoaXMuc2VuZGVyID0gY2xvbmU/LnNlbmRlcjtcbiAgICB0aGlzLmV4cGlyYXRpb24gPSBjbG9uZT8uZXhwaXJhdGlvbjtcbiAgICB0aGlzLmdhc0NvbmZpZyA9IGNsb25lPy5nYXNDb25maWcgPz8ge307XG4gICAgdGhpcy5pbnB1dHMgPSBjbG9uZT8uaW5wdXRzID8/IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb25zID0gY2xvbmU/LnRyYW5zYWN0aW9ucyA/PyBbXTtcbiAgfVxuXG4gIGJ1aWxkKHtcbiAgICBvdmVycmlkZXMsXG4gICAgb25seVRyYW5zYWN0aW9uS2luZCxcbiAgfToge1xuICAgIG92ZXJyaWRlcz86IFBpY2s8UGFydGlhbDxUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXI+LCAnc2VuZGVyJyB8ICdnYXNDb25maWcnIHwgJ2V4cGlyYXRpb24nPjtcbiAgICBvbmx5VHJhbnNhY3Rpb25LaW5kPzogYm9vbGVhbjtcbiAgfSA9IHt9KSB7XG4gICAgLy8gUmVzb2x2ZSBpbnB1dHMgZG93biB0byB2YWx1ZXM6XG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5pbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgYXNzZXJ0KGlucHV0LnZhbHVlLCBCdWlsZGVyQ2FsbEFyZyk7XG4gICAgICByZXR1cm4gaW5wdXQudmFsdWU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBraW5kID0ge1xuICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHtcbiAgICAgICAgaW5wdXRzLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHRoaXMudHJhbnNhY3Rpb25zLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKG9ubHlUcmFuc2FjdGlvbktpbmQpIHtcbiAgICAgIHJldHVybiBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25LaW5kJywga2luZCwgeyBtYXhTaXplOiBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFIH0pLnRvQnl0ZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uID0gb3ZlcnJpZGVzPy5leHBpcmF0aW9uID8/IHRoaXMuZXhwaXJhdGlvbjtcbiAgICBjb25zdCBzZW5kZXIgPSBvdmVycmlkZXM/LnNlbmRlciA/PyB0aGlzLnNlbmRlcjtcbiAgICBjb25zdCBnYXNDb25maWcgPSB7IC4uLnRoaXMuZ2FzQ29uZmlnLCAuLi5vdmVycmlkZXM/Lmdhc0NvbmZpZyB9O1xuXG4gICAgaWYgKCFzZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBzZW5kZXInKTtcbiAgICB9XG5cbiAgICBpZiAoIWdhc0NvbmZpZy5idWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnYXMgYnVkZ2V0Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFnYXNDb25maWcucGF5bWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGdhcyBwYXltZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFnYXNDb25maWcucHJpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnYXMgcHJpY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXI6IHByZXBhcmVTdWlBZGRyZXNzKHNlbmRlciksXG4gICAgICBleHBpcmF0aW9uOiBleHBpcmF0aW9uID8gZXhwaXJhdGlvbiA6IHsgTm9uZTogdHJ1ZSB9LFxuICAgICAgZ2FzRGF0YToge1xuICAgICAgICBwYXltZW50OiBnYXNDb25maWcucGF5bWVudCxcbiAgICAgICAgb3duZXI6IHByZXBhcmVTdWlBZGRyZXNzKHRoaXMuZ2FzQ29uZmlnLm93bmVyID8/IHNlbmRlciksXG4gICAgICAgIHByaWNlOiBCaWdJbnQoZ2FzQ29uZmlnLnByaWNlKSxcbiAgICAgICAgYnVkZ2V0OiBCaWdJbnQoZ2FzQ29uZmlnLmJ1ZGdldCksXG4gICAgICB9LFxuICAgICAga2luZDoge1xuICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjoge1xuICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICB0cmFuc2FjdGlvbnM6IHRoaXMudHJhbnNhY3Rpb25zLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1aWxkZXIuc2VyKCdUcmFuc2FjdGlvbkRhdGEnLCB7IFYxOiB0cmFuc2FjdGlvbkRhdGEgfSwgeyBtYXhTaXplOiBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFIH0pLnRvQnl0ZXMoKTtcbiAgfVxuXG4gIGdldERpZ2VzdCgpIHtcbiAgICBjb25zdCBieXRlcyA9IHRoaXMuYnVpbGQoeyBvbmx5VHJhbnNhY3Rpb25LaW5kOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyhieXRlcyk7XG4gIH1cblxuICBzbmFwc2hvdCgpOiBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlciB7XG4gICAgcmV0dXJuIGNyZWF0ZSh0aGlzLCBTZXJpYWxpemVkVHJhbnNhY3Rpb25EYXRhQnVpbGRlcik7XG4gIH1cbn1cbiJdfQ==