algosdk 1.13.0-beta.1 → 1.14.0-beta.1

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 (143) hide show
  1. package/README.md +6 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.map +1 -1
  4. package/dist/cjs/src/abi/abi_type.js +75 -47
  5. package/dist/cjs/src/abi/abi_type.js.map +1 -1
  6. package/dist/cjs/src/abi/contract.js +6 -4
  7. package/dist/cjs/src/abi/contract.js.map +1 -1
  8. package/dist/cjs/src/abi/index.js +2 -0
  9. package/dist/cjs/src/abi/index.js.map +1 -1
  10. package/dist/cjs/src/abi/interface.js +2 -0
  11. package/dist/cjs/src/abi/interface.js.map +1 -1
  12. package/dist/cjs/src/abi/method.js +5 -8
  13. package/dist/cjs/src/abi/method.js.map +1 -1
  14. package/dist/cjs/src/abi/reference.js +25 -0
  15. package/dist/cjs/src/abi/reference.js.map +1 -0
  16. package/dist/cjs/src/abi/transaction.js +52 -0
  17. package/dist/cjs/src/abi/transaction.js.map +1 -0
  18. package/dist/cjs/src/client/baseHTTPClient.js +3 -0
  19. package/dist/cjs/src/client/baseHTTPClient.js.map +1 -0
  20. package/dist/cjs/src/client/client.js +164 -104
  21. package/dist/cjs/src/client/client.js.map +1 -1
  22. package/dist/cjs/src/client/urlTokenBaseHTTPClient.js +138 -0
  23. package/dist/cjs/src/client/urlTokenBaseHTTPClient.js.map +1 -0
  24. package/dist/cjs/src/client/v2/algod/algod.js +262 -9
  25. package/dist/cjs/src/client/v2/algod/algod.js.map +1 -1
  26. package/dist/cjs/src/client/v2/algod/models/types.js +26 -4
  27. package/dist/cjs/src/client/v2/algod/models/types.js.map +1 -1
  28. package/dist/cjs/src/client/v2/indexer/indexer.js +160 -3
  29. package/dist/cjs/src/client/v2/indexer/indexer.js.map +1 -1
  30. package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js +98 -6
  31. package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  32. package/dist/cjs/src/client/v2/serviceClient.js +17 -8
  33. package/dist/cjs/src/client/v2/serviceClient.js.map +1 -1
  34. package/dist/cjs/src/composer.js +159 -38
  35. package/dist/cjs/src/composer.js.map +1 -1
  36. package/dist/cjs/src/dryrun.js +105 -0
  37. package/dist/cjs/src/dryrun.js.map +1 -0
  38. package/dist/cjs/src/logic/langspec.json +456 -153
  39. package/dist/cjs/src/logicTemplates/dynamicfee.js +8 -0
  40. package/dist/cjs/src/logicTemplates/dynamicfee.js.map +1 -1
  41. package/dist/cjs/src/logicTemplates/htlc.js +5 -0
  42. package/dist/cjs/src/logicTemplates/htlc.js.map +1 -1
  43. package/dist/cjs/src/logicTemplates/limitorder.js +6 -0
  44. package/dist/cjs/src/logicTemplates/limitorder.js.map +1 -1
  45. package/dist/cjs/src/logicTemplates/periodicpayment.js +5 -0
  46. package/dist/cjs/src/logicTemplates/periodicpayment.js.map +1 -1
  47. package/dist/cjs/src/logicTemplates/split.js +6 -0
  48. package/dist/cjs/src/logicTemplates/split.js.map +1 -1
  49. package/dist/cjs/src/main.js +5 -1
  50. package/dist/cjs/src/main.js.map +1 -1
  51. package/dist/cjs/src/makeTxn.js +5 -4
  52. package/dist/cjs/src/makeTxn.js.map +1 -1
  53. package/dist/cjs/src/transaction.js +45 -11
  54. package/dist/cjs/src/transaction.js.map +1 -1
  55. package/dist/cjs/src/types/transactions/base.js +11 -2
  56. package/dist/cjs/src/types/transactions/base.js.map +1 -1
  57. package/dist/cjs/src/wait.js +21 -8
  58. package/dist/cjs/src/wait.js.map +1 -1
  59. package/dist/esm/src/abi/abi_type.js +75 -47
  60. package/dist/esm/src/abi/abi_type.js.map +1 -1
  61. package/dist/esm/src/abi/contract.js +6 -4
  62. package/dist/esm/src/abi/contract.js.map +1 -1
  63. package/dist/esm/src/abi/index.js +2 -0
  64. package/dist/esm/src/abi/index.js.map +1 -1
  65. package/dist/esm/src/abi/interface.js +2 -0
  66. package/dist/esm/src/abi/interface.js.map +1 -1
  67. package/dist/esm/src/abi/method.js +3 -5
  68. package/dist/esm/src/abi/method.js.map +1 -1
  69. package/dist/esm/src/abi/reference.js +21 -0
  70. package/dist/esm/src/abi/reference.js.map +1 -0
  71. package/dist/esm/src/abi/transaction.js +47 -0
  72. package/dist/esm/src/abi/transaction.js.map +1 -0
  73. package/dist/esm/src/client/baseHTTPClient.js +2 -0
  74. package/dist/esm/src/client/baseHTTPClient.js.map +1 -0
  75. package/dist/esm/src/client/client.js +164 -101
  76. package/dist/esm/src/client/client.js.map +1 -1
  77. package/dist/esm/src/client/urlTokenBaseHTTPClient.js +112 -0
  78. package/dist/esm/src/client/urlTokenBaseHTTPClient.js.map +1 -0
  79. package/dist/esm/src/client/v2/algod/algod.js +262 -9
  80. package/dist/esm/src/client/v2/algod/algod.js.map +1 -1
  81. package/dist/esm/src/client/v2/algod/models/types.js +26 -4
  82. package/dist/esm/src/client/v2/algod/models/types.js.map +1 -1
  83. package/dist/esm/src/client/v2/indexer/indexer.js +160 -3
  84. package/dist/esm/src/client/v2/indexer/indexer.js.map +1 -1
  85. package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js +98 -6
  86. package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  87. package/dist/esm/src/client/v2/serviceClient.js +17 -8
  88. package/dist/esm/src/client/v2/serviceClient.js.map +1 -1
  89. package/dist/esm/src/composer.js +160 -39
  90. package/dist/esm/src/composer.js.map +1 -1
  91. package/dist/esm/src/dryrun.js +101 -0
  92. package/dist/esm/src/dryrun.js.map +1 -0
  93. package/dist/esm/src/logic/langspec.json +456 -153
  94. package/dist/esm/src/logicTemplates/dynamicfee.js +8 -0
  95. package/dist/esm/src/logicTemplates/dynamicfee.js.map +1 -1
  96. package/dist/esm/src/logicTemplates/htlc.js +5 -0
  97. package/dist/esm/src/logicTemplates/htlc.js.map +1 -1
  98. package/dist/esm/src/logicTemplates/limitorder.js +6 -0
  99. package/dist/esm/src/logicTemplates/limitorder.js.map +1 -1
  100. package/dist/esm/src/logicTemplates/periodicpayment.js +5 -0
  101. package/dist/esm/src/logicTemplates/periodicpayment.js.map +1 -1
  102. package/dist/esm/src/logicTemplates/split.js +6 -0
  103. package/dist/esm/src/logicTemplates/split.js.map +1 -1
  104. package/dist/esm/src/main.js +2 -0
  105. package/dist/esm/src/main.js.map +1 -1
  106. package/dist/esm/src/makeTxn.js +5 -4
  107. package/dist/esm/src/makeTxn.js.map +1 -1
  108. package/dist/esm/src/transaction.js +46 -12
  109. package/dist/esm/src/transaction.js.map +1 -1
  110. package/dist/esm/src/types/transactions/base.js +9 -1
  111. package/dist/esm/src/types/transactions/base.js.map +1 -1
  112. package/dist/esm/src/wait.js +21 -8
  113. package/dist/esm/src/wait.js.map +1 -1
  114. package/dist/types/src/abi/abi_type.d.ts +19 -19
  115. package/dist/types/src/abi/contract.d.ts +10 -2
  116. package/dist/types/src/abi/index.d.ts +2 -0
  117. package/dist/types/src/abi/interface.d.ts +2 -0
  118. package/dist/types/src/abi/method.d.ts +14 -12
  119. package/dist/types/src/abi/reference.d.ts +15 -0
  120. package/dist/types/src/abi/transaction.d.ts +33 -0
  121. package/dist/types/src/client/baseHTTPClient.d.ts +41 -0
  122. package/dist/types/src/client/client.d.ts +66 -31
  123. package/dist/types/src/client/kmd.d.ts +1 -1
  124. package/dist/types/src/client/urlTokenBaseHTTPClient.d.ts +44 -0
  125. package/dist/types/src/client/v2/algod/algod.d.ts +263 -9
  126. package/dist/types/src/client/v2/algod/models/types.d.ts +47 -5
  127. package/dist/types/src/client/v2/indexer/indexer.d.ts +161 -3
  128. package/dist/types/src/client/v2/indexer/lookupAssetBalances.d.ts +98 -0
  129. package/dist/types/src/client/v2/serviceClient.d.ts +6 -2
  130. package/dist/types/src/composer.d.ts +19 -3
  131. package/dist/types/src/dryrun.d.ts +20 -0
  132. package/dist/types/src/logicTemplates/dynamicfee.d.ts +8 -0
  133. package/dist/types/src/logicTemplates/htlc.d.ts +5 -0
  134. package/dist/types/src/logicTemplates/limitorder.d.ts +6 -0
  135. package/dist/types/src/logicTemplates/periodicpayment.d.ts +5 -0
  136. package/dist/types/src/logicTemplates/split.d.ts +6 -0
  137. package/dist/types/src/main.d.ts +3 -0
  138. package/dist/types/src/makeTxn.d.ts +11 -9
  139. package/dist/types/src/transaction.d.ts +3 -1
  140. package/dist/types/src/types/transactions/base.d.ts +10 -5
  141. package/dist/types/src/types/transactions/encoded.d.ts +4 -0
  142. package/dist/types/src/types/transactions/keyreg.d.ts +1 -1
  143. package/package.json +6 -4
