@aztec/simulator 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2

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 (304) hide show
  1. package/dest/acvm/acvm.js +18 -21
  2. package/dest/acvm/acvm_types.js +3 -2
  3. package/dest/acvm/deserialize.js +9 -13
  4. package/dest/acvm/index.js +0 -1
  5. package/dest/acvm/oracle/index.js +0 -1
  6. package/dest/acvm/oracle/oracle.js +42 -23
  7. package/dest/acvm/oracle/typed_oracle.js +36 -38
  8. package/dest/acvm/serialize.js +7 -14
  9. package/dest/avm/avm_context.js +24 -27
  10. package/dest/avm/avm_contract_call_result.js +12 -7
  11. package/dest/avm/avm_execution_environment.js +10 -7
  12. package/dest/avm/avm_gas.js +93 -56
  13. package/dest/avm/avm_machine_state.js +60 -61
  14. package/dest/avm/avm_memory_types.js +166 -255
  15. package/dest/avm/avm_simulator.js +68 -47
  16. package/dest/avm/avm_tree.js +282 -276
  17. package/dest/avm/bytecode_utils.js +8 -6
  18. package/dest/avm/errors.js +46 -63
  19. package/dest/avm/fixtures/avm_simulation_tester.js +18 -17
  20. package/dest/avm/fixtures/base_avm_simulation_tester.js +21 -16
  21. package/dest/avm/fixtures/index.js +27 -26
  22. package/dest/avm/fixtures/simple_contract_data_source.js +9 -13
  23. package/dest/avm/index.js +0 -1
  24. package/dest/avm/journal/index.js +0 -1
  25. package/dest/avm/journal/journal.js +147 -200
  26. package/dest/avm/journal/nullifiers.js +43 -46
  27. package/dest/avm/journal/public_storage.js +73 -87
  28. package/dest/avm/opcodes/accrued_substate.js +140 -110
  29. package/dest/avm/opcodes/addressing_mode.js +29 -31
  30. package/dest/avm/opcodes/arithmetic.js +17 -15
  31. package/dest/avm/opcodes/bitwise.js +40 -26
  32. package/dest/avm/opcodes/comparators.js +12 -10
  33. package/dest/avm/opcodes/contract.js +31 -29
  34. package/dest/avm/opcodes/control_flow.js +47 -43
  35. package/dest/avm/opcodes/conversion.js +30 -26
  36. package/dest/avm/opcodes/ec_add.js +35 -34
  37. package/dest/avm/opcodes/environment_getters.js +33 -33
  38. package/dest/avm/opcodes/external_calls.js +83 -74
  39. package/dest/avm/opcodes/hashing.js +69 -61
  40. package/dest/avm/opcodes/index.js +0 -1
  41. package/dest/avm/opcodes/instruction.js +31 -40
  42. package/dest/avm/opcodes/instruction_impl.js +12 -15
  43. package/dest/avm/opcodes/memory.js +177 -156
  44. package/dest/avm/opcodes/misc.js +27 -25
  45. package/dest/avm/opcodes/multi_scalar_mul.js +43 -41
  46. package/dest/avm/opcodes/storage.js +28 -25
  47. package/dest/avm/serialization/buffer_cursor.js +4 -4
  48. package/dest/avm/serialization/bytecode_serialization.js +292 -89
  49. package/dest/avm/serialization/instruction_serialization.js +67 -28
  50. package/dest/avm/test_utils.js +6 -9
  51. package/dest/client/client_execution_context.js +197 -219
  52. package/dest/client/db_oracle.js +4 -7
  53. package/dest/client/execution_note_cache.js +80 -81
  54. package/dest/client/index.js +0 -1
  55. package/dest/client/pick_notes.js +27 -30
  56. package/dest/client/private_execution.js +13 -14
  57. package/dest/client/simulator.js +44 -48
  58. package/dest/client/unconstrained_execution.js +8 -11
  59. package/dest/client/view_data_oracle.js +130 -139
  60. package/dest/common/debug_fn_name.js +1 -4
  61. package/dest/common/errors.js +30 -39
  62. package/dest/common/hashed_values_cache.js +16 -20
  63. package/dest/common/index.js +0 -1
  64. package/dest/common/message_load_oracle_inputs.js +7 -7
  65. package/dest/common/simulation_provider.js +3 -6
  66. package/dest/common.js +0 -1
  67. package/dest/providers/acvm_native.js +46 -32
  68. package/dest/providers/acvm_wasm.js +18 -10
  69. package/dest/providers/acvm_wasm_with_blobs.js +2 -5
  70. package/dest/providers/factory.js +5 -5
  71. package/dest/providers/index.js +0 -1
  72. package/dest/public/bytecode_errors.js +1 -2
  73. package/dest/public/db_interfaces.js +1 -2
  74. package/dest/public/execution.js +2 -4
  75. package/dest/public/executor_metrics.js +16 -12
  76. package/dest/public/fee_payment.js +2 -5
  77. package/dest/public/fixtures/index.js +0 -1
  78. package/dest/public/fixtures/public_tx_simulation_tester.js +13 -17
  79. package/dest/public/fixtures/utils.js +11 -14
  80. package/dest/public/index.js +0 -1
  81. package/dest/public/public_db_sources.js +79 -87
  82. package/dest/public/public_processor.js +310 -306
  83. package/dest/public/public_processor_metrics.js +46 -27
  84. package/dest/public/public_tx_context.js +97 -118
  85. package/dest/public/public_tx_simulator.js +299 -314
  86. package/dest/public/side_effect_errors.js +1 -2
  87. package/dest/public/side_effect_trace.js +44 -71
  88. package/dest/public/side_effect_trace_interface.js +1 -2
  89. package/dest/public/unique_class_ids.js +22 -27
  90. package/dest/public/utils.js +16 -11
  91. package/dest/server.js +0 -1
  92. package/dest/stats/index.js +0 -1
  93. package/dest/stats/stats.js +1 -2
  94. package/dest/test/utils.js +5 -4
  95. package/package.json +11 -11
  96. package/src/acvm/oracle/typed_oracle.ts +34 -34
  97. package/src/avm/avm_machine_state.ts +18 -14
  98. package/src/avm/avm_memory_types.ts +43 -183
  99. package/src/avm/avm_simulator.ts +37 -11
  100. package/src/avm/opcodes/accrued_substate.ts +7 -21
  101. package/src/avm/opcodes/addressing_mode.ts +9 -2
  102. package/src/avm/opcodes/arithmetic.ts +1 -3
  103. package/src/avm/opcodes/bitwise.ts +2 -6
  104. package/src/avm/opcodes/comparators.ts +1 -3
  105. package/src/avm/opcodes/contract.ts +1 -3
  106. package/src/avm/opcodes/control_flow.ts +1 -9
  107. package/src/avm/opcodes/conversion.ts +1 -3
  108. package/src/avm/opcodes/ec_add.ts +1 -3
  109. package/src/avm/opcodes/environment_getters.ts +1 -3
  110. package/src/avm/opcodes/external_calls.ts +3 -6
  111. package/src/avm/opcodes/hashing.ts +3 -9
  112. package/src/avm/opcodes/memory.ts +6 -20
  113. package/src/avm/opcodes/misc.ts +1 -3
  114. package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
  115. package/src/avm/opcodes/storage.ts +2 -6
  116. package/src/client/index.ts +2 -2
  117. package/dest/acvm/acvm.d.ts +0 -35
  118. package/dest/acvm/acvm.d.ts.map +0 -1
  119. package/dest/acvm/acvm_types.d.ts +0 -10
  120. package/dest/acvm/acvm_types.d.ts.map +0 -1
  121. package/dest/acvm/deserialize.d.ts +0 -36
  122. package/dest/acvm/deserialize.d.ts.map +0 -1
  123. package/dest/acvm/index.d.ts +0 -6
  124. package/dest/acvm/index.d.ts.map +0 -1
  125. package/dest/acvm/oracle/index.d.ts +0 -14
  126. package/dest/acvm/oracle/index.d.ts.map +0 -1
  127. package/dest/acvm/oracle/oracle.d.ts +0 -49
  128. package/dest/acvm/oracle/oracle.d.ts.map +0 -1
  129. package/dest/acvm/oracle/typed_oracle.d.ts +0 -75
  130. package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
  131. package/dest/acvm/serialize.d.ts +0 -20
  132. package/dest/acvm/serialize.d.ts.map +0 -1
  133. package/dest/avm/avm_context.d.ts +0 -39
  134. package/dest/avm/avm_context.d.ts.map +0 -1
  135. package/dest/avm/avm_contract_call_result.d.ts +0 -30
  136. package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
  137. package/dest/avm/avm_execution_environment.d.ts +0 -21
  138. package/dest/avm/avm_execution_environment.d.ts.map +0 -1
  139. package/dest/avm/avm_gas.d.ts +0 -60
  140. package/dest/avm/avm_gas.d.ts.map +0 -1
  141. package/dest/avm/avm_machine_state.d.ts +0 -93
  142. package/dest/avm/avm_machine_state.d.ts.map +0 -1
  143. package/dest/avm/avm_memory_types.d.ts +0 -310
  144. package/dest/avm/avm_memory_types.d.ts.map +0 -1
  145. package/dest/avm/avm_simulator.d.ts +0 -37
  146. package/dest/avm/avm_simulator.d.ts.map +0 -1
  147. package/dest/avm/avm_tree.d.ts +0 -281
  148. package/dest/avm/avm_tree.d.ts.map +0 -1
  149. package/dest/avm/bytecode_utils.d.ts +0 -5
  150. package/dest/avm/bytecode_utils.d.ts.map +0 -1
  151. package/dest/avm/errors.d.ts +0 -121
  152. package/dest/avm/errors.d.ts.map +0 -1
  153. package/dest/avm/fixtures/avm_simulation_tester.d.ts +0 -21
  154. package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  155. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +0 -35
  156. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  157. package/dest/avm/fixtures/index.d.ts +0 -67
  158. package/dest/avm/fixtures/index.d.ts.map +0 -1
  159. package/dest/avm/fixtures/simple_contract_data_source.d.ts +0 -31
  160. package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  161. package/dest/avm/index.d.ts +0 -4
  162. package/dest/avm/index.d.ts.map +0 -1
  163. package/dest/avm/journal/index.d.ts +0 -2
  164. package/dest/avm/journal/index.d.ts.map +0 -1
  165. package/dest/avm/journal/journal.d.ts +0 -176
  166. package/dest/avm/journal/journal.d.ts.map +0 -1
  167. package/dest/avm/journal/nullifiers.d.ts +0 -62
  168. package/dest/avm/journal/nullifiers.d.ts.map +0 -1
  169. package/dest/avm/journal/public_storage.d.ts +0 -66
  170. package/dest/avm/journal/public_storage.d.ts.map +0 -1
  171. package/dest/avm/opcodes/accrued_substate.d.ts +0 -75
  172. package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
  173. package/dest/avm/opcodes/addressing_mode.d.ts +0 -27
  174. package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
  175. package/dest/avm/opcodes/arithmetic.d.ts +0 -37
  176. package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
  177. package/dest/avm/opcodes/bitwise.d.ts +0 -50
  178. package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
  179. package/dest/avm/opcodes/comparators.d.ts +0 -25
  180. package/dest/avm/opcodes/comparators.d.ts.map +0 -1
  181. package/dest/avm/opcodes/contract.d.ts +0 -21
  182. package/dest/avm/opcodes/contract.d.ts.map +0 -1
  183. package/dest/avm/opcodes/control_flow.d.ts +0 -41
  184. package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
  185. package/dest/avm/opcodes/conversion.d.ts +0 -17
  186. package/dest/avm/opcodes/conversion.d.ts.map +0 -1
  187. package/dest/avm/opcodes/ec_add.d.ts +0 -19
  188. package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
  189. package/dest/avm/opcodes/environment_getters.d.ts +0 -28
  190. package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
  191. package/dest/avm/opcodes/external_calls.d.ts +0 -50
  192. package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
  193. package/dest/avm/opcodes/hashing.d.ts +0 -36
  194. package/dest/avm/opcodes/hashing.d.ts.map +0 -1
  195. package/dest/avm/opcodes/index.d.ts +0 -16
  196. package/dest/avm/opcodes/index.d.ts.map +0 -1
  197. package/dest/avm/opcodes/instruction.d.ts +0 -70
  198. package/dest/avm/opcodes/instruction.d.ts.map +0 -1
  199. package/dest/avm/opcodes/instruction_impl.d.ts +0 -19
  200. package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
  201. package/dest/avm/opcodes/memory.d.ts +0 -74
  202. package/dest/avm/opcodes/memory.d.ts.map +0 -1
  203. package/dest/avm/opcodes/misc.d.ts +0 -17
  204. package/dest/avm/opcodes/misc.d.ts.map +0 -1
  205. package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
  206. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
  207. package/dest/avm/opcodes/storage.d.ts +0 -24
  208. package/dest/avm/opcodes/storage.d.ts.map +0 -1
  209. package/dest/avm/serialization/buffer_cursor.d.ts +0 -28
  210. package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
  211. package/dest/avm/serialization/bytecode_serialization.d.ts +0 -21
  212. package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  213. package/dest/avm/serialization/instruction_serialization.d.ts +0 -105
  214. package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
  215. package/dest/avm/test_utils.d.ts +0 -16
  216. package/dest/avm/test_utils.d.ts.map +0 -1
  217. package/dest/client/client_execution_context.d.ts +0 -214
  218. package/dest/client/client_execution_context.d.ts.map +0 -1
  219. package/dest/client/db_oracle.d.ts +0 -229
  220. package/dest/client/db_oracle.d.ts.map +0 -1
  221. package/dest/client/execution_note_cache.d.ts +0 -93
  222. package/dest/client/execution_note_cache.d.ts.map +0 -1
  223. package/dest/client/index.d.ts +0 -15
  224. package/dest/client/index.d.ts.map +0 -1
  225. package/dest/client/pick_notes.d.ts +0 -85
  226. package/dest/client/pick_notes.d.ts.map +0 -1
  227. package/dest/client/private_execution.d.ts +0 -19
  228. package/dest/client/private_execution.d.ts.map +0 -1
  229. package/dest/client/simulator.d.ts +0 -60
  230. package/dest/client/simulator.d.ts.map +0 -1
  231. package/dest/client/unconstrained_execution.d.ts +0 -10
  232. package/dest/client/unconstrained_execution.d.ts.map +0 -1
  233. package/dest/client/view_data_oracle.d.ts +0 -159
  234. package/dest/client/view_data_oracle.d.ts.map +0 -1
  235. package/dest/common/debug_fn_name.d.ts +0 -4
  236. package/dest/common/debug_fn_name.d.ts.map +0 -1
  237. package/dest/common/errors.d.ts +0 -54
  238. package/dest/common/errors.d.ts.map +0 -1
  239. package/dest/common/hashed_values_cache.d.ts +0 -28
  240. package/dest/common/hashed_values_cache.d.ts.map +0 -1
  241. package/dest/common/index.d.ts +0 -3
  242. package/dest/common/index.d.ts.map +0 -1
  243. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  244. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  245. package/dest/common/simulation_provider.d.ts +0 -19
  246. package/dest/common/simulation_provider.d.ts.map +0 -1
  247. package/dest/common.d.ts +0 -2
  248. package/dest/common.d.ts.map +0 -1
  249. package/dest/providers/acvm_native.d.ts +0 -40
  250. package/dest/providers/acvm_native.d.ts.map +0 -1
  251. package/dest/providers/acvm_wasm.d.ts +0 -15
  252. package/dest/providers/acvm_wasm.d.ts.map +0 -1
  253. package/dest/providers/acvm_wasm_with_blobs.d.ts +0 -19
  254. package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  255. package/dest/providers/factory.d.ts +0 -12
  256. package/dest/providers/factory.d.ts.map +0 -1
  257. package/dest/providers/index.d.ts +0 -5
  258. package/dest/providers/index.d.ts.map +0 -1
  259. package/dest/public/bytecode_errors.d.ts +0 -4
  260. package/dest/public/bytecode_errors.d.ts.map +0 -1
  261. package/dest/public/db_interfaces.d.ts +0 -105
  262. package/dest/public/db_interfaces.d.ts.map +0 -1
  263. package/dest/public/execution.d.ts +0 -102
  264. package/dest/public/execution.d.ts.map +0 -1
  265. package/dest/public/executor_metrics.d.ts +0 -13
  266. package/dest/public/executor_metrics.d.ts.map +0 -1
  267. package/dest/public/fee_payment.d.ts +0 -11
  268. package/dest/public/fee_payment.d.ts.map +0 -1
  269. package/dest/public/fixtures/index.d.ts +0 -3
  270. package/dest/public/fixtures/index.d.ts.map +0 -1
  271. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +0 -21
  272. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +0 -1
  273. package/dest/public/fixtures/utils.d.ts +0 -17
  274. package/dest/public/fixtures/utils.d.ts.map +0 -1
  275. package/dest/public/index.d.ts +0 -9
  276. package/dest/public/index.d.ts.map +0 -1
  277. package/dest/public/public_db_sources.d.ts +0 -81
  278. package/dest/public/public_db_sources.d.ts.map +0 -1
  279. package/dest/public/public_processor.d.ts +0 -72
  280. package/dest/public/public_processor.d.ts.map +0 -1
  281. package/dest/public/public_processor_metrics.d.ts +0 -27
  282. package/dest/public/public_processor_metrics.d.ts.map +0 -1
  283. package/dest/public/public_tx_context.d.ts +0 -131
  284. package/dest/public/public_tx_context.d.ts.map +0 -1
  285. package/dest/public/public_tx_simulator.d.ts +0 -99
  286. package/dest/public/public_tx_simulator.d.ts.map +0 -1
  287. package/dest/public/side_effect_errors.d.ts +0 -4
  288. package/dest/public/side_effect_errors.d.ts.map +0 -1
  289. package/dest/public/side_effect_trace.d.ts +0 -126
  290. package/dest/public/side_effect_trace.d.ts.map +0 -1
  291. package/dest/public/side_effect_trace_interface.d.ts +0 -32
  292. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  293. package/dest/public/unique_class_ids.d.ts +0 -37
  294. package/dest/public/unique_class_ids.d.ts.map +0 -1
  295. package/dest/public/utils.d.ts +0 -5
  296. package/dest/public/utils.d.ts.map +0 -1
  297. package/dest/server.d.ts +0 -6
  298. package/dest/server.d.ts.map +0 -1
  299. package/dest/stats/index.d.ts +0 -2
  300. package/dest/stats/index.d.ts.map +0 -1
  301. package/dest/stats/stats.d.ts +0 -4
  302. package/dest/stats/stats.d.ts.map +0 -1
  303. package/dest/test/utils.d.ts +0 -12
  304. package/dest/test/utils.d.ts.map +0 -1
