@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.
- package/dest/acvm/acvm.js +18 -21
- package/dest/acvm/acvm_types.js +3 -2
- package/dest/acvm/deserialize.js +9 -13
- package/dest/acvm/index.js +0 -1
- package/dest/acvm/oracle/index.js +0 -1
- package/dest/acvm/oracle/oracle.js +42 -23
- package/dest/acvm/oracle/typed_oracle.js +36 -38
- package/dest/acvm/serialize.js +7 -14
- package/dest/avm/avm_context.js +24 -27
- package/dest/avm/avm_contract_call_result.js +12 -7
- package/dest/avm/avm_execution_environment.js +10 -7
- package/dest/avm/avm_gas.js +93 -56
- package/dest/avm/avm_machine_state.js +60 -61
- package/dest/avm/avm_memory_types.js +166 -255
- package/dest/avm/avm_simulator.js +68 -47
- package/dest/avm/avm_tree.js +282 -276
- package/dest/avm/bytecode_utils.js +8 -6
- package/dest/avm/errors.js +46 -63
- package/dest/avm/fixtures/avm_simulation_tester.js +18 -17
- package/dest/avm/fixtures/base_avm_simulation_tester.js +21 -16
- package/dest/avm/fixtures/index.js +27 -26
- package/dest/avm/fixtures/simple_contract_data_source.js +9 -13
- package/dest/avm/index.js +0 -1
- package/dest/avm/journal/index.js +0 -1
- package/dest/avm/journal/journal.js +147 -200
- package/dest/avm/journal/nullifiers.js +43 -46
- package/dest/avm/journal/public_storage.js +73 -87
- package/dest/avm/opcodes/accrued_substate.js +140 -110
- package/dest/avm/opcodes/addressing_mode.js +29 -31
- package/dest/avm/opcodes/arithmetic.js +17 -15
- package/dest/avm/opcodes/bitwise.js +40 -26
- package/dest/avm/opcodes/comparators.js +12 -10
- package/dest/avm/opcodes/contract.js +31 -29
- package/dest/avm/opcodes/control_flow.js +47 -43
- package/dest/avm/opcodes/conversion.js +30 -26
- package/dest/avm/opcodes/ec_add.js +35 -34
- package/dest/avm/opcodes/environment_getters.js +33 -33
- package/dest/avm/opcodes/external_calls.js +83 -74
- package/dest/avm/opcodes/hashing.js +69 -61
- package/dest/avm/opcodes/index.js +0 -1
- package/dest/avm/opcodes/instruction.js +31 -40
- package/dest/avm/opcodes/instruction_impl.js +12 -15
- package/dest/avm/opcodes/memory.js +177 -156
- package/dest/avm/opcodes/misc.js +27 -25
- package/dest/avm/opcodes/multi_scalar_mul.js +43 -41
- package/dest/avm/opcodes/storage.js +28 -25
- package/dest/avm/serialization/buffer_cursor.js +4 -4
- package/dest/avm/serialization/bytecode_serialization.js +292 -89
- package/dest/avm/serialization/instruction_serialization.js +67 -28
- package/dest/avm/test_utils.js +6 -9
- package/dest/client/client_execution_context.js +197 -219
- package/dest/client/db_oracle.js +4 -7
- package/dest/client/execution_note_cache.js +80 -81
- package/dest/client/index.js +0 -1
- package/dest/client/pick_notes.js +27 -30
- package/dest/client/private_execution.js +13 -14
- package/dest/client/simulator.js +44 -48
- package/dest/client/unconstrained_execution.js +8 -11
- package/dest/client/view_data_oracle.js +130 -139
- package/dest/common/debug_fn_name.js +1 -4
- package/dest/common/errors.js +30 -39
- package/dest/common/hashed_values_cache.js +16 -20
- package/dest/common/index.js +0 -1
- package/dest/common/message_load_oracle_inputs.js +7 -7
- package/dest/common/simulation_provider.js +3 -6
- package/dest/common.js +0 -1
- package/dest/providers/acvm_native.js +46 -32
- package/dest/providers/acvm_wasm.js +18 -10
- package/dest/providers/acvm_wasm_with_blobs.js +2 -5
- package/dest/providers/factory.js +5 -5
- package/dest/providers/index.js +0 -1
- package/dest/public/bytecode_errors.js +1 -2
- package/dest/public/db_interfaces.js +1 -2
- package/dest/public/execution.js +2 -4
- package/dest/public/executor_metrics.js +16 -12
- package/dest/public/fee_payment.js +2 -5
- package/dest/public/fixtures/index.js +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +13 -17
- package/dest/public/fixtures/utils.js +11 -14
- package/dest/public/index.js +0 -1
- package/dest/public/public_db_sources.js +79 -87
- package/dest/public/public_processor.js +310 -306
- package/dest/public/public_processor_metrics.js +46 -27
- package/dest/public/public_tx_context.js +97 -118
- package/dest/public/public_tx_simulator.js +299 -314
- package/dest/public/side_effect_errors.js +1 -2
- package/dest/public/side_effect_trace.js +44 -71
- package/dest/public/side_effect_trace_interface.js +1 -2
- package/dest/public/unique_class_ids.js +22 -27
- package/dest/public/utils.js +16 -11
- package/dest/server.js +0 -1
- package/dest/stats/index.js +0 -1
- package/dest/stats/stats.js +1 -2
- package/dest/test/utils.js +5 -4
- package/package.json +11 -11
- package/src/acvm/oracle/typed_oracle.ts +34 -34
- package/src/avm/avm_machine_state.ts +18 -14
- package/src/avm/avm_memory_types.ts +43 -183
- package/src/avm/avm_simulator.ts +37 -11
- package/src/avm/opcodes/accrued_substate.ts +7 -21
- package/src/avm/opcodes/addressing_mode.ts +9 -2
- package/src/avm/opcodes/arithmetic.ts +1 -3
- package/src/avm/opcodes/bitwise.ts +2 -6
- package/src/avm/opcodes/comparators.ts +1 -3
- package/src/avm/opcodes/contract.ts +1 -3
- package/src/avm/opcodes/control_flow.ts +1 -9
- package/src/avm/opcodes/conversion.ts +1 -3
- package/src/avm/opcodes/ec_add.ts +1 -3
- package/src/avm/opcodes/environment_getters.ts +1 -3
- package/src/avm/opcodes/external_calls.ts +3 -6
- package/src/avm/opcodes/hashing.ts +3 -9
- package/src/avm/opcodes/memory.ts +6 -20
- package/src/avm/opcodes/misc.ts +1 -3
- package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
- package/src/avm/opcodes/storage.ts +2 -6
- package/src/client/index.ts +2 -2
- package/dest/acvm/acvm.d.ts +0 -35
- package/dest/acvm/acvm.d.ts.map +0 -1
- package/dest/acvm/acvm_types.d.ts +0 -10
- package/dest/acvm/acvm_types.d.ts.map +0 -1
- package/dest/acvm/deserialize.d.ts +0 -36
- package/dest/acvm/deserialize.d.ts.map +0 -1
- package/dest/acvm/index.d.ts +0 -6
- package/dest/acvm/index.d.ts.map +0 -1
- package/dest/acvm/oracle/index.d.ts +0 -14
- package/dest/acvm/oracle/index.d.ts.map +0 -1
- package/dest/acvm/oracle/oracle.d.ts +0 -49
- package/dest/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/acvm/oracle/typed_oracle.d.ts +0 -75
- package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/acvm/serialize.d.ts +0 -20
- package/dest/acvm/serialize.d.ts.map +0 -1
- package/dest/avm/avm_context.d.ts +0 -39
- package/dest/avm/avm_context.d.ts.map +0 -1
- package/dest/avm/avm_contract_call_result.d.ts +0 -30
- package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/avm/avm_execution_environment.d.ts +0 -21
- package/dest/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/avm/avm_gas.d.ts +0 -60
- package/dest/avm/avm_gas.d.ts.map +0 -1
- package/dest/avm/avm_machine_state.d.ts +0 -93
- package/dest/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/avm/avm_memory_types.d.ts +0 -310
- package/dest/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/avm/avm_simulator.d.ts +0 -37
- package/dest/avm/avm_simulator.d.ts.map +0 -1
- package/dest/avm/avm_tree.d.ts +0 -281
- package/dest/avm/avm_tree.d.ts.map +0 -1
- package/dest/avm/bytecode_utils.d.ts +0 -5
- package/dest/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/avm/errors.d.ts +0 -121
- package/dest/avm/errors.d.ts.map +0 -1
- package/dest/avm/fixtures/avm_simulation_tester.d.ts +0 -21
- package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +0 -35
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/index.d.ts +0 -67
- package/dest/avm/fixtures/index.d.ts.map +0 -1
- package/dest/avm/fixtures/simple_contract_data_source.d.ts +0 -31
- package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/avm/index.d.ts +0 -4
- package/dest/avm/index.d.ts.map +0 -1
- package/dest/avm/journal/index.d.ts +0 -2
- package/dest/avm/journal/index.d.ts.map +0 -1
- package/dest/avm/journal/journal.d.ts +0 -176
- package/dest/avm/journal/journal.d.ts.map +0 -1
- package/dest/avm/journal/nullifiers.d.ts +0 -62
- package/dest/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/avm/journal/public_storage.d.ts +0 -66
- package/dest/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/avm/opcodes/accrued_substate.d.ts +0 -75
- package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/avm/opcodes/addressing_mode.d.ts +0 -27
- package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/avm/opcodes/arithmetic.d.ts +0 -37
- package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/avm/opcodes/bitwise.d.ts +0 -50
- package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
- package/dest/avm/opcodes/comparators.d.ts +0 -25
- package/dest/avm/opcodes/comparators.d.ts.map +0 -1
- package/dest/avm/opcodes/contract.d.ts +0 -21
- package/dest/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/avm/opcodes/control_flow.d.ts +0 -41
- package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
- package/dest/avm/opcodes/conversion.d.ts +0 -17
- package/dest/avm/opcodes/conversion.d.ts.map +0 -1
- package/dest/avm/opcodes/ec_add.d.ts +0 -19
- package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/avm/opcodes/environment_getters.d.ts +0 -28
- package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
- package/dest/avm/opcodes/external_calls.d.ts +0 -50
- package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
- package/dest/avm/opcodes/hashing.d.ts +0 -36
- package/dest/avm/opcodes/hashing.d.ts.map +0 -1
- package/dest/avm/opcodes/index.d.ts +0 -16
- package/dest/avm/opcodes/index.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction.d.ts +0 -70
- package/dest/avm/opcodes/instruction.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction_impl.d.ts +0 -19
- package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
- package/dest/avm/opcodes/memory.d.ts +0 -74
- package/dest/avm/opcodes/memory.d.ts.map +0 -1
- package/dest/avm/opcodes/misc.d.ts +0 -17
- package/dest/avm/opcodes/misc.d.ts.map +0 -1
- package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
- package/dest/avm/opcodes/storage.d.ts +0 -24
- package/dest/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/avm/serialization/buffer_cursor.d.ts +0 -28
- package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
- package/dest/avm/serialization/bytecode_serialization.d.ts +0 -21
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
- package/dest/avm/serialization/instruction_serialization.d.ts +0 -105
- package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
- package/dest/avm/test_utils.d.ts +0 -16
- package/dest/avm/test_utils.d.ts.map +0 -1
- package/dest/client/client_execution_context.d.ts +0 -214
- package/dest/client/client_execution_context.d.ts.map +0 -1
- package/dest/client/db_oracle.d.ts +0 -229
- package/dest/client/db_oracle.d.ts.map +0 -1
- package/dest/client/execution_note_cache.d.ts +0 -93
- package/dest/client/execution_note_cache.d.ts.map +0 -1
- package/dest/client/index.d.ts +0 -15
- package/dest/client/index.d.ts.map +0 -1
- package/dest/client/pick_notes.d.ts +0 -85
- package/dest/client/pick_notes.d.ts.map +0 -1
- package/dest/client/private_execution.d.ts +0 -19
- package/dest/client/private_execution.d.ts.map +0 -1
- package/dest/client/simulator.d.ts +0 -60
- package/dest/client/simulator.d.ts.map +0 -1
- package/dest/client/unconstrained_execution.d.ts +0 -10
- package/dest/client/unconstrained_execution.d.ts.map +0 -1
- package/dest/client/view_data_oracle.d.ts +0 -159
- package/dest/client/view_data_oracle.d.ts.map +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -4
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/errors.d.ts +0 -54
- package/dest/common/errors.d.ts.map +0 -1
- package/dest/common/hashed_values_cache.d.ts +0 -28
- package/dest/common/hashed_values_cache.d.ts.map +0 -1
- package/dest/common/index.d.ts +0 -3
- package/dest/common/index.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/simulation_provider.d.ts +0 -19
- package/dest/common/simulation_provider.d.ts.map +0 -1
- package/dest/common.d.ts +0 -2
- package/dest/common.d.ts.map +0 -1
- package/dest/providers/acvm_native.d.ts +0 -40
- package/dest/providers/acvm_native.d.ts.map +0 -1
- package/dest/providers/acvm_wasm.d.ts +0 -15
- package/dest/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/providers/factory.d.ts +0 -12
- package/dest/providers/factory.d.ts.map +0 -1
- package/dest/providers/index.d.ts +0 -5
- package/dest/providers/index.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/db_interfaces.d.ts +0 -105
- package/dest/public/db_interfaces.d.ts.map +0 -1
- package/dest/public/execution.d.ts +0 -102
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/executor_metrics.d.ts +0 -13
- package/dest/public/executor_metrics.d.ts.map +0 -1
- package/dest/public/fee_payment.d.ts +0 -11
- package/dest/public/fee_payment.d.ts.map +0 -1
- package/dest/public/fixtures/index.d.ts +0 -3
- package/dest/public/fixtures/index.d.ts.map +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +0 -21
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +0 -1
- package/dest/public/fixtures/utils.d.ts +0 -17
- package/dest/public/fixtures/utils.d.ts.map +0 -1
- package/dest/public/index.d.ts +0 -9
- package/dest/public/index.d.ts.map +0 -1
- package/dest/public/public_db_sources.d.ts +0 -81
- package/dest/public/public_db_sources.d.ts.map +0 -1
- package/dest/public/public_processor.d.ts +0 -72
- package/dest/public/public_processor.d.ts.map +0 -1
- package/dest/public/public_processor_metrics.d.ts +0 -27
- package/dest/public/public_processor_metrics.d.ts.map +0 -1
- package/dest/public/public_tx_context.d.ts +0 -131
- package/dest/public/public_tx_context.d.ts.map +0 -1
- package/dest/public/public_tx_simulator.d.ts +0 -99
- package/dest/public/public_tx_simulator.d.ts.map +0 -1
- package/dest/public/side_effect_errors.d.ts +0 -4
- package/dest/public/side_effect_errors.d.ts.map +0 -1
- package/dest/public/side_effect_trace.d.ts +0 -126
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace_interface.d.ts +0 -32
- package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
- package/dest/public/unique_class_ids.d.ts +0 -37
- package/dest/public/unique_class_ids.d.ts.map +0 -1
- package/dest/public/utils.d.ts +0 -5
- package/dest/public/utils.d.ts.map +0 -1
- package/dest/server.d.ts +0 -6
- package/dest/server.d.ts.map +0 -1
- package/dest/stats/index.d.ts +0 -2
- package/dest/stats/index.d.ts.map +0 -1
- package/dest/stats/stats.d.ts +0 -4
- package/dest/stats/stats.d.ts.map +0 -1
- package/dest/test/utils.d.ts +0 -12
- package/dest/test/utils.d.ts.map +0 -1
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { Opcode } from './serialization/instruction_serialization.js';
|
|
2
2
|
const AVM_MAGIC_SUFFIX = Buffer.from([
|
|
3
|
-
Opcode.MOV_16,
|
|
4
|
-
0x00,
|
|
5
|
-
...Buffer.from('18ca', 'hex'),
|
|
6
|
-
...Buffer.from('18ca', 'hex')
|
|
3
|
+
Opcode.MOV_16,
|
|
4
|
+
0x00,
|
|
5
|
+
...Buffer.from('18ca', 'hex'),
|
|
6
|
+
...Buffer.from('18ca', 'hex')
|
|
7
7
|
]);
|
|
8
8
|
export function markBytecodeAsAvm(bytecode) {
|
|
9
|
-
return Buffer.concat([
|
|
9
|
+
return Buffer.concat([
|
|
10
|
+
bytecode,
|
|
11
|
+
AVM_MAGIC_SUFFIX
|
|
12
|
+
]);
|
|
10
13
|
}
|
|
11
14
|
export function isAvmBytecode(bytecode) {
|
|
12
15
|
const magicSize = AVM_MAGIC_SUFFIX.length;
|
|
13
16
|
return bytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
|
|
14
17
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2J5dGVjb2RlX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDbkMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTO0lBQ3hCLElBQUksRUFBRSxXQUFXO0lBQ2pCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsWUFBWTtJQUMzQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFlBQVk7Q0FDNUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBZ0I7SUFDNUMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQzFDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2hFLENBQUMifQ==
|
package/dest/avm/errors.js
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { ExecutionError } from '../common/errors.js';
|
|
2
2
|
/**
|
|
3
3
|
* Avm-specific errors should derive from this
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
constructor(message) {
|
|
4
|
+
*/ export class AvmExecutionError extends Error {
|
|
5
|
+
constructor(message){
|
|
7
6
|
super(message);
|
|
8
7
|
this.name = 'AvmExecutionError';
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
10
|
export class NoBytecodeForContractError extends AvmExecutionError {
|
|
12
|
-
constructor(contractAddress)
|
|
11
|
+
constructor(contractAddress){
|
|
13
12
|
super(`No bytecode found at: ${contractAddress}`);
|
|
14
13
|
this.name = 'NoBytecodeFoundInterpreterError';
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
16
|
export class ArithmeticError extends AvmExecutionError {
|
|
18
|
-
constructor(message)
|
|
17
|
+
constructor(message){
|
|
19
18
|
super(message);
|
|
20
19
|
this.name = 'ArithmeticError';
|
|
21
20
|
}
|
|
@@ -23,9 +22,8 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
23
22
|
/**
|
|
24
23
|
* Error is thrown when the program counter goes to an invalid location.
|
|
25
24
|
* There is no instruction at the provided pc
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
constructor(pc, max) {
|
|
25
|
+
*/ export class InvalidProgramCounterError extends AvmExecutionError {
|
|
26
|
+
constructor(pc, max){
|
|
29
27
|
super(`Invalid program counter ${pc}, max is ${max}`);
|
|
30
28
|
this.name = 'InvalidProgramCounterError';
|
|
31
29
|
}
|
|
@@ -33,51 +31,46 @@ export class InvalidProgramCounterError extends AvmExecutionError {
|
|
|
33
31
|
/**
|
|
34
32
|
* Error is thrown when the program counter points to a byte
|
|
35
33
|
* of an invalid opcode.
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
constructor(str) {
|
|
34
|
+
*/ export class InvalidOpcodeError extends AvmExecutionError {
|
|
35
|
+
constructor(str){
|
|
39
36
|
super(str);
|
|
40
37
|
this.name = 'InvalidOpcodeError';
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
/**
|
|
44
41
|
* Error is thrown during parsing.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
constructor(str) {
|
|
42
|
+
*/ export class AvmParsingError extends AvmExecutionError {
|
|
43
|
+
constructor(str){
|
|
48
44
|
super(str);
|
|
49
45
|
this.name = 'AvmParsingError';
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
48
|
/**
|
|
53
49
|
* Error is thrown when the tag has an invalid value.
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
constructor(tagValue) {
|
|
50
|
+
*/ export class InvalidTagValueError extends AvmExecutionError {
|
|
51
|
+
constructor(tagValue){
|
|
57
52
|
super(`Tag value ${tagValue} is invalid.`);
|
|
58
53
|
this.name = 'InvalidTagValueError';
|
|
59
54
|
}
|
|
60
55
|
}
|
|
61
56
|
/**
|
|
62
57
|
* Error thrown during an instruction's execution (during its execute()).
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
constructor(message) {
|
|
58
|
+
*/ export class InstructionExecutionError extends AvmExecutionError {
|
|
59
|
+
constructor(message){
|
|
66
60
|
super(message);
|
|
67
61
|
this.name = 'InstructionExecutionError';
|
|
68
62
|
}
|
|
69
63
|
}
|
|
70
64
|
/**
|
|
71
65
|
* Error thrown on failed AVM memory tag check.
|
|
72
|
-
*/
|
|
73
|
-
export class TagCheckError extends AvmExecutionError {
|
|
66
|
+
*/ export class TagCheckError extends AvmExecutionError {
|
|
74
67
|
static forOffset(offset, gotTag, expectedTag) {
|
|
75
68
|
return new TagCheckError(`Tag mismatch at offset ${offset}, got ${gotTag}, expected ${expectedTag}`);
|
|
76
69
|
}
|
|
77
70
|
static forTag(gotTag, expectedTag) {
|
|
78
71
|
return new TagCheckError(`Tag mismatch, got ${gotTag}, expected ${expectedTag}`);
|
|
79
72
|
}
|
|
80
|
-
constructor(message)
|
|
73
|
+
constructor(message){
|
|
81
74
|
super(message);
|
|
82
75
|
this.name = 'TagCheckError';
|
|
83
76
|
}
|
|
@@ -85,9 +78,8 @@ export class TagCheckError extends AvmExecutionError {
|
|
|
85
78
|
/**
|
|
86
79
|
* Error is thrown when a relative memory address resolved to an offset which
|
|
87
80
|
* is out of range, i.e, greater than maxUint32.
|
|
88
|
-
*/
|
|
89
|
-
|
|
90
|
-
constructor(baseAddr, relOffset) {
|
|
81
|
+
*/ export class RelativeAddressOutOfRangeError extends AvmExecutionError {
|
|
82
|
+
constructor(baseAddr, relOffset){
|
|
91
83
|
super(`Address out of range. Base address ${baseAddr}, relative offset ${relOffset}`);
|
|
92
84
|
this.name = 'RelativeAddressOutOfRangeError';
|
|
93
85
|
}
|
|
@@ -95,52 +87,46 @@ export class RelativeAddressOutOfRangeError extends AvmExecutionError {
|
|
|
95
87
|
/**
|
|
96
88
|
* Error is thrown when a memory slice contains addresses which are
|
|
97
89
|
* out of range, i.e, greater than maxUint32.
|
|
98
|
-
*/
|
|
99
|
-
|
|
100
|
-
constructor(baseAddr, size) {
|
|
90
|
+
*/ export class MemorySliceOutOfRangeError extends AvmExecutionError {
|
|
91
|
+
constructor(baseAddr, size){
|
|
101
92
|
super(`Memory slice is out of range. Base address ${baseAddr}, size ${size}`);
|
|
102
93
|
this.name = 'MemorySliceOutOfRangeError';
|
|
103
94
|
}
|
|
104
95
|
}
|
|
105
|
-
/** Error thrown when out of gas. */
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
super(`Not enough ${dimensions.map(d => d.toUpperCase()).join(', ')} gas left`);
|
|
96
|
+
/** Error thrown when out of gas. */ export class OutOfGasError extends AvmExecutionError {
|
|
97
|
+
constructor(dimensions){
|
|
98
|
+
super(`Not enough ${dimensions.map((d)=>d.toUpperCase()).join(', ')} gas left`);
|
|
109
99
|
this.name = 'OutOfGasError';
|
|
110
100
|
}
|
|
111
101
|
}
|
|
112
102
|
/**
|
|
113
103
|
* Error is thrown when the supplied points length is not a multiple of 3. Specific for MSM opcode.
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
constructor(pointsReadLength) {
|
|
104
|
+
*/ export class MSMPointsLengthError extends AvmExecutionError {
|
|
105
|
+
constructor(pointsReadLength){
|
|
117
106
|
super(`Points vector length should be a multiple of 3, was ${pointsReadLength}`);
|
|
118
107
|
this.name = 'MSMPointsLengthError';
|
|
119
108
|
}
|
|
120
109
|
}
|
|
121
110
|
/**
|
|
122
111
|
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
constructor(point) {
|
|
112
|
+
*/ export class MSMPointNotOnCurveError extends AvmExecutionError {
|
|
113
|
+
constructor(point){
|
|
126
114
|
super(`Point ${point.toString()} is not on the curve.`);
|
|
127
115
|
this.name = 'MSMPointNotOnCurveError';
|
|
128
116
|
}
|
|
129
117
|
}
|
|
130
118
|
/**
|
|
131
119
|
* Error is thrown when some inputs of ToRadixBE are not valid.
|
|
132
|
-
*/
|
|
133
|
-
|
|
134
|
-
constructor(errorString) {
|
|
120
|
+
*/ export class InvalidToRadixInputsError extends AvmExecutionError {
|
|
121
|
+
constructor(errorString){
|
|
135
122
|
super(errorString);
|
|
136
123
|
this.name = 'InvalidToRadixInputsError';
|
|
137
124
|
}
|
|
138
125
|
}
|
|
139
126
|
/**
|
|
140
127
|
* Error is thrown when a static call attempts to alter some state
|
|
141
|
-
*/
|
|
142
|
-
|
|
143
|
-
constructor() {
|
|
128
|
+
*/ export class StaticCallAlterationError extends InstructionExecutionError {
|
|
129
|
+
constructor(){
|
|
144
130
|
super('Static call cannot update the state, emit L2->L1 messages or generate logs');
|
|
145
131
|
this.name = 'StaticCallAlterationError';
|
|
146
132
|
}
|
|
@@ -149,39 +135,38 @@ export class StaticCallAlterationError extends InstructionExecutionError {
|
|
|
149
135
|
* Meaningfully named alias for ExecutionError when used in the context of the AVM.
|
|
150
136
|
* Maintains a recursive structure reflecting the AVM's external callstack/errorstack, where
|
|
151
137
|
* options.cause is the error that caused this error (if this is not the root-cause itself).
|
|
152
|
-
*/
|
|
153
|
-
|
|
154
|
-
constructor(message, failingFunction, noirCallStack, options) {
|
|
138
|
+
*/ export class AvmRevertReason extends ExecutionError {
|
|
139
|
+
constructor(message, failingFunction, noirCallStack, options){
|
|
155
140
|
super(message, failingFunction, noirCallStack, options);
|
|
156
141
|
}
|
|
157
142
|
}
|
|
158
143
|
async function createRevertReason(message, revertData, context) {
|
|
159
144
|
// We drop the returnPc information.
|
|
160
|
-
const internalCallStack = context.machineState.internalCallStack.map(entry
|
|
145
|
+
const internalCallStack = context.machineState.internalCallStack.map((entry)=>entry.callPc);
|
|
161
146
|
// If we are reverting due to the same error that we have been tracking, we use the nested error as the cause.
|
|
162
147
|
let nestedError = undefined;
|
|
163
|
-
const revertDataEquals = (a, b)
|
|
164
|
-
if (context.machineState.collectedRevertInfo &&
|
|
165
|
-
revertDataEquals(context.machineState.collectedRevertInfo.revertDataRepresentative, revertData)) {
|
|
148
|
+
const revertDataEquals = (a, b)=>a.length === b.length && a.every((v, i)=>v.equals(b[i]));
|
|
149
|
+
if (context.machineState.collectedRevertInfo && revertDataEquals(context.machineState.collectedRevertInfo.revertDataRepresentative, revertData)) {
|
|
166
150
|
nestedError = context.machineState.collectedRevertInfo.recursiveRevertReason;
|
|
167
151
|
message = context.machineState.collectedRevertInfo.recursiveRevertReason.message;
|
|
168
152
|
}
|
|
169
153
|
const fnName = await context.persistableState.getPublicFunctionDebugName(context.environment);
|
|
170
|
-
return new AvmRevertReason(message,
|
|
171
|
-
/*failingFunction=*/ {
|
|
154
|
+
return new AvmRevertReason(message, /*failingFunction=*/ {
|
|
172
155
|
contractAddress: context.environment.address,
|
|
173
|
-
functionName: fnName
|
|
174
|
-
},
|
|
175
|
-
|
|
176
|
-
|
|
156
|
+
functionName: fnName
|
|
157
|
+
}, /*noirCallStack=*/ [
|
|
158
|
+
...internalCallStack,
|
|
159
|
+
context.machineState.pc
|
|
160
|
+
].map((pc)=>`0.${pc}`), /*options=*/ {
|
|
161
|
+
cause: nestedError
|
|
162
|
+
});
|
|
177
163
|
}
|
|
178
164
|
/**
|
|
179
165
|
* Create a "revert reason" error for an exceptional halt.
|
|
180
166
|
*
|
|
181
167
|
* @param haltingError - the lower-level error causing the exceptional halt
|
|
182
168
|
* @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
|
|
183
|
-
*/
|
|
184
|
-
export async function revertReasonFromExceptionalHalt(haltingError, context) {
|
|
169
|
+
*/ export async function revertReasonFromExceptionalHalt(haltingError, context) {
|
|
185
170
|
return await createRevertReason(haltingError.message, [], context);
|
|
186
171
|
}
|
|
187
172
|
/**
|
|
@@ -189,8 +174,6 @@ export async function revertReasonFromExceptionalHalt(haltingError, context) {
|
|
|
189
174
|
*
|
|
190
175
|
* @param revertData - output data of the explicit REVERT instruction
|
|
191
176
|
* @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
|
|
192
|
-
*/
|
|
193
|
-
export async function revertReasonFromExplicitRevert(revertData, context) {
|
|
177
|
+
*/ export async function revertReasonFromExplicitRevert(revertData, context) {
|
|
194
178
|
return await createRevertReason('Assertion failed: ', revertData, context);
|
|
195
179
|
}
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F2bS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3JEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxLQUFLO0lBQ25ELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFDL0QsWUFBWSxlQUE2QjtRQUN2QyxLQUFLLENBQUMseUJBQXlCLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxpQkFBaUI7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGlCQUFpQjtJQUMvRCxZQUFZLEVBQVUsRUFBRSxHQUFXO1FBQ2pDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyw0QkFBNEIsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsaUJBQWlCO0lBQ3ZELFlBQVksR0FBVztRQUNyQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FD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
|
|
@@ -2,7 +2,7 @@ import { GasFees, GlobalVariables } from '@aztec/circuits.js';
|
|
|
2
2
|
import { encodeArguments } from '@aztec/foundation/abi';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
5
|
-
import { getContractFunctionArtifact, getFunctionSelector, initContext, initExecutionEnvironment, resolveContractAssertionMessage
|
|
5
|
+
import { getContractFunctionArtifact, getFunctionSelector, initContext, initExecutionEnvironment, resolveContractAssertionMessage } from '../../avm/fixtures/index.js';
|
|
6
6
|
import { WorldStateDB } from '../../public/public_db_sources.js';
|
|
7
7
|
import { SideEffectTrace } from '../../public/side_effect_trace.js';
|
|
8
8
|
import { AvmPersistableStateManager, AvmSimulator } from '../../server.js';
|
|
@@ -14,11 +14,10 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
14
14
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the core AvmSimulator.
|
|
15
15
|
* It provides an interface for simulating one top-level call at a time and maintains state between
|
|
16
16
|
* subsequent top-level calls.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
constructor(contractDataSource, merkleTrees, skipContractDeployments = false, stateManager)
|
|
20
|
-
super(contractDataSource, merkleTrees, skipContractDeployments);
|
|
21
|
-
this.stateManager = stateManager;
|
|
17
|
+
*/ export class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
18
|
+
stateManager;
|
|
19
|
+
constructor(contractDataSource, merkleTrees, skipContractDeployments = false, stateManager){
|
|
20
|
+
super(contractDataSource, merkleTrees, skipContractDeployments), this.stateManager = stateManager;
|
|
22
21
|
}
|
|
23
22
|
static async create(skipContractDeployments = false) {
|
|
24
23
|
const contractDataSource = new SimpleContractDataSource();
|
|
@@ -28,14 +27,12 @@ export class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
|
28
27
|
const firstNullifier = new Fr(420000);
|
|
29
28
|
// FIXME: merkle ops should work, but I'm seeing frequent (but inconsistent) bytecode retrieval
|
|
30
29
|
// failures on 2nd call to simulateCall with merkle ops on
|
|
31
|
-
const stateManager = await AvmPersistableStateManager.create(worldStateDB, trace,
|
|
32
|
-
/*doMerkleOperations=*/ false, firstNullifier);
|
|
30
|
+
const stateManager = await AvmPersistableStateManager.create(worldStateDB, trace, /*doMerkleOperations=*/ false, firstNullifier);
|
|
33
31
|
return new AvmSimulationTester(contractDataSource, merkleTrees, skipContractDeployments, stateManager);
|
|
34
32
|
}
|
|
35
33
|
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
async simulateCall(sender, address, fnName, args, isStaticCall = false) {
|
|
34
|
+
* Simulate a top-level contract call.
|
|
35
|
+
*/ async simulateCall(sender, address, fnName, args, isStaticCall = false) {
|
|
39
36
|
const contractArtifact = await this.contractDataSource.getContractArtifact(address);
|
|
40
37
|
if (!contractArtifact) {
|
|
41
38
|
throw new Error(`Contract not found at address: ${address}`);
|
|
@@ -43,7 +40,10 @@ export class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
|
43
40
|
const fnSelector = await getFunctionSelector(fnName, contractArtifact);
|
|
44
41
|
const fnAbi = getContractFunctionArtifact(fnName, contractArtifact);
|
|
45
42
|
const encodedArgs = encodeArguments(fnAbi, args);
|
|
46
|
-
const calldata = [
|
|
43
|
+
const calldata = [
|
|
44
|
+
fnSelector.toField(),
|
|
45
|
+
...encodedArgs
|
|
46
|
+
];
|
|
47
47
|
const globals = GlobalVariables.empty();
|
|
48
48
|
globals.timestamp = TIMESTAMP;
|
|
49
49
|
globals.gasFees = DEFAULT_GAS_FEES;
|
|
@@ -52,22 +52,23 @@ export class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
|
52
52
|
globals,
|
|
53
53
|
address,
|
|
54
54
|
sender,
|
|
55
|
-
isStaticCall
|
|
55
|
+
isStaticCall
|
|
56
56
|
});
|
|
57
57
|
const persistableState = this.stateManager.fork();
|
|
58
|
-
const context = initContext({
|
|
58
|
+
const context = initContext({
|
|
59
|
+
env: environment,
|
|
60
|
+
persistableState
|
|
61
|
+
});
|
|
59
62
|
// First we simulate (though it's not needed in this simple case).
|
|
60
63
|
const simulator = new AvmSimulator(context);
|
|
61
64
|
const result = await simulator.execute();
|
|
62
65
|
if (result.reverted) {
|
|
63
66
|
this.logger.error(`Error in ${fnName}:`);
|
|
64
67
|
this.logger.error(resolveContractAssertionMessage(fnName, result.revertReason, result.output, contractArtifact));
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
68
|
+
} else {
|
|
67
69
|
this.logger.info(`Simulation of function ${fnName} succeeded!`);
|
|
68
70
|
this.stateManager.merge(persistableState);
|
|
69
71
|
}
|
|
70
72
|
return result;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRpb25fdGVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9maXh0dXJlcy9hdm1fc2ltdWxhdGlvbl90ZXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzdELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsK0JBQStCLEdBQ2hDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUFDOUQsWUFDRSxrQkFBNEMsRUFDNUMsV0FBc0MsRUFDdEMsdUJBQXVCLEdBQUcsS0FBSyxFQUN2QixZQUF3QztRQUVoRCxLQUFLLENB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
-
import { DEPLOYER_CONTRACT_ADDRESS, PUBLIC_DISPATCH_SELECTOR, PublicDataWrite, computeInitializationHash
|
|
2
|
+
import { DEPLOYER_CONTRACT_ADDRESS, PUBLIC_DISPATCH_SELECTOR, PublicDataWrite, computeInitializationHash } from '@aztec/circuits.js';
|
|
3
3
|
import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/circuits.js/hash';
|
|
4
4
|
import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/circuits.js/testing';
|
|
5
5
|
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
@@ -18,11 +18,12 @@ import { PUBLIC_DISPATCH_FN_NAME, getContractFunctionArtifact } from './index.js
|
|
|
18
18
|
* For example, has been extended for testing of the core AvmSimulator, and again for the PublicTxSimulator,
|
|
19
19
|
* both of which benefit from such pseudo-deployments by populating merkle trees and a contract data source
|
|
20
20
|
* with contract information.
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
*/ export class BaseAvmSimulationTester {
|
|
22
|
+
contractDataSource;
|
|
23
|
+
merkleTrees;
|
|
24
|
+
skipContractDeployments;
|
|
25
|
+
logger;
|
|
26
|
+
constructor(contractDataSource, merkleTrees, /* May want to skip contract deployment tree ops to test failed contract address nullifier checks on CALL */ skipContractDeployments = false){
|
|
26
27
|
this.contractDataSource = contractDataSource;
|
|
27
28
|
this.merkleTrees = merkleTrees;
|
|
28
29
|
this.skipContractDeployments = skipContractDeployments;
|
|
@@ -37,21 +38,24 @@ export class BaseAvmSimulationTester {
|
|
|
37
38
|
const leafSlot = await computePublicDataTreeLeafSlot(address, slot);
|
|
38
39
|
// get existing preimage
|
|
39
40
|
const publicDataWrite = new PublicDataWrite(leafSlot, value);
|
|
40
|
-
await this.merkleTrees.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
41
|
+
await this.merkleTrees.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
42
|
+
publicDataWrite.toBuffer()
|
|
43
|
+
], 0);
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
async registerAndDeployContract(constructorArgs, deployer, contractArtifact, seed = 0) {
|
|
46
|
+
* Derive the contract class and instance with some seed.
|
|
47
|
+
* Add both to the contract data source along with the contract artifact.
|
|
48
|
+
*/ async registerAndDeployContract(constructorArgs, deployer, contractArtifact, seed = 0) {
|
|
47
49
|
const bytecode = getContractFunctionArtifact(PUBLIC_DISPATCH_FN_NAME, contractArtifact).bytecode;
|
|
48
|
-
const contractClass = await makeContractClassPublic(seed,
|
|
49
|
-
|
|
50
|
+
const contractClass = await makeContractClassPublic(seed, /*publicDispatchFunction=*/ {
|
|
51
|
+
bytecode,
|
|
52
|
+
selector: new FunctionSelector(PUBLIC_DISPATCH_SELECTOR)
|
|
53
|
+
});
|
|
50
54
|
const constructorAbi = getContractFunctionArtifact('constructor', contractArtifact);
|
|
51
55
|
const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
|
|
52
56
|
const contractInstance = await makeContractInstanceFromClassId(contractClass.id, seed, {
|
|
53
57
|
deployer,
|
|
54
|
-
initializationHash
|
|
58
|
+
initializationHash
|
|
55
59
|
});
|
|
56
60
|
await this.addContractClass(contractClass, contractArtifact);
|
|
57
61
|
await this.addContractInstance(contractInstance);
|
|
@@ -68,9 +72,10 @@ export class BaseAvmSimulationTester {
|
|
|
68
72
|
async addContractInstance(contractInstance) {
|
|
69
73
|
if (!this.skipContractDeployments) {
|
|
70
74
|
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractInstance.address.toField());
|
|
71
|
-
await this.merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
75
|
+
await this.merkleTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
76
|
+
contractAddressNullifier.toBuffer()
|
|
77
|
+
], 0);
|
|
72
78
|
}
|
|
73
79
|
await this.contractDataSource.addContractInstance(contractInstance);
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9hdm1fc2ltdWxhdGlvbl90ZXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2Jhc2VfYXZtX3NpbXVsYXRpb25fdGVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUdMLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RyxPQUFPLEVBQXlCLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHbEY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0lBRzNDLFlBQ1Msa0JBQTRDLEVBQzVDLFdBQXNDO0lBQzdDLDRHQUE0RztJQUNwRywwQkFBMEIsS0FBSztRQUhoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTBCO1FBQzVDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUVyQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVE7UUFObEMsV0FBTSxHQUFHLFlBQVksQ0FBQyx1QkFB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
|
|
@@ -20,72 +20,74 @@ import { PublicStorage } from '../journal/public_storage.js';
|
|
|
20
20
|
export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
|
|
21
21
|
/**
|
|
22
22
|
* Create a new AVM context with default values.
|
|
23
|
-
*/
|
|
24
|
-
export function initContext(overrides) {
|
|
23
|
+
*/ export function initContext(overrides) {
|
|
25
24
|
return new AvmContext(overrides?.persistableState || initPersistableStateManager(), overrides?.env || initExecutionEnvironment(), overrides?.machineState || initMachineState());
|
|
26
25
|
}
|
|
27
|
-
/** Creates an empty state manager with mocked host storage. */
|
|
28
|
-
export function initPersistableStateManager(overrides) {
|
|
26
|
+
/** Creates an empty state manager with mocked host storage. */ export function initPersistableStateManager(overrides) {
|
|
29
27
|
const worldStateDB = overrides?.worldStateDB || mock();
|
|
30
28
|
return new AvmPersistableStateManager(worldStateDB, overrides?.trace || mock(), overrides?.publicStorage || new PublicStorage(worldStateDB), overrides?.nullifiers || new NullifierManager(worldStateDB), overrides?.doMerkleOperations || false, overrides?.merkleTrees || mock(), overrides?.firstNullifier || new Fr(27));
|
|
31
29
|
}
|
|
32
30
|
/**
|
|
33
31
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
34
|
-
*/
|
|
35
|
-
export function initExecutionEnvironment(overrides) {
|
|
32
|
+
*/ export function initExecutionEnvironment(overrides) {
|
|
36
33
|
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? []);
|
|
37
34
|
}
|
|
38
35
|
/**
|
|
39
36
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
40
|
-
*/
|
|
41
|
-
export function initGlobalVariables(overrides) {
|
|
37
|
+
*/ export function initGlobalVariables(overrides) {
|
|
42
38
|
return new GlobalVariables(overrides?.chainId ?? Fr.zero(), overrides?.version ?? Fr.zero(), overrides?.blockNumber ?? Fr.zero(), overrides?.slotNumber ?? Fr.zero(), overrides?.timestamp ?? Fr.zero(), overrides?.coinbase ?? EthAddress.ZERO, overrides?.feeRecipient ?? AztecAddress.zero(), overrides?.gasFees ?? GasFees.empty());
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
45
41
|
* Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
|
|
46
|
-
*/
|
|
47
|
-
export function initMachineState(overrides) {
|
|
42
|
+
*/ export function initMachineState(overrides) {
|
|
48
43
|
return AvmMachineState.fromState({
|
|
49
44
|
l2GasLeft: overrides?.l2GasLeft ?? MAX_L2_GAS_PER_TX_PUBLIC_PORTION,
|
|
50
|
-
daGasLeft: overrides?.daGasLeft ?? 1e8
|
|
45
|
+
daGasLeft: overrides?.daGasLeft ?? 1e8
|
|
51
46
|
});
|
|
52
47
|
}
|
|
53
48
|
/**
|
|
54
49
|
* Create a new object with all the same properties as the original, except for the ones in the overrides object.
|
|
55
|
-
*/
|
|
56
|
-
export function allSameExcept(original, overrides) {
|
|
50
|
+
*/ export function allSameExcept(original, overrides) {
|
|
57
51
|
return merge({}, original, overrides);
|
|
58
52
|
}
|
|
59
53
|
export function randomMemoryBytes(length) {
|
|
60
|
-
return [
|
|
54
|
+
return [
|
|
55
|
+
...Array(length)
|
|
56
|
+
].map((_)=>new Uint8(Math.floor(Math.random() * 255)));
|
|
61
57
|
}
|
|
62
58
|
export function randomMemoryUint32s(length) {
|
|
63
|
-
return [
|
|
59
|
+
return [
|
|
60
|
+
...Array(length)
|
|
61
|
+
].map((_)=>new Uint32(Math.floor(Math.random() * 255)));
|
|
64
62
|
}
|
|
65
63
|
export function randomMemoryUint64s(length) {
|
|
66
|
-
return [
|
|
64
|
+
return [
|
|
65
|
+
...Array(length)
|
|
66
|
+
].map((_)=>new Uint64(Math.floor(Math.random() * 255)));
|
|
67
67
|
}
|
|
68
68
|
export function randomMemoryFields(length) {
|
|
69
|
-
return [
|
|
69
|
+
return [
|
|
70
|
+
...Array(length)
|
|
71
|
+
].map((_)=>new Field(Fr.random()));
|
|
70
72
|
}
|
|
71
73
|
export function getFunctionSelector(functionName, contractArtifact) {
|
|
72
|
-
const fnArtifact = contractArtifact.functions.find(f
|
|
74
|
+
const fnArtifact = contractArtifact.functions.find((f)=>f.name === functionName);
|
|
73
75
|
assert(!!fnArtifact, `Function ${functionName} not found in ${contractArtifact.name}`);
|
|
74
76
|
const params = fnArtifact.parameters;
|
|
75
77
|
return FunctionSelector.fromNameAndParameters(fnArtifact.name, params);
|
|
76
78
|
}
|
|
77
79
|
export function getContractFunctionArtifact(functionName, contractArtifact) {
|
|
78
|
-
const artifact = contractArtifact.functions.find(f
|
|
80
|
+
const artifact = contractArtifact.functions.find((f)=>f.name === functionName);
|
|
79
81
|
if (!artifact) {
|
|
80
82
|
return undefined;
|
|
81
83
|
}
|
|
82
84
|
return artifact;
|
|
83
85
|
}
|
|
84
86
|
export function resolveContractAssertionMessage(functionName, revertReason, output, contractArtifact) {
|
|
85
|
-
traverseCauseChain(revertReason, cause
|
|
87
|
+
traverseCauseChain(revertReason, (cause)=>{
|
|
86
88
|
revertReason = cause;
|
|
87
89
|
});
|
|
88
|
-
const functionArtifact = contractArtifact.functions.find(f
|
|
90
|
+
const functionArtifact = contractArtifact.functions.find((f)=>f.name === functionName);
|
|
89
91
|
if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
|
|
90
92
|
return undefined;
|
|
91
93
|
}
|
|
@@ -95,7 +97,7 @@ export function getAvmTestContractFunctionSelector(functionName) {
|
|
|
95
97
|
return getFunctionSelector(functionName, AvmTestContractArtifact);
|
|
96
98
|
}
|
|
97
99
|
export function getAvmGadgetsTestContractFunctionSelector(functionName) {
|
|
98
|
-
const artifact = AvmGadgetsTestContractArtifact.functions.find(f
|
|
100
|
+
const artifact = AvmGadgetsTestContractArtifact.functions.find((f)=>f.name === functionName);
|
|
99
101
|
assert(!!artifact, `Function ${functionName} not found in AvmGadgetsTestContractArtifact`);
|
|
100
102
|
const params = artifact.parameters;
|
|
101
103
|
return FunctionSelector.fromNameAndParameters(artifact.name, params);
|
|
@@ -106,7 +108,7 @@ export function getAvmTestContractArtifact(functionName) {
|
|
|
106
108
|
return artifact;
|
|
107
109
|
}
|
|
108
110
|
export function getAvmGadgetsTestContractArtifact(functionName) {
|
|
109
|
-
const artifact = AvmGadgetsTestContractArtifact.functions.find(f
|
|
111
|
+
const artifact = AvmGadgetsTestContractArtifact.functions.find((f)=>f.name === functionName);
|
|
110
112
|
assert(!!artifact?.bytecode, `No bytecode found for function ${functionName}. Try re-running bootstrap.sh on the repository root.`);
|
|
111
113
|
return artifact;
|
|
112
114
|
}
|
|
@@ -122,13 +124,12 @@ export function resolveAvmTestContractAssertionMessage(functionName, revertReaso
|
|
|
122
124
|
return resolveContractAssertionMessage(functionName, revertReason, output, AvmTestContractArtifact);
|
|
123
125
|
}
|
|
124
126
|
export function resolveAvmGadgetsTestContractAssertionMessage(functionName, revertReason, output) {
|
|
125
|
-
traverseCauseChain(revertReason, cause
|
|
127
|
+
traverseCauseChain(revertReason, (cause)=>{
|
|
126
128
|
revertReason = cause;
|
|
127
129
|
});
|
|
128
|
-
const functionArtifact = AvmGadgetsTestContractArtifact.functions.find(f
|
|
130
|
+
const functionArtifact = AvmGadgetsTestContractArtifact.functions.find((f)=>f.name === functionName);
|
|
129
131
|
if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
|
|
130
132
|
return undefined;
|
|
131
133
|
}
|
|
132
134
|
return resolveAssertionMessageFromRevertData(output, functionArtifact);
|
|
133
135
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFnRCxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUFFLDBCQUEw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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computePublicBytecodeCommitment
|
|
1
|
+
import { computePublicBytecodeCommitment } from '@aztec/circuits.js';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { PUBLIC_DISPATCH_FN_NAME } from './index.js';
|
|
4
4
|
/**
|
|
@@ -7,17 +7,14 @@ import { PUBLIC_DISPATCH_FN_NAME } from './index.js';
|
|
|
7
7
|
* and instances and then probe it via the ContractDataSource interface.
|
|
8
8
|
*
|
|
9
9
|
* This class does not include any real merkle trees & merkle operations.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// maps contract instance address to address
|
|
19
|
-
this.contractArtifacts = new Map();
|
|
20
|
-
}
|
|
10
|
+
*/ export class SimpleContractDataSource {
|
|
11
|
+
logger = createLogger('simple-contract-data-source');
|
|
12
|
+
// maps contract class ID to class
|
|
13
|
+
contractClasses = new Map();
|
|
14
|
+
// maps contract instance address to instance
|
|
15
|
+
contractInstances = new Map();
|
|
16
|
+
// maps contract instance address to address
|
|
17
|
+
contractArtifacts = new Map();
|
|
21
18
|
/////////////////////////////////////////////////////////////
|
|
22
19
|
// Helper functions not in the contract data source interface
|
|
23
20
|
getFirstContractInstance() {
|
|
@@ -72,4 +69,3 @@ export class SimpleContractDataSource {
|
|
|
72
69
|
return Promise.resolve();
|
|
73
70
|
}
|
|
74
71
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlX2NvbnRyYWN0X2RhdGFfc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9maXh0dXJlcy9zaW1wbGVfY29udHJhY3RfZGF0YV9zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU1MLCtCQUErQixHQUNoQyxNQUFNLG9CQUFvQixDQUFDO0FBSTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUFyQztRQUNTLFdBQU0sR0FBRyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUU1RCxrQ0FBa0M7UUFDMUIsb0JBQWUsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0RSw2Q0FBNkM7UUFDckMsc0JBQWlCLEdBQTZDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEYsNENBQTRDO1FBQ3BDLHNCQUFpQixHQUFrQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBbUV2RSxDQUFDO0lBakVDLDZEQUE2RDtJQUM3RCw2REFBNkQ7SUFDN0Qsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBVyxFQUFFLFFBQTBCO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsK0NBQStDO0lBQy9DLGlCQUFpQixDQUFDLFFBQXNCLEVBQUUsU0FBMkI7UUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdD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
|