@@ -8,6 +8,10 @@ const group_1 = require("./group");
8
8
  const wait_1 = require("./wait");
9
9
  const signer_1 = require("./signer");
10
10
  const base_1 = require("./types/transactions/base");
11
+ // First 4 bytes of SHA-512/256 hash of "return"
12
+ const RETURN_PREFIX = Buffer.from([21, 31, 124, 117]);
13
+ // The maximum number of arguments for an application call transaction
14
+ const MAX_APP_ARGS = 16;
11
15
  var AtomicTransactionComposerStatus;
12
16
  (function (AtomicTransactionComposerStatus) {
13
17
  /** The atomic group is still under construction. */
@@ -21,6 +25,32 @@ var AtomicTransactionComposerStatus;
21
25
  /** The atomic group has been finalized, signed, submitted, and successfully committed to a block. */
22
26
  AtomicTransactionComposerStatus[AtomicTransactionComposerStatus["COMMITTED"] = 4] = "COMMITTED";
23
27
  })(AtomicTransactionComposerStatus = exports.AtomicTransactionComposerStatus || (exports.AtomicTransactionComposerStatus = {}));
28
+ /**
29
+ * Add a value to an application call's foreign array. The addition will be as compact as possible,
30
+ * and this function will return an index that can be used to reference `valueToAdd` in `array`.
31
+ *
32
+ * @param valueToAdd - The value to add to the array. If this value is already present in the array,
33
+ * it will not be added again. Instead, the existing index will be returned.
34
+ * @param array - The existing foreign array. This input may be modified to append `valueToAdd`.
35
+ * @param zeroValue - If provided, this value indicated two things: the 0 value is special for this
36
+ * array, so all indexes into `array` must start at 1; additionally, if `valueToAdd` equals
37
+ * `zeroValue`, then `valueToAdd` will not be added to the array, and instead the 0 indexes will
38
+ * be returned.
39
+ * @returns An index that can be used to reference `valueToAdd` in `array`.
40
+ */
41
+ function populateForeignArray(valueToAdd, array, zeroValue) {
42
+ if (zeroValue != null && valueToAdd === zeroValue) {
43
+ return 0;
44
+ }
45
+ const offset = zeroValue == null ? 0 : 1;
46
+ for (let i = 0; i < array.length; i++) {
47
+ if (valueToAdd === array[i]) {
48
+ return i + offset;
49
+ }
50
+ }
51
+ array.push(valueToAdd);
52
+ return array.length - 1 + offset;
53
+ }
24
54
  /** A class used to construct and execute atomic transaction groups */