@@ -1,46 +1,44 @@
1
- var _ExecutionNoteCache_instances, _ExecutionNoteCache_addNote;
2
- import { __classPrivateFieldGet } from "tslib";
3
1
  import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/circuits.js/hash';
4
2
  import { Fr } from '@aztec/foundation/fields';
5
3
  /**
6
4
  * Data that's accessible by all the function calls in an execution.
7
- */
8
- export class ExecutionNoteCache {
9
- constructor(txRequestHash) {
10
- _ExecutionNoteCache_instances.add(this);
5
+ */ export class ExecutionNoteCache {
6
+ txRequestHash;
7
+ /**
8
+ * New notes created in this transaction.
9
+ * They are pushed to this array in the same order as they are emitted.
10
+ */ notes;
11
+ /**
12
+ * This mapping maps from a contract address to the notes in the contract.
13
+ */ noteMap;
14
+ /**
15
+ * This maps from a contract address to the nullifiers emitted from the contract.
16
+ * The note which is nullified might be new or not (i.e., was generated in a previous transaction).
17
+ * Note that their value (bigint representation) is used because Frs cannot be looked up in Sets.
18
+ */ nullifierMap;
19
+ /**
20
+ * All nullifiers emitted in this transaction.
21
+ */ allNullifiers;
22
+ minRevertibleSideEffectCounter;
23
+ inRevertiblePhase;
24
+ /**
25
+ * We don't need to use the tx request hash for nonces if another non revertible nullifier is emitted.
26
+ * In that case we disable injecting the tx request hash as a nullifier.
27
+ */ usedTxRequestHashForNonces;
28
+ constructor(txRequestHash){
11
29
  this.txRequestHash = txRequestHash;
12
- /**
13
- * New notes created in this transaction.
14
- * They are pushed to this array in the same order as they are emitted.
15
- */
16
30
  this.notes = [];
17
- /**
18
- * This mapping maps from a contract address to the notes in the contract.
19
- */
20
31
  this.noteMap = new Map();
21
- /**
22
- * This maps from a contract address to the nullifiers emitted from the contract.
23
- * The note which is nullified might be new or not (i.e., was generated in a previous transaction).
24
- * Note that their value (bigint representation) is used because Frs cannot be looked up in Sets.
25
- */
26
32
  this.nullifierMap = new Map();
27
- /**
28
- * All nullifiers emitted in this transaction.
29
- */
30
33
  this.allNullifiers = new Set();
31
34
  this.minRevertibleSideEffectCounter = 0;
32
35
  this.inRevertiblePhase = false;
33
- /**
34
- * We don't need to use the tx request hash for nonces if another non revertible nullifier is emitted.
35
- * In that case we disable injecting the tx request hash as a nullifier.
36
- */
37
36
  this.usedTxRequestHashForNonces = true;
38
37
  }
39
38
  /**
40
- * Enters the revertible phase of the transaction.
41
- * @param minRevertibleSideEffectCounter - The counter at which the transaction enters the revertible phase.
42
- */
43
- async setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
39
+ * Enters the revertible phase of the transaction.
40
+ * @param minRevertibleSideEffectCounter - The counter at which the transaction enters the revertible phase.
41
+ */ async setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
44
42
  if (this.inRevertiblePhase) {
45
43
  throw new Error(`Cannot enter the revertible phase twice. Current counter: ${minRevertibleSideEffectCounter}. Previous enter counter: ${this.minRevertibleSideEffectCounter}`);
46
44
  }
@@ -56,19 +54,22 @@ export class ExecutionNoteCache {
56
54
  // They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
57
55
  // Their indexes in the tx are known at this point and won't change. So we can assign a nonce to each one of them.
58
56
  // The nonces will be used to create the "complete" nullifier.
59
- const updatedNotes = await Promise.all(this.notes.map(async ({ note, counter }, i) => {
57
+ const updatedNotes = await Promise.all(this.notes.map(async ({ note, counter }, i)=>{
60
58
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
61
59
  const uniqueNoteHash = await computeUniqueNoteHash(nonce, await siloNoteHash(note.contractAddress, note.noteHash));
62
60
  return {
63
61
  counter,
64
- note: { ...note, nonce },
65
- noteHashForConsumption: uniqueNoteHash,
62
+ note: {
63
+ ...note,
64
+ nonce
65
+ },
66
+ noteHashForConsumption: uniqueNoteHash
66
67
  };
67
68
  }));
68
69
  // Rebuild the data.
69
70
  this.notes = [];
70
71
  this.noteMap = new Map();
71
- updatedNotes.forEach(n => __classPrivateFieldGet(this, _ExecutionNoteCache_instances, "m", _ExecutionNoteCache_addNote).call(this, n));
72
+ updatedNotes.forEach((n)=>this.#addNote(n));
72
73
  }
73
74
  finish() {
74
75
  // If we never entered the revertible phase, we need to use the tx request hash as a nonce for the notes if no nullifiers have been emitted.
@@ -77,93 +78,98 @@ export class ExecutionNoteCache {
77
78
  }
78
79
  // If we entered the revertible phase, the nonce generator was decided based on wether or not a nullifier was emitted before entering.
79
80
  return {
80
- usedTxRequestHashForNonces: this.usedTxRequestHashForNonces,
81
+ usedTxRequestHashForNonces: this.usedTxRequestHashForNonces
81
82
  };
82
83
  }
83
84
  /**
84
- * Add a new note to cache.
85
- * @param note - New note created during execution.
86
- */
87
- addNewNote(note, counter) {
85
+ * Add a new note to cache.
86
+ * @param note - New note created during execution.
87
+ */ addNewNote(note, counter) {
88
88
  const previousNote = this.notes[this.notes.length - 1];
89
89
  if (previousNote && previousNote.counter >= counter) {
90
90
  throw new Error(`Note hash counters must be strictly increasing. Current counter: ${counter}. Previous counter: ${previousNote.counter}.`);
91
91
  }
92
- __classPrivateFieldGet(this, _ExecutionNoteCache_instances, "m", _ExecutionNoteCache_addNote).call(this, { note, counter, noteHashForConsumption: note.noteHash });
92
+ this.#addNote({
93
+ note,
94
+ counter,
95
+ noteHashForConsumption: note.noteHash
96
+ });
93
97
  }
94
98
  /**
95
- * Add a nullifier to cache. It could be for a db note or a new note created during execution.
96
- * @param contractAddress - Contract address of the note.
97
- * @param innerNullifier - Inner nullifier of the note.
98
- * @param noteHash - A hash of the note. If this value equals 0, it means the note being nullified is from a previous
99
- * transaction (and thus not a new note).
100
- */
101
- async nullifyNote(contractAddress, innerNullifier, noteHash) {
99
+ * Add a nullifier to cache. It could be for a db note or a new note created during execution.
100
+ * @param contractAddress - Contract address of the note.
101
+ * @param innerNullifier - Inner nullifier of the note.
102
+ * @param noteHash - A hash of the note. If this value equals 0, it means the note being nullified is from a previous
103
+ * transaction (and thus not a new note).
104
+ */ async nullifyNote(contractAddress, innerNullifier, noteHash) {
102
105
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
103
106
  let nullifiedNoteHashCounter = undefined;
104
107
  // Find and remove the matching new note and log(s) if the emitted noteHash is not empty.
105
108
  if (!noteHash.isEmpty()) {
106
109
  const notesInContract = this.noteMap.get(contractAddress.toBigInt()) ?? [];
107
- const noteIndexToRemove = notesInContract.findIndex(n => n.noteHashForConsumption.equals(noteHash));
110
+ const noteIndexToRemove = notesInContract.findIndex((n)=>n.noteHashForConsumption.equals(noteHash));
108
111
  if (noteIndexToRemove === -1) {
109
112
  throw new Error('Attempt to remove a pending note that does not exist.');
110
113
  }
111
114
  const note = notesInContract.splice(noteIndexToRemove, 1)[0];
112
115
  nullifiedNoteHashCounter = note.counter;
113
116
  this.noteMap.set(contractAddress.toBigInt(), notesInContract);
114
- this.notes = this.notes.filter(n => n.counter !== note.counter);
117
+ this.notes = this.notes.filter((n)=>n.counter !== note.counter);
115
118
  // If the note is non revertible and the nullifier was emitted in the revertible phase, both the note hash and the nullifier will be emitted
116
119
  if (this.inRevertiblePhase && note.counter < this.minRevertibleSideEffectCounter) {
117
120
  this.recordNullifier(contractAddress, siloedNullifier);
118
121
  }
119
- }
120
- else {
122
+ } else {
121
123
  // If the note being nullified comes from a previous tx the nullifier will be emitted.
122
124
  this.recordNullifier(contractAddress, siloedNullifier);
123
125
  }
124
126
  return nullifiedNoteHashCounter;
125
127
  }
126
128
  /**
127
- * Adds a nullifier to the cache. Note cache needs to track all nullifiers to decide which nullifier to use for note siloing.
128
- * @param contractAddress - Contract address that emitted the nullifier.
129
- * @param innerNullifier
130
- */
131
- async nullifierCreated(contractAddress, innerNullifier) {
129
+ * Adds a nullifier to the cache. Note cache needs to track all nullifiers to decide which nullifier to use for note siloing.
130
+ * @param contractAddress - Contract address that emitted the nullifier.
131
+ * @param innerNullifier
132
+ */ async nullifierCreated(contractAddress, innerNullifier) {
132
133
  const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
133
134
  this.recordNullifier(contractAddress, siloedNullifier);
134
135
  }
135
136
  /**
136
- * Return notes created up to current point in execution.
137
- * If a nullifier for a note in this list is emitted, the note will be deleted.
138
- * @param contractAddress - Contract address of the notes.
139
- * @param storageSlot - Storage slot of the notes.
140
- **/
141
- getNotes(contractAddress, storageSlot) {
137
+ * Return notes created up to current point in execution.
138
+ * If a nullifier for a note in this list is emitted, the note will be deleted.
139
+ * @param contractAddress - Contract address of the notes.
140
+ * @param storageSlot - Storage slot of the notes.
141
+ **/ getNotes(contractAddress, storageSlot) {
142
142
  const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
143
- return notes.filter(n => n.note.storageSlot.equals(storageSlot)).map(n => n.note);
143
+ return notes.filter((n)=>n.note.storageSlot.equals(storageSlot)).map((n)=>n.note);
144
144
  }
145
145
  /**
146
- * Check if a note exists in the newNotes array.
147
- * @param contractAddress - Contract address of the note.
148
- * @param storageSlot - Storage slot of the note.
149
- * @param noteHash - A hash of the note.
150
- **/
151
- checkNoteExists(contractAddress, noteHash) {
146
+ * Check if a note exists in the newNotes array.
147
+ * @param contractAddress - Contract address of the note.
148
+ * @param storageSlot - Storage slot of the note.
149
+ * @param noteHash - A hash of the note.
150
+ **/ checkNoteExists(contractAddress, noteHash) {
152
151
  const notes = this.noteMap.get(contractAddress.toBigInt()) ?? [];
153
- return notes.some(n => n.note.noteHash.equals(noteHash));
152
+ return notes.some((n)=>n.note.noteHash.equals(noteHash));
154
153
  }
155
154
  /**
156
- * Return all nullifiers emitted from a contract.
157
- * @param contractAddress - Address of the contract.
158
- */
159
- getNullifiers(contractAddress) {
155
+ * Return all nullifiers emitted from a contract.
156
+ * @param contractAddress - Address of the contract.
157
+ */ getNullifiers(contractAddress) {
160
158
  return this.nullifierMap.get(contractAddress.toBigInt()) ?? new Set();
161
159
  }
160
+ #addNote(note) {
161
+ this.notes.push(note);
162
+ const notes = this.noteMap.get(note.note.contractAddress.toBigInt()) ?? [];
163
+ notes.push(note);
164
+ this.noteMap.set(note.note.contractAddress.toBigInt(), notes);
165
+ }
162
166
  getAllNotes() {
163
167
  return this.notes;
164
168
  }
165
169
  getAllNullifiers() {
166
- return [...this.allNullifiers].map(n => new Fr(n));
170
+ return [
171
+ ...this.allNullifiers
172
+ ].map((n)=>new Fr(n));
167
173
  }
168
174
  recordNullifier(contractAddress, siloedNullifier) {
169
175
  const nullifiers = this.getNullifiers(contractAddress);
@@ -172,10 +178,3 @@ export class ExecutionNoteCache {
172
178
  this.allNullifiers.add(siloedNullifier.toBigInt());
173
179
  }
174
180
  }
175
- _ExecutionNoteCache_instances = new WeakSet(), _ExecutionNoteCache_addNote = function _ExecutionNoteCache_addNote(note) {
176
- this.notes.push(note);
177
- const notes = this.noteMap.get(note.note.contractAddress.toBigInt()) ?? [];
178
- notes.push(note);
179
- this.noteMap.set(note.note.contractAddress.toBigInt(), notes);
180
- };
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2V4ZWN1dGlvbl9ub3RlX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFVOUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBaUM3QixZQUE2QixhQUFpQjs7UUFBakIsa0JBQWEsR0FBYixhQUFhLENBQUk7UUFoQzlDOzs7V0FHRztRQUNLLFVBQUssR0FBa0IsRUFBRSxDQUFDO1FBQ2xDOztXQUVHO1FBQ0ssWUFBTyxHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXhEOzs7O1dBSUc7UUFDSyxpQkFBWSxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNEOztXQUVHO1FBQ0ssa0JBQWEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUV2QyxtQ0FBOEIsR0FBRyxDQUFDLENBQUM7UUFFbkMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRWxDOzs7V0FHRztRQUNLLCtCQUEwQixHQUFHLElBQUksQ0FBQztJQUVPLENBQUM7SUFFbEQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLDhCQUFzQztRQUNuRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkRBQTZELDhCQUE4Qiw2QkFBNkIsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQzlKLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsOEJBQThCLEdBQUcsOEJBQThCLENBQUM7UUFFckUsSUFBSSxj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
@@ -11,4 +11,3 @@ export { TypedOracle } from '../acvm/oracle/typed_oracle.js';
11
11
  export { Oracle } from '../acvm/oracle/oracle.js';
12
12
  export { MessageLoadOracleInputs } from '../common/message_load_oracle_inputs.js';
13
13
  export { resolveAssertionMessageFromRevertData, resolveOpcodeLocations } from '../common/errors.js';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQVksMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFZLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyJ9
@@ -2,31 +2,30 @@ import { Comparator } from '@aztec/circuit-types';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  /**
4
4
  * The order to sort an array.
5
- */
6
- export var SortOrder;
7
- (function (SortOrder) {
5
+ */ export var SortOrder = /*#__PURE__*/ function(SortOrder) {
8
6
  SortOrder[SortOrder["NADA"] = 0] = "NADA";
9
7
  SortOrder[SortOrder["DESC"] = 1] = "DESC";
10
8
  SortOrder[SortOrder["ASC"] = 2] = "ASC";
11
- })(SortOrder || (SortOrder = {}));
12
- const selectPropertyFromPackedNoteContent = (noteData, selector) => {
9
+ return SortOrder;
10
+ }({});
11
+ const selectPropertyFromPackedNoteContent = (noteData, selector)=>{
13
12
  const noteValueBuffer = noteData[selector.index].toBuffer();
14
13
  const noteValue = noteValueBuffer.subarray(selector.offset, selector.offset + selector.length);
15
14
  return Fr.fromBuffer(noteValue);
16
15
  };
17
- const selectNotes = (noteDatas, selects) => noteDatas.filter(noteData => selects.every(({ selector, value, comparator }) => {
18
- const noteValueFr = selectPropertyFromPackedNoteContent(noteData.note.items, selector);
19
- const comparatorSelector = {
20
- [Comparator.EQ]: () => noteValueFr.equals(value),
21
- [Comparator.NEQ]: () => !noteValueFr.equals(value),
22
- [Comparator.LT]: () => noteValueFr.lt(value),
23
- [Comparator.LTE]: () => noteValueFr.lt(value) || noteValueFr.equals(value),
24
- [Comparator.GT]: () => !noteValueFr.lt(value) && !noteValueFr.equals(value),
25
- [Comparator.GTE]: () => !noteValueFr.lt(value),
26
- };
27
- return comparatorSelector[comparator]();
28
- }));
29
- const sortNotes = (a, b, sorts, level = 0) => {
16
+ const selectNotes = (noteDatas, selects)=>noteDatas.filter((noteData)=>selects.every(({ selector, value, comparator })=>{
17
+ const noteValueFr = selectPropertyFromPackedNoteContent(noteData.note.items, selector);
18
+ const comparatorSelector = {
19
+ [Comparator.EQ]: ()=>noteValueFr.equals(value),
20
+ [Comparator.NEQ]: ()=>!noteValueFr.equals(value),
21
+ [Comparator.LT]: ()=>noteValueFr.lt(value),
22
+ [Comparator.LTE]: ()=>noteValueFr.lt(value) || noteValueFr.equals(value),
23
+ [Comparator.GT]: ()=>!noteValueFr.lt(value) && !noteValueFr.equals(value),
24
+ [Comparator.GTE]: ()=>!noteValueFr.lt(value)
25
+ };
26
+ return comparatorSelector[comparator]();
27
+ }));
28
+ const sortNotes = (a, b, sorts, level = 0)=>{
30
29
  if (sorts[level] === undefined) {
31
30
  return 0;
32
31
  }
@@ -36,19 +35,17 @@ const sortNotes = (a, b, sorts, level = 0) => {
36
35
  }
37
36
  const aValue = selectPropertyFromPackedNoteContent(a, selector);
38
37
  const bValue = selectPropertyFromPackedNoteContent(b, selector);
39
- const dir = order === 1 ? [-1, 1] : [1, -1];
40
- return aValue.toBigInt() === bValue.toBigInt()
41
- ? sortNotes(a, b, sorts, level + 1)
42
- : aValue.toBigInt() > bValue.toBigInt()
43
- ? dir[0]
44
- : dir[1];
38
+ const dir = order === 1 ? [
39
+ -1,
40
+ 1
41
+ ] : [
42
+ 1,
43
+ -1
44
+ ];
45
+ return aValue.toBigInt() === bValue.toBigInt() ? sortNotes(a, b, sorts, level + 1) : aValue.toBigInt() > bValue.toBigInt() ? dir[0] : dir[1];
45
46
  };
46
47
  /**
47
48
  * Pick from a note array a number of notes that meet the criteria.
48
- */
49
- export function pickNotes(noteDatas, { selects = [], sorts = [], limit = 0, offset = 0 }) {
50
- return selectNotes(noteDatas, selects)
51
- .sort((a, b) => sortNotes(a.note.items, b.note.items, sorts))
52
- .slice(offset, limit ? offset + limit : undefined);
49
+ */ export function pickNotes(noteDatas, { selects = [], sorts = [], limit = 0, offset = 0 }) {
50
+ return selectNotes(noteDatas, selects).sort((a, b)=>sortNotes(a.note.items, b.note.items, sorts)).slice(offset, limit ? offset + limit : undefined);
53
51
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja19ub3Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvcGlja19ub3Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBMEI5Qzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIseUNBQVEsQ0FBQTtJQUNSLHlDQUFRLENBQUE7SUFDUix1Q0FBTyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBb0RELE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxRQUFjLEVBQUUsUUFBMEIsRUFBTSxFQUFFO0lBQzdGLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUQsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUF5QixTQUFjLEVBQUUsT0FBaUIsRUFBTyxFQUFFLENBQ3JGLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO0lBQ2hELE1BQU0sV0FBVyxHQUFHLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sa0JBQWtCLEdBQUc7UUFDekIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDaEQsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNsRCxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUM1QyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzNFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDL0MsQ0FBQztJQUVGLE9BQU8sa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBRUosTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFFLEtBQWEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUU7SUFDdkUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsbUNBQW1DLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLG1DQUFtQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDNUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN2QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFNBQWMsRUFDZCxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQWM7SUFFL0QsT0FBTyxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztTQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDNUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  import { PrivateCallExecutionResult } from '@aztec/circuit-types';
2
- import { Fr, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH, PrivateCircuitPublicInputs, } from '@aztec/circuits.js';
2
+ import { Fr, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH, PrivateCircuitPublicInputs } from '@aztec/circuits.js';
3
3
  import { countArgumentsSize } from '@aztec/foundation/abi';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  import { Timer } from '@aztec/foundation/timer';
@@ -8,22 +8,23 @@ import { Oracle, extractCallStack } from '../acvm/index.js';
8
8
  import { ExecutionError, resolveAssertionMessageFromError } from '../common/errors.js';
9
9
  /**
10
10
  * Execute a private function and return the execution result.
11
- */
12
- export async function executePrivateFunction(simulator, context, artifact, contractAddress, functionSelector, log = createLogger('simulator:private_execution')) {
11
+ */ export async function executePrivateFunction(simulator, context, artifact, contractAddress, functionSelector, log = createLogger('simulator:private_execution')) {
13
12
  const functionName = await context.getDebugFunctionName();
14
- log.verbose(`Executing private function ${functionName}`, { contract: contractAddress });
13
+ log.verbose(`Executing private function ${functionName}`, {
14
+ contract: contractAddress
15
+ });
15
16
  const acir = artifact.bytecode;
16
17
  const initialWitness = context.getInitialWitness(artifact);
17
18
  const acvmCallback = new Oracle(context);
18
19
  const timer = new Timer();
19
- const acirExecutionResult = await simulator
20
- .executeUserCircuit(acir, initialWitness, acvmCallback)
21
- .catch((err) => {
20
+ const acirExecutionResult = await simulator.executeUserCircuit(acir, initialWitness, acvmCallback).catch((err)=>{
22
21
  err.message = resolveAssertionMessageFromError(err, artifact);
23
22
  throw new ExecutionError(err.message, {
24
23
  contractAddress,
25
- functionSelector,
26
- }, extractCallStack(err, artifact.debug), { cause: err });
24
+ functionSelector
25
+ }, extractCallStack(err, artifact.debug), {
26
+ cause: err
27
+ });
27
28
  });
28
29
  const duration = timer.ms();
29
30
  const partialWitness = acirExecutionResult.partialWitness;
@@ -36,7 +37,7 @@ export async function executePrivateFunction(simulator, context, artifact, contr
36
37
  eventName: 'circuit-witness-generation',
37
38
  inputSize: initialWitnessSize,
38
39
  outputSize: publicInputs.toBuffer().length,
39
- appCircuitName: functionName,
40
+ appCircuitName: functionName
40
41
  });
41
42
  const contractClassLogs = context.getContractClassLogs();
42
43
  const rawReturnValues = await context.loadFromExecutionCache(publicInputs.returnsHash);
@@ -54,13 +55,12 @@ export async function executePrivateFunction(simulator, context, artifact, contr
54
55
  * @param artifact - The function artifact
55
56
  * @param partialWitness - The partial witness, result of simulating the function.
56
57
  * @returns - The public inputs.
57
- */
58
- export function extractPrivateCircuitPublicInputs(artifact, partialWitness) {
58
+ */ export function extractPrivateCircuitPublicInputs(artifact, partialWitness) {
59
59
  const parametersSize = countArgumentsSize(artifact) + PRIVATE_CONTEXT_INPUTS_LENGTH;
60
60
  const returnsSize = PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH;
61
61
  const returnData = [];
62
62
  // Return values always appear in the witness after arguments.
63
- for (let i = parametersSize; i < parametersSize + returnsSize; i++) {
63
+ for(let i = parametersSize; i < parametersSize + returnsSize; i++){
64
64
  const returnedField = partialWitness.get(i);
65
65
  if (returnedField === undefined) {
66
66
  throw new Error(`Missing return value for index ${i}`);
@@ -69,4 +69,3 @@ export function extractPrivateCircuitPublicInputs(artifact, partialWitness) {
69
69
  }
70
70
  return PrivateCircuitPublicInputs.fromFields(returnData);
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxFLE9BQU8sRUFDTCxFQUFFLEVBQ0Ysb0NBQW9DLEVBQ3BDLDZCQUE2QixFQUM3QiwwQkFBMEIsR0FDM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWdELGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0UsT0FBTyxFQUFvQixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxTQUE2QixFQUM3QixPQUErQixFQUMvQixRQUEwQixFQUMxQixlQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsR0FBRyxHQUFHLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQztJQUVqRCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzFELEdBQUcsQ0FBQyxPQUFPLENBQUMsOEJBQThCLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMvQixNQUFNLGNBQWMsR0FBRyxP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
@@ -1,6 +1,6 @@
1
- import { PrivateExecutionResult, } from '@aztec/circuit-types';
1
+ import { PrivateExecutionResult } from '@aztec/circuit-types';
2
2
  import { CallContext } from '@aztec/circuits.js';
3
- import { FunctionSelector, FunctionType, encodeArguments, } from '@aztec/foundation/abi';
3
+ import { FunctionSelector, FunctionType, encodeArguments } from '@aztec/foundation/abi';
4
4
  import { AztecAddress } from '@aztec/foundation/aztec-address';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import { createLogger } from '@aztec/foundation/log';
@@ -13,24 +13,26 @@ import { executeUnconstrainedFunction } from './unconstrained_execution.js';
13
13
  import { ViewDataOracle } from './view_data_oracle.js';
14
14
  /**
15
15
  * The ACIR simulator.
16
- */
17
- export class AcirSimulator {
18
- constructor(db, node, simulationProvider) {
16
+ */ export class AcirSimulator {
17
+ db;
18
+ node;
19
+ simulationProvider;
20
+ log;
21
+ constructor(db, node, simulationProvider){
19
22
  this.db = db;
20
23
  this.node = node;
21
24
  this.simulationProvider = simulationProvider;
22
25
  this.log = createLogger('simulator');
23
26
  }
24
27
  /**
25
- * Runs a private function.
26
- * @param request - The transaction request.
27
- * @param entryPointArtifact - The artifact of the entry point function.
28
- * @param contractAddress - The address of the contract (should match request.origin)
29
- * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract or a specific account.
30
- * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
31
- * @returns The result of the execution.
32
- */
33
- async run(request, entryPointArtifact, contractAddress, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), scopes) {
28
+ * Runs a private function.
29
+ * @param request - The transaction request.
30
+ * @param entryPointArtifact - The artifact of the entry point function.
31
+ * @param contractAddress - The address of the contract (should match request.origin)
32
+ * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract or a specific account.
33
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
34
+ * @returns The result of the execution.
35
+ */ async run(request, entryPointArtifact, contractAddress, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), scopes) {
34
36
  if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
35
37
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
36
38
  }
@@ -49,41 +51,37 @@ export class AcirSimulator {
49
51
  const { usedTxRequestHashForNonces } = noteCache.finish();
50
52
  const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
51
53
  return new PrivateExecutionResult(executionResult, firstNullifierHint);
52
- }
53
- catch (err) {
54
+ } catch (err) {
54
55
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
55
56
  }
56
57
  }
57
58
  /**
58
- * Runs an unconstrained function.
59
- * @param request - The transaction request.
60
- * @param entryPointArtifact - The artifact of the entry point function.
61
- * @param contractAddress - The address of the contract.
62
- * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
63
- */
64
- async runUnconstrained(request, entryPointArtifact, contractAddress, scopes) {
59
+ * Runs an unconstrained function.
60
+ * @param request - The transaction request.
61
+ * @param entryPointArtifact - The artifact of the entry point function.
62
+ * @param contractAddress - The address of the contract.
63
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
64
+ */ async runUnconstrained(request, entryPointArtifact, contractAddress, scopes) {
65
65
  if (entryPointArtifact.functionType !== FunctionType.UNCONSTRAINED) {
66
66
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as unconstrained`);
67
67
  }
68
68
  const context = new ViewDataOracle(contractAddress, [], this.db, this.node, undefined, scopes);
69
69
  try {
70
70
  return await executeUnconstrainedFunction(this.simulationProvider, context, entryPointArtifact, contractAddress, request.selector, request.args);
71
- }
72
- catch (err) {
71
+ } catch (err) {
73
72
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
74
73
  }
75
74
  }
76
75
  /**
77
- * Computes the inner nullifier of a note.
78
- * @param contractAddress - The address of the contract.
79
- * @param nonce - The nonce of the note hash.
80
- * @param storageSlot - The storage slot.
81
- * @param noteTypeId - The note type identifier.
82
- * @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
83
- * @param note - The note.
84
- * @returns The nullifier.
85
- */
86
- async computeNoteHashAndOptionallyANullifier(contractAddress, nonce, storageSlot, noteTypeId, computeNullifier, note) {
76
+ * Computes the inner nullifier of a note.
77
+ * @param contractAddress - The address of the contract.
78
+ * @param nonce - The nonce of the note hash.
79
+ * @param storageSlot - The storage slot.
80
+ * @param noteTypeId - The note type identifier.
81
+ * @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
82
+ * @param note - The note.
83
+ * @returns The nullifier.
84
+ */ async computeNoteHashAndOptionallyANullifier(contractAddress, nonce, storageSlot, noteTypeId, computeNullifier, note) {
87
85
  const artifact = await this.db.getFunctionArtifactByName(contractAddress, 'compute_note_hash_and_optionally_a_nullifier');
88
86
  if (!artifact) {
89
87
  throw new Error(`Mandatory implementation of "compute_note_hash_and_optionally_a_nullifier" missing in noir contract ${contractAddress.toString()}.`);
@@ -108,29 +106,27 @@ export class AcirSimulator {
108
106
  storageSlot,
109
107
  noteTypeId,
110
108
  computeNullifier,
111
- extendedNoteItems,
109
+ extendedNoteItems
112
110
  ]),
113
- returnTypes: artifact.returnTypes,
111
+ returnTypes: artifact.returnTypes
114
112
  };
115
- const [noteHash, uniqueNoteHash, siloedNoteHash, innerNullifier] = (await this.runUnconstrained(execRequest, artifact, contractAddress));
113
+ const [noteHash, uniqueNoteHash, siloedNoteHash, innerNullifier] = await this.runUnconstrained(execRequest, artifact, contractAddress);
116
114
  return {
117
115
  noteHash: new Fr(noteHash),
118
116
  uniqueNoteHash: new Fr(uniqueNoteHash),
119
117
  siloedNoteHash: new Fr(siloedNoteHash),
120
- innerNullifier: new Fr(innerNullifier),
118
+ innerNullifier: new Fr(innerNullifier)
121
119
  };
122
120
  }
123
121
  /**
124
- * Computes a hash of the note.
125
- * @param contractAddress - The address of the contract.
126
- * @param storageSlot - The storage slot.
127
- * @param noteTypeId - The note type identifier.
128
- * @param note - The note.
129
- * @returns The note hash.
130
- */
131
- async computeNoteHash(contractAddress, storageSlot, noteTypeId, note) {
122
+ * Computes a hash of the note.
123
+ * @param contractAddress - The address of the contract.
124
+ * @param storageSlot - The storage slot.
125
+ * @param noteTypeId - The note type identifier.
126
+ * @param note - The note.
127
+ * @returns The note hash.
128
+ */ async computeNoteHash(contractAddress, storageSlot, noteTypeId, note) {
132
129
  const { noteHash } = await this.computeNoteHashAndOptionallyANullifier(contractAddress, Fr.ZERO, storageSlot, noteTypeId, false, note);
133
130
  return noteHash;
134
131
  }
135
132
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9zaW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLHNCQUFzQixHQUV2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBR0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFFWixlQUFlLEdBQ2hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBb0IsRUFBWSxFQUFVLElBQWUsRUFBVSxrQkFBc0M7UUFBckYsT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVc7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZHLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxD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
@@ -6,25 +6,22 @@ import { ExecutionError, resolveAssertionMessageFromError } from '../common/erro
6
6
  // docs:start:execute_unconstrained_function
7
7
  /**
8
8
  * Execute an unconstrained function and return the decoded values.
9
- */
10
- export async function executeUnconstrainedFunction(simulatorProvider, oracle, artifact, contractAddress, functionSelector, args, log = createLogger('simulator:unconstrained_execution')) {
9
+ */ export async function executeUnconstrainedFunction(simulatorProvider, oracle, artifact, contractAddress, functionSelector, args, log = createLogger('simulator:unconstrained_execution')) {
11
10
  log.verbose(`Executing unconstrained function ${artifact.name}`, {
12
11
  contract: contractAddress,
13
- selector: functionSelector,
12
+ selector: functionSelector
14
13
  });
15
14
  const acir = artifact.bytecode;
16
15
  const initialWitness = toACVMWitness(0, args);
17
- const acirExecutionResult = await simulatorProvider
18
- .executeUserCircuit(acir, initialWitness, new Oracle(oracle))
19
- .catch((err) => {
16
+ const acirExecutionResult = await simulatorProvider.executeUserCircuit(acir, initialWitness, new Oracle(oracle)).catch((err)=>{
20
17
  err.message = resolveAssertionMessageFromError(err, artifact);
21
18
  throw new ExecutionError(err.message, {
22
19
  contractAddress,
23
- functionSelector,
24
- }, extractCallStack(err, artifact.debug), { cause: err });
20
+ functionSelector
21
+ }, extractCallStack(err, artifact.debug), {
22
+ cause: err
23
+ });
25
24
  });
26
25
  const returnWitness = witnessMapToFields(acirExecutionResult.returnWitness);
27
26
  return decodeFromAbi(artifact.returnTypes, returnWitness);
28
- }
29
- // docs:end:execute_unconstrained_function
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5jb25zdHJhaW5lZF9leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L3VuY29uc3RyYWluZWRfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXZGLDRDQUE0QztBQUM1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsNEJBQTRCLENBQ2hELGlCQUFxQyxFQUNyQyxNQUFzQixFQUN0QixRQUEwQixFQUMxQixlQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsSUFBVSxFQUNWLEdBQUcsR0FBRyxZQUFZLENBQUMsbUNBQW1DLENBQUM7SUFFdkQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQy9ELFFBQVEsRUFBRSxlQUFlO1FBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMvQixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxpQkFBaUI7U0FDaEQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1RCxLQUFLLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRTtRQUNwQixHQUFHLENBQUMsT0FBTyxHQUFHLGdDQUFnQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksY0FBYyxDQUN0QixHQUFHLENBQUMsT0FBTyxFQUNYO1lBQ0UsZUFBZTtZQUNmLGdCQUFnQjtTQUNqQixFQUNELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUNmLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUNELDBDQUEwQyJ9
27
+ } // docs:end:execute_unconstrained_function