25
55
  class AtomicTransactionComposer {
26
56
  constructor() {
@@ -85,7 +115,7 @@ class AtomicTransactionComposer {
85
115
  * causes the current group to exceed MAX_GROUP_SIZE, or if the provided arguments are invalid
86
116
  * for the given method.
87
117
  */
88
- addMethodCall({ appId, method, methodArgs, sender, suggestedParams, onComplete, note, lease, rekeyTo, signer, }) {
118
+ addMethodCall({ appID, method, methodArgs, sender, suggestedParams, onComplete, approvalProgram, clearProgram, numGlobalInts, numGlobalByteSlices, numLocalInts, numLocalByteSlices, extraPages, note, lease, rekeyTo, signer, }) {
89
119
  if (this.status !== AtomicTransactionComposerStatus.BUILDING) {
90
120
  throw new Error('Cannot add transactions when composer status is not BUILDING');
91
121
  }
@@ -93,8 +123,36 @@ class AtomicTransactionComposer {
93
123
  AtomicTransactionComposer.MAX_GROUP_SIZE) {
94
124
  throw new Error(`Adding additional transactions exceeds the maximum atomic group size of ${AtomicTransactionComposer.MAX_GROUP_SIZE}`);
95
125
  }
96
- if (appId === 0) {
97
- throw new Error('Application create call not supported');
126
+ if (appID === 0) {
127
+ if (approvalProgram == null ||
128
+ clearProgram == null ||
129
+ numGlobalInts == null ||
130
+ numGlobalByteSlices == null ||
131
+ numLocalInts == null ||
132
+ numLocalByteSlices == null) {
133
+ throw new Error('One of the following required parameters for application creation is missing: approvalProgram, clearProgram, numGlobalInts, numGlobalByteSlices, numLocalInts, numLocalByteSlices');
134
+ }
135
+ }
136
+ else if (onComplete === base_1.OnApplicationComplete.UpdateApplicationOC) {
137
+ if (approvalProgram == null || clearProgram == null) {
138
+ throw new Error('One of the following required parameters for OnApplicationComplete.UpdateApplicationOC is missing: approvalProgram, clearProgram');
139
+ }
140
+ if (numGlobalInts != null ||
141
+ numGlobalByteSlices != null ||
142
+ numLocalInts != null ||
143
+ numLocalByteSlices != null ||
144
+ extraPages != null) {
145
+ throw new Error('One of the following application creation parameters were set on a non-creation call: numGlobalInts, numGlobalByteSlices, numLocalInts, numLocalByteSlices, extraPages');
146
+ }
147
+ }
148
+ else if (approvalProgram != null ||
149
+ clearProgram != null ||
150
+ numGlobalInts != null ||
151
+ numGlobalByteSlices != null ||
152
+ numLocalInts != null ||
153
+ numLocalByteSlices != null ||
154
+ extraPages != null) {
155
+ throw new Error('One of the following application creation parameters were set on a non-creation call: approvalProgram, clearProgram, numGlobalInts, numGlobalByteSlices, numLocalInts, numLocalByteSlices, extraPages');
98
156
  }
99
157
  if (methodArgs == null) {
100
158
  // eslint-disable-next-line no-param-reassign
@@ -103,17 +161,19 @@ class AtomicTransactionComposer {
103
161
  if (methodArgs.length !== method.args.length) {
104
162
  throw new Error(`Incorrect number of method arguments. Expected ${method.args.length}, got ${methodArgs.length}`);
105
163
  }
106
- let appArgTypes = [];
107
- let appArgValues = [];
164
+ let basicArgTypes = [];
165
+ let basicArgValues = [];
108
166
  const txnArgs = [];
167
+ const refArgTypes = [];
168
+ const refArgValues = [];
169
+ const refArgIndexToBasicArgIndex = new Map();
109
170
  for (let i = 0; i < methodArgs.length; i++) {
110
- const argSpec = method.args[i];
171
+ let argType = method.args[i].type;
111
172
  const argValue = methodArgs[i];
112
- if (typeof argSpec.type === 'string' &&
113
- abi_1.abiTypeIsTransaction(argSpec.type)) {
173
+ if (abi_1.abiTypeIsTransaction(argType)) {
114
174
  if (!signer_1.isTransactionWithSigner(argValue) ||
115
- argSpec.type !== argValue.txn.type) {
116
- throw new Error(`Expected ${argSpec.type} transaction for argument at index ${i}`);
175
+ !abi_1.abiCheckTransactionType(argType, argValue.txn)) {
176
+ throw new Error(`Expected ${argType} transaction for argument at index ${i}`);
117
177
  }
118
178
  if (argValue.txn.group && argValue.txn.group.some((v) => v !== 0)) {
119
179
  throw new Error('Cannot add a transaction with nonzero group ID');
@@ -124,27 +184,89 @@ class AtomicTransactionComposer {
124
184
  if (signer_1.isTransactionWithSigner(argValue)) {
125
185
  throw new Error(`Expected non-transaction value for argument at index ${i}`);
126
186
  }
127
- appArgTypes.push(argSpec.type);
128
- appArgValues.push(argValue);
187
+ if (abi_1.abiTypeIsReference(argType)) {
188
+ refArgIndexToBasicArgIndex.set(refArgTypes.length, basicArgTypes.length);
189
+ refArgTypes.push(argType);
190
+ refArgValues.push(argValue);
191
+ // treat the reference as a uint8 for encoding purposes
192
+ argType = new abi_1.ABIUintType(8);
193
+ }
194
+ if (typeof argType === 'string') {
195
+ throw new Error(`Unknown ABI type: ${argType}`);
196
+ }
197
+ basicArgTypes.push(argType);
198
+ basicArgValues.push(argValue);
129
199
  }
130
- if (appArgTypes.length > 14) {
131
- const lastArgTupleTypes = appArgTypes.slice(14);
132
- const lastArgTupleValues = appArgValues.slice(14);
133
- appArgTypes = appArgTypes.slice(0, 14);
134
- appArgValues = appArgValues.slice(0, 14);
135
- appArgTypes.push(new abi_1.ABITupleType(lastArgTupleTypes));
136
- appArgValues.push(lastArgTupleValues);
200
+ const resolvedRefIndexes = [];
201
+ const foreignAccounts = [];
202
+ const foreignApps = [];
203
+ const foreignAssets = [];
204
+ for (let i = 0; i < refArgTypes.length; i++) {
205
+ const refType = refArgTypes[i];
206
+ const refValue = refArgValues[i];
207
+ let resolved = 0;
208
+ switch (refType) {
209
+ case abi_1.ABIReferenceType.account: {
210
+ const addressType = new abi_1.ABIAddressType();
211
+ const address = addressType.decode(addressType.encode(refValue));
212
+ resolved = populateForeignArray(address, foreignAccounts, sender);
213
+ break;
214
+ }
215
+ case abi_1.ABIReferenceType.application: {
216
+ const uint64Type = new abi_1.ABIUintType(64);
217
+ const refAppID = uint64Type.decode(uint64Type.encode(refValue));
218
+ if (refAppID > Number.MAX_SAFE_INTEGER) {
219
+ throw new Error(`Expected safe integer for application value, got ${refAppID}`);
220
+ }
221
+ resolved = populateForeignArray(Number(refAppID), foreignApps, appID);
222
+ break;
223
+ }
224
+ case abi_1.ABIReferenceType.asset: {
225
+ const uint64Type = new abi_1.ABIUintType(64);
226
+ const refAssetID = uint64Type.decode(uint64Type.encode(refValue));
227
+ if (refAssetID > Number.MAX_SAFE_INTEGER) {
228
+ throw new Error(`Expected safe integer for asset value, got ${refAssetID}`);
229
+ }
230
+ resolved = populateForeignArray(Number(refAssetID), foreignAssets);
231
+ break;
232
+ }
233
+ default:
234
+ throw new Error(`Unknown reference type: ${refType}`);
235
+ }
236
+ resolvedRefIndexes.push(resolved);
237
+ }
238
+ for (let i = 0; i < resolvedRefIndexes.length; i++) {
239
+ const basicArgIndex = refArgIndexToBasicArgIndex.get(i);
240
+ basicArgValues[basicArgIndex] = resolvedRefIndexes[i];
241
+ }
242
+ if (basicArgTypes.length > MAX_APP_ARGS - 1) {
243
+ const lastArgTupleTypes = basicArgTypes.slice(MAX_APP_ARGS - 2);
244
+ const lastArgTupleValues = basicArgValues.slice(MAX_APP_ARGS - 2);
245
+ basicArgTypes = basicArgTypes.slice(0, MAX_APP_ARGS - 2);
246
+ basicArgValues = basicArgValues.slice(0, MAX_APP_ARGS - 2);
247
+ basicArgTypes.push(new abi_1.ABITupleType(lastArgTupleTypes));
248
+ basicArgValues.push(lastArgTupleValues);
137
249
  }
138
250
  const appArgsEncoded = [method.getSelector()];
139
- for (let i = 0; i < appArgTypes.length; i++) {
140
- appArgsEncoded.push(appArgTypes[i].encode(appArgValues[i]));
251
+ for (let i = 0; i < basicArgTypes.length; i++) {
252
+ appArgsEncoded.push(basicArgTypes[i].encode(basicArgValues[i]));
141
253
  }
142
254
  const appCall = {
143
255
  txn: makeTxn_1.makeApplicationCallTxnFromObject({
144
256
  from: sender,
145
- appIndex: appId,
257
+ appIndex: appID,
146
258
  appArgs: appArgsEncoded,
259
+ accounts: foreignAccounts,
260
+ foreignApps,
261
+ foreignAssets,
147
262
  onComplete: onComplete == null ? base_1.OnApplicationComplete.NoOpOC : onComplete,
263
+ approvalProgram,
264
+ clearProgram,
265
+ numGlobalInts,
266
+ numGlobalByteSlices,
267
+ numLocalInts,
268
+ numLocalByteSlices,
269
+ extraPages,
148
270
  lease,
149
271
  note,
150
272
  rekeyTo,
@@ -165,7 +287,9 @@ class AtomicTransactionComposer {
165
287
  if (this.transactions.length === 0) {
166
288
  throw new Error('Cannot build a group with 0 transactions');
167
289
  }
168
- group_1.assignGroupID(this.transactions.map((txnWithSigner) => txnWithSigner.txn));
290
+ if (this.transactions.length > 1) {
291
+ group_1.assignGroupID(this.transactions.map((txnWithSigner) => txnWithSigner.txn));
292
+ }
169
293
  this.status = AtomicTransactionComposerStatus.BUILT;
170
294
  }
171
295
  return this.transactions;
@@ -265,6 +389,7 @@ class AtomicTransactionComposer {
265
389
  throw new Error('Transaction group has already been executed successfully');
266
390
  }
267
391
  const txIDs = await this.submit(client);
392
+ this.status = AtomicTransactionComposerStatus.SUBMITTED;
268
393
  const firstMethodCallIndex = this.transactions.findIndex((_, index) => this.methodCalls.has(index));
269
394
  const indexToWaitFor = firstMethodCallIndex === -1 ? 0 : firstMethodCallIndex;
270
395
  const confirmedTxnInfo = await wait_1.waitForConfirmation(client, txIDs[indexToWaitFor], waitRounds);
@@ -278,26 +403,22 @@ class AtomicTransactionComposer {
278
403
  rawReturnValue: new Uint8Array(),
279
404
  };
280
405
  try {
406
+ const pendingInfo = txnIndex === firstMethodCallIndex
407
+ ? confirmedTxnInfo
408
+ : // eslint-disable-next-line no-await-in-loop
409
+ await client.pendingTransactionInformation(txID).do();
410
+ methodResult.txInfo = pendingInfo;
281
411
  if (method.returns.type !== 'void') {
282
- const pendingInfo = txnIndex === firstMethodCallIndex
283
- ? confirmedTxnInfo
284
- : // eslint-disable-next-line no-await-in-loop
285
- await client.pendingTransactionInformation(txID).do();
286
412
  const logs = pendingInfo.logs || [];
287
- // first 4 bytes of SHA-512/256 hash of "return"
288
- const returnPrefix = Buffer.from([21, 31, 124, 117]);
289
- let returnValueEncoded;
290
- for (let i = logs.length - 1; i >= 0; i--) {
291
- const log = Buffer.from(logs[i], 'base64');
292
- if (log.byteLength >= 4 && log.slice(0, 4).equals(returnPrefix)) {
293
- returnValueEncoded = log.slice(4);
294
- break;
295
- }
413
+ if (logs.length === 0) {
414
+ throw new Error('App call transaction did not log a return value');
296
415
  }
297
- if (returnValueEncoded == null) {
416
+ const lastLog = Buffer.from(logs[logs.length - 1], 'base64');
417
+ if (lastLog.byteLength < 4 ||
418
+ !lastLog.slice(0, 4).equals(RETURN_PREFIX)) {
298
419
  throw new Error('App call transaction did not log a return value');
299
420
  }
300
- methodResult.rawReturnValue = new Uint8Array(returnValueEncoded);
421
+ methodResult.rawReturnValue = new Uint8Array(lastLog.slice(4));
301
422
  methodResult.returnValue = method.returns.type.decode(methodResult.rawReturnValue);
302
423
  }
303
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../src/composer.ts"],"names":[],"mappings":";;;AAAA,+BAMe;AACf,+CAAqE;AACrE,uCAA6D;AAC7D,mCAAwC;AACxC,iCAA6C;AAE7C,qCAIkB;AAClB,oDAGmC;AAsBnC,IAAY,+BAeX;AAfD,WAAY,+BAA+B;IACzC,oDAAoD;IACpD,6FAAQ,CAAA;IAER,+DAA+D;IAC/D,uFAAK,CAAA;IAEL,4FAA4F;IAC5F,yFAAM,CAAA;IAEN,iFAAiF;IACjF,+FAAS,CAAA;IAET,qGAAqG;IACrG,+FAAS,CAAA;AACX,CAAC,EAfW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAe1C;AAED,sEAAsE;AACtE,MAAa,yBAAyB;IAAtC;QAIU,WAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC;QAClD,iBAAY,GAA4B,EAAE,CAAC;QAC3C,gBAAW,GAA2B,IAAI,GAAG,EAAE,CAAC;QAChD,eAAU,GAAiB,EAAE,CAAC;QAC9B,UAAK,GAAa,EAAE,CAAC;IA4a/B,CAAC;IA1aC;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAEjD,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAClE,8FAA8F;YAC9F,GAAG,EAAE,yBAAW,CAAC,qBAAqB,CAAC;gBACrC,GAAG,GAAG,CAAC,oBAAoB,EAAE;gBAC7B,qBAAqB;gBACrB,GAAG,EAAE,SAAS;aACf,CAAC;YACF,MAAM;SACP,CAAC,CAAC,CAAC;QACJ,QAAQ,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,YAAmC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,EAAE;YACzE,MAAM,IAAI,KAAK,CACb,6EAA6E,yBAAyB,CAAC,cAAc,EAAE,CACxH,CAAC;SACH;QAED,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACzE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,eAAe,EACf,UAAU,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,GAsBP;QACC,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;SACH;QAED,IACE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC5C,yBAAyB,CAAC,cAAc,EACxC;YACA,MAAM,IAAI,KAAK,CACb,2EAA2E,yBAAyB,CAAC,cAAc,EAAE,CACtH,CAAC;SACH;QAED,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,6CAA6C;YAC7C,UAAU,GAAG,EAAE,CAAC;SACjB;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YAC5C,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,UAAU,CAAC,MAAM,EAAE,CACjG,CAAC;SACH;QAED,IAAI,WAAW,GAAc,EAAE,CAAC;QAChC,IAAI,YAAY,GAAe,EAAE,CAAC;QAClC,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE/B,IACE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAChC,0BAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAClC;gBACA,IACE,CAAC,gCAAuB,CAAC,QAAQ,CAAC;oBAClC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,EAClC;oBACA,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,CAAC,IAAI,sCAAsC,CAAC,EAAE,CAClE,CAAC;iBACH;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACjE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACnE;gBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,SAAS;aACV;YAED,IAAI,gCAAuB,CAAC,QAAQ,CAAC,EAAE;gBACrC,MAAM,IAAI,KAAK,CACb,wDAAwD,CAAC,EAAE,CAC5D,CAAC;aACH;YAED,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7B;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;YAC3B,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAElD,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEzC,WAAW,CAAC,IAAI,CAAC,IAAI,kBAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACtD,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACvC;QAED,MAAM,cAAc,GAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7D;QAED,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,0CAAgC,CAAC;gBACpC,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,cAAc;gBACvB,UAAU,EACR,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,4BAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;gBAChE,KAAK;gBACL,IAAI;gBACJ,OAAO;gBACP,eAAe;aAChB,CAAC;YACF,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;aAC7D;YACD,qBAAa,CACX,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAC5D,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,+BAA+B,CAAC,MAAM,EAAE;YACzD,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,yDAAyD;QACzD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE3E,MAAM,gBAAgB,GAAqC,IAAI,GAAG,EAAE,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACjC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aAClC;YAED,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CACrE,CAAC;QAEF,MAAM,UAAU,GAA6B,eAAe,CAAC,GAAG,CAC9D,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;QAEF,KACE,IAAI,WAAW,GAAG,CAAC,EACnB,WAAW,GAAG,cAAc,CAAC,MAAM,EACnC,WAAW,EAAE,EACb;YACA,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAClC;SACF;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;SAC1D;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,IAAI;gBACF,OAAO,qCAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjD;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,KAAK,GAAG,EAAE,CAC7D,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC;QAErD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,MAAe;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE5C,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QAExD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,OAAO,CACX,MAAe,EACf,UAAkB;QAMlB,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,SAAS,EAAE;YAC7D,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExC,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAC5B,CAAC;QACF,MAAM,cAAc,GAClB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACzD,MAAM,gBAAgB,GAAG,MAAM,0BAAmB,CAChD,MAAM,EACN,KAAK,CAAC,cAAc,CAAC,EACrB,UAAU,CACX,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QAExD,MAAM,cAAc,GAAW,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAgB,EAAE,CAAC;QAEtC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7B,MAAM,YAAY,GAAc;gBAC9B,IAAI;gBACJ,cAAc,EAAE,IAAI,UAAU,EAAE;aACjC,CAAC;YAEF,IAAI;gBACF,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;oBAClC,MAAM,WAAW,GACf,QAAQ,KAAK,oBAAoB;wBAC/B,CAAC,CAAC,gBAAgB;wBAClB,CAAC,CAAC,4CAA4C;4BAC5C,MAAM,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;oBAE5D,MAAM,IAAI,GAAa,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;oBAE9C,gDAAgD;oBAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBAErD,IAAI,kBAAsC,CAAC;oBAE3C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACzC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAC3C,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;4BAC/D,kBAAkB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAClC,MAAM;yBACP;qBACF;oBAED,IAAI,kBAAkB,IAAI,IAAI,EAAE;wBAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;qBACpE;oBAED,YAAY,CAAC,cAAc,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;oBACjE,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CACnD,YAAY,CAAC,cAAc,CAC5B,CAAC;iBACH;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,YAAY,CAAC,WAAW,GAAG,GAAG,CAAC;aAChC;YAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAClC;QAED,OAAO;YACL,cAAc;YACd,KAAK;YACL,aAAa;SACd,CAAC;IACJ,CAAC;;AAnbH,8DAobC;AAnbC,uDAAuD;AAChD,wCAAc,GAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../src/composer.ts"],"names":[],"mappings":";;;AAAA,+BAWe;AACf,+CAAqE;AACrE,uCAA6D;AAC7D,mCAAwC;AACxC,iCAA6C;AAE7C,qCAIkB;AAClB,oDAGmC;AAEnC,gDAAgD;AAChD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtD,sEAAsE;AACtE,MAAM,YAAY,GAAG,EAAE,CAAC;AAwBxB,IAAY,+BAeX;AAfD,WAAY,+BAA+B;IACzC,oDAAoD;IACpD,6FAAQ,CAAA;IAER,+DAA+D;IAC/D,uFAAK,CAAA;IAEL,4FAA4F;IAC5F,yFAAM,CAAA;IAEN,iFAAiF;IACjF,+FAAS,CAAA;IAET,qGAAqG;IACrG,+FAAS,CAAA;AACX,CAAC,EAfW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAe1C;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAC3B,UAAgB,EAChB,KAAa,EACb,SAAgB;IAEhB,IAAI,SAAS,IAAI,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;QACjD,OAAO,CAAC,CAAC;KACV;IAED,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;YAC3B,OAAO,CAAC,GAAG,MAAM,CAAC;SACnB;KACF;IAED,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AACnC,CAAC;AAED,sEAAsE;AACtE,MAAa,yBAAyB;IAAtC;QAIU,WAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC;QAClD,iBAAY,GAA4B,EAAE,CAAC;QAC3C,gBAAW,GAA2B,IAAI,GAAG,EAAE,CAAC;QAChD,eAAU,GAAiB,EAAE,CAAC;QAC9B,UAAK,GAAa,EAAE,CAAC;IAgjB/B,CAAC;IA9iBC;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,MAAM,QAAQ,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAEjD,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAClE,8FAA8F;YAC9F,GAAG,EAAE,yBAAW,CAAC,qBAAqB,CAAC;gBACrC,GAAG,GAAG,CAAC,oBAAoB,EAAE;gBAC7B,qBAAqB;gBACrB,GAAG,EAAE,SAAS;aACf,CAAC;YACF,MAAM;SACP,CAAC,CAAC,CAAC;QACJ,QAAQ,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,YAAmC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,EAAE;YACzE,MAAM,IAAI,KAAK,CACb,6EAA6E,yBAAyB,CAAC,cAAc,EAAE,CACxH,CAAC;SACH;QAED,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACzE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,eAAe,EACf,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,GAoCP;QACC,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;SACH;QAED,IACE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC5C,yBAAyB,CAAC,cAAc,EACxC;YACA,MAAM,IAAI,KAAK,CACb,2EAA2E,yBAAyB,CAAC,cAAc,EAAE,CACtH,CAAC;SACH;QAED,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IACE,eAAe,IAAI,IAAI;gBACvB,YAAY,IAAI,IAAI;gBACpB,aAAa,IAAI,IAAI;gBACrB,mBAAmB,IAAI,IAAI;gBAC3B,YAAY,IAAI,IAAI;gBACpB,kBAAkB,IAAI,IAAI,EAC1B;gBACA,MAAM,IAAI,KAAK,CACb,mLAAmL,CACpL,CAAC;aACH;SACF;aAAM,IAAI,UAAU,KAAK,4BAAqB,CAAC,mBAAmB,EAAE;YACnE,IAAI,eAAe,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE;gBACnD,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;aACH;YACD,IACE,aAAa,IAAI,IAAI;gBACrB,mBAAmB,IAAI,IAAI;gBAC3B,YAAY,IAAI,IAAI;gBACpB,kBAAkB,IAAI,IAAI;gBAC1B,UAAU,IAAI,IAAI,EAClB;gBACA,MAAM,IAAI,KAAK,CACb,wKAAwK,CACzK,CAAC;aACH;SACF;aAAM,IACL,eAAe,IAAI,IAAI;YACvB,YAAY,IAAI,IAAI;YACpB,aAAa,IAAI,IAAI;YACrB,mBAAmB,IAAI,IAAI;YAC3B,YAAY,IAAI,IAAI;YACpB,kBAAkB,IAAI,IAAI;YAC1B,UAAU,IAAI,IAAI,EAClB;YACA,MAAM,IAAI,KAAK,CACb,uMAAuM,CACxM,CAAC;SACH;QAED,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,6CAA6C;YAC7C,UAAU,GAAG,EAAE,CAAC;SACjB;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YAC5C,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,UAAU,CAAC,MAAM,EAAE,CACjG,CAAC;SACH;QAED,IAAI,aAAa,GAAc,EAAE,CAAC;QAClC,IAAI,cAAc,GAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAuB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,EAAE,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,0BAAoB,CAAC,OAAO,CAAC,EAAE;gBACjC,IACE,CAAC,gCAAuB,CAAC,QAAQ,CAAC;oBAClC,CAAC,6BAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAC/C;oBACA,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,sCAAsC,CAAC,EAAE,CAC7D,CAAC;iBACH;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACjE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACnE;gBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,SAAS;aACV;YAED,IAAI,gCAAuB,CAAC,QAAQ,CAAC,EAAE;gBACrC,MAAM,IAAI,KAAK,CACb,wDAAwD,CAAC,EAAE,CAC5D,CAAC;aACH;YAED,IAAI,wBAAkB,CAAC,OAAO,CAAC,EAAE;gBAC/B,0BAA0B,CAAC,GAAG,CAC5B,WAAW,CAAC,MAAM,EAClB,aAAa,CAAC,MAAM,CACrB,CAAC;gBACF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,uDAAuD;gBACvD,OAAO,GAAG,IAAI,iBAAW,CAAC,CAAC,CAAC,CAAC;aAC9B;YAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;aACjD;YAED,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,MAAM,kBAAkB,GAAa,EAAE,CAAC;QACxC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,QAAQ,OAAO,EAAE;gBACf,KAAK,sBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM,WAAW,GAAG,IAAI,oBAAc,EAAE,CAAC;oBACzC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACjE,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;oBAClE,MAAM;iBACP;gBACD,KAAK,sBAAgB,CAAC,WAAW,CAAC,CAAC;oBACjC,MAAM,UAAU,GAAG,IAAI,iBAAW,CAAC,EAAE,CAAC,CAAC;oBACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAChE,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAgB,EAAE;wBACtC,MAAM,IAAI,KAAK,CACb,oDAAoD,QAAQ,EAAE,CAC/D,CAAC;qBACH;oBACD,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBACtE,MAAM;iBACP;gBACD,KAAK,sBAAgB,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM,UAAU,GAAG,IAAI,iBAAW,CAAC,EAAE,CAAC,CAAC;oBACvC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClE,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,EAAE;wBACxC,MAAM,IAAI,KAAK,CACb,8CAA8C,UAAU,EAAE,CAC3D,CAAC;qBACH;oBACD,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;oBACnE,MAAM;iBACP;gBACD;oBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;aACzD;YAED,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,aAAa,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxD,cAAc,CAAC,aAAa,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACvD;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,EAAE;YAC3C,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAChE,MAAM,kBAAkB,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAElE,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACzD,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YAE3D,aAAa,CAAC,IAAI,CAAC,IAAI,kBAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACxD,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACzC;QAED,MAAM,cAAc,GAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE;QAED,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,0CAAgC,CAAC;gBACpC,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,eAAe;gBACzB,WAAW;gBACX,aAAa;gBACb,UAAU,EACR,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,4BAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;gBAChE,eAAe;gBACf,YAAY;gBACZ,aAAa;gBACb,mBAAmB;gBACnB,YAAY;gBACZ,kBAAkB;gBAClB,UAAU;gBACV,KAAK;gBACL,IAAI;gBACJ,OAAO;gBACP,eAAe;aAChB,CAAC;YACF,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,QAAQ,EAAE;YAC5D,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;aAC7D;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,qBAAa,CACX,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAC5D,CAAC;aACH;YACD,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,+BAA+B,CAAC,MAAM,EAAE;YACzD,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,yDAAyD;QACzD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE3E,MAAM,gBAAgB,GAAqC,IAAI,GAAG,EAAE,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACjC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aAClC;YAED,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CACrE,CAAC;QAEF,MAAM,UAAU,GAA6B,eAAe,CAAC,GAAG,CAC9D,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;QAEF,KACE,IAAI,WAAW,GAAG,CAAC,EACnB,WAAW,GAAG,cAAc,CAAC,MAAM,EACnC,WAAW,EAAE,EACb;YACA,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAClC;SACF;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;SAC1D;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,IAAI;gBACF,OAAO,qCAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjD;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,KAAK,GAAG,EAAE,CAC7D,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC;QAErD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,MAAe;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE5C,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QAExD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,OAAO,CACX,MAAe,EACf,UAAkB;QAMlB,IAAI,IAAI,CAAC,MAAM,KAAK,+BAA+B,CAAC,SAAS,EAAE;YAC7D,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QAExD,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAC5B,CAAC;QACF,MAAM,cAAc,GAClB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACzD,MAAM,gBAAgB,GAAG,MAAM,0BAAmB,CAChD,MAAM,EACN,KAAK,CAAC,cAAc,CAAC,EACrB,UAAU,CACX,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC;QAExD,MAAM,cAAc,GAAW,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAgB,EAAE,CAAC;QAEtC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7B,MAAM,YAAY,GAAc;gBAC9B,IAAI;gBACJ,cAAc,EAAE,IAAI,UAAU,EAAE;aACjC,CAAC;YAEF,IAAI;gBACF,MAAM,WAAW,GACf,QAAQ,KAAK,oBAAoB;oBAC/B,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,4CAA4C;wBAC5C,MAAM,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC5D,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;gBAClC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;oBAClC,MAAM,IAAI,GAAa,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;qBACpE;oBAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC7D,IACE,OAAO,CAAC,UAAU,GAAG,CAAC;wBACtB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAC1C;wBACA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;qBACpE;oBAED,YAAY,CAAC,cAAc,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CACnD,YAAY,CAAC,cAAc,CAC5B,CAAC;iBACH;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,YAAY,CAAC,WAAW,GAAG,GAAG,CAAC;aAChC;YAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAClC;QAED,OAAO;YACL,cAAc;YACd,KAAK;YACL,aAAa;SACd,CAAC;IACJ,CAAC;;AAvjBH,8DAwjBC;AAvjBC,uDAAuD;AAChD,wCAAc,GAAW,EAAE,CAAC"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDryrun = void 0;
4
+ const types_1 = require("./client/v2/algod/models/types");
5
+ const transactions_1 = require("./types/transactions");
6
+ const address_1 = require("./encoding/address");
7
+ const defaultAppId = 1380011588;
8
+ function decodePrograms(ap) {
9
+ // eslint-disable-next-line no-param-reassign
10
+ ap.params['approval-program'] = Buffer.from(ap.params['approval-program'].toString(), 'base64');
11
+ // eslint-disable-next-line no-param-reassign
12
+ ap.params['clear-state-program'] = Buffer.from(ap.params['clear-state-program'].toString(), 'base64');
13
+ return ap;
14
+ }
15
+ /**
16
+ * createDryrun takes an Algod Client (from algod.AlgodV2Client) and an array of Signed Transactions
17
+ * from (transaction.SignedTransaction) and creates a DryrunRequest object with relevant balances
18
+ * @param client - the AlgodClient to make requests against
19
+ * @param txns - the array of SignedTransaction to use for generating the DryrunRequest object
20
+ * @param protocolVersion - the string representing the protocol version to use
21
+ * @param latestTimestamp - the timestamp
22
+ * @returns the DryrunRequest object constructed from the SignedTransactions passed
23
+ */
24
+ async function createDryrun({ client, txns, protocolVersion, latestTimestamp, round, sources, }) {
25
+ const appInfos = [];
26
+ const acctInfos = [];
27
+ const apps = [];
28
+ const assets = [];
29
+ const accts = [];
30
+ for (const t of txns) {
31
+ if (t.txn.type === transactions_1.TransactionType.appl) {
32
+ accts.push(address_1.encodeAddress(t.txn.from.publicKey));
33
+ if (t.txn.appAccounts)
34
+ accts.push(...t.txn.appAccounts.map((a) => address_1.encodeAddress(a.publicKey)));
35
+ if (t.txn.appForeignApps)
36
+ apps.push(...t.txn.appForeignApps);
37
+ if (t.txn.appForeignAssets)
38
+ assets.push(...t.txn.appForeignAssets);
39
+ // Create application,
40
+ if (t.txn.appIndex === 0) {
41
+ appInfos.push(new types_1.Application(defaultAppId, new types_1.ApplicationParams({
42
+ creator: address_1.encodeAddress(t.txn.from.publicKey),
43
+ approvalProgram: t.txn.appApprovalProgram,
44
+ clearStateProgram: t.txn.appClearProgram,
45
+ localStateSchema: new types_1.ApplicationStateSchema(t.txn.appLocalInts, t.txn.appLocalByteSlices),
46
+ globalStateSchema: new types_1.ApplicationStateSchema(t.txn.appGlobalInts, t.txn.appGlobalByteSlices),
47
+ })));
48
+ }
49
+ else {
50
+ apps.push(t.txn.appIndex);
51
+ accts.push(address_1.getApplicationAddress(t.txn.appIndex));
52
+ }
53
+ }
54
+ }
55
+ // Dedupe and add creator to accts array
56
+ const assetPromises = [];
57
+ for (const assetId of [...new Set(assets)]) {
58
+ assetPromises.push(client
59
+ .getAssetByID(assetId)
60
+ .do()
61
+ .then((assetInfo) => {
62
+ accts.push(assetInfo.params.creator);
63
+ }));
64
+ }
65
+ // Wait for assets to finish since we append to accts array
66
+ await Promise.all(assetPromises);
67
+ // Dedupe and get app info for all apps
68
+ const appPromises = [];
69
+ for (const appId of [...new Set(apps)]) {
70
+ appPromises.push(client
71
+ .getApplicationByID(appId)
72
+ .do()
73
+ .then((appInfo) => {
74
+ const ai = decodePrograms(appInfo);
75
+ appInfos.push(ai);
76
+ accts.push(ai.params.creator);
77
+ }));
78
+ }
79
+ await Promise.all(appPromises);
80
+ const acctPromises = [];
81
+ for (const acct of [...new Set(accts)]) {
82
+ acctPromises.push(client
83
+ .accountInformation(acct)
84
+ .do()
85
+ .then((acctInfo) => {
86
+ if ('created-apps' in acctInfo) {
87
+ // eslint-disable-next-line no-param-reassign
88
+ acctInfo['created-apps'] = acctInfo['created-apps'].map((app) => decodePrograms(app));
89
+ }
90
+ acctInfos.push(acctInfo);
91
+ }));
92
+ }
93
+ await Promise.all(acctPromises);
94
+ return new types_1.DryrunRequest({
95
+ txns: txns.map((st) => ({ ...st, txn: st.txn.get_obj_for_encoding() })),
96
+ accounts: acctInfos,
97
+ apps: appInfos,
98
+ latestTimestamp,
99
+ round,
100
+ protocolVersion,
101
+ sources,
102
+ });
103
+ }
104
+ exports.createDryrun = createDryrun;
105
+ //# sourceMappingURL=dryrun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dryrun.js","sourceRoot":"","sources":["../../../src/dryrun.ts"],"names":[],"mappings":"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"}