@aztec/simulator 0.38.0 → 0.39.0
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/oracle/oracle.d.ts +1 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +8 -23
- package/dest/acvm/oracle/typed_oracle.d.ts +2 -3
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +4 -7
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +17 -11
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +3 -1
- package/dest/avm/avm_machine_state.d.ts +5 -8
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +10 -22
- package/dest/avm/avm_message_call_result.d.ts +5 -8
- package/dest/avm/avm_message_call_result.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.js +1 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +17 -13
- package/dest/avm/errors.d.ts +43 -2
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +86 -4
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +4 -3
- package/dest/avm/opcodes/conversion.d.ts +16 -0
- package/dest/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/avm/opcodes/conversion.js +48 -0
- package/dest/avm/opcodes/environment_getters.d.ts +12 -13
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +13 -49
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +11 -1
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +4 -1
- package/dest/avm/serialization/instruction_serialization.d.ts +2 -1
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +3 -1
- package/dest/client/client_execution_context.d.ts +28 -1
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +50 -15
- package/dest/client/db_oracle.d.ts +1 -8
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_result.d.ts +4 -1
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +16 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +3 -1
- package/dest/client/simulator.d.ts +1 -31
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +3 -42
- package/dest/client/view_data_oracle.d.ts +0 -7
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -10
- package/dest/common/errors.d.ts +5 -0
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +6 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/public/abstract_phase_manager.d.ts +8 -4
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +38 -14
- package/dest/public/app_logic_phase_manager.d.ts +1 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +3 -3
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +1 -4
- package/dest/public/hints_builder.d.ts +3 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +3 -3
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +5 -3
- package/dest/public/setup_phase_manager.d.ts +1 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +3 -2
- package/dest/public/tail_phase_manager.d.ts +1 -0
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +2 -1
- package/dest/public/teardown_phase_manager.d.ts +1 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +3 -2
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +1 -1
- package/dest/rollup/index.d.ts +2 -0
- package/dest/rollup/index.d.ts.map +1 -0
- package/dest/rollup/index.js +2 -0
- package/dest/rollup/rollup.d.ts +77 -0
- package/dest/rollup/rollup.d.ts.map +1 -0
- package/dest/rollup/rollup.js +78 -0
- package/dest/stats/index.d.ts +2 -0
- package/dest/stats/index.d.ts.map +1 -0
- package/dest/stats/index.js +2 -0
- package/dest/stats/stats.d.ts +4 -0
- package/dest/stats/stats.d.ts.map +1 -0
- package/dest/stats/stats.js +11 -0
- package/package.json +8 -8
- package/src/acvm/oracle/oracle.ts +23 -27
- package/src/acvm/oracle/typed_oracle.ts +12 -9
- package/src/avm/avm_execution_environment.ts +34 -42
- package/src/avm/avm_gas.ts +2 -0
- package/src/avm/avm_machine_state.ts +14 -25
- package/src/avm/avm_message_call_result.ts +3 -14
- package/src/avm/avm_simulator.ts +22 -12
- package/src/avm/errors.ts +94 -4
- package/src/avm/journal/journal.ts +3 -2
- package/src/avm/opcodes/conversion.ts +59 -0
- package/src/avm/opcodes/environment_getters.ts +13 -66
- package/src/avm/opcodes/external_calls.ts +11 -0
- package/src/avm/serialization/bytecode_serialization.ts +3 -0
- package/src/avm/serialization/instruction_serialization.ts +2 -0
- package/src/client/client_execution_context.ts +87 -15
- package/src/client/db_oracle.ts +1 -9
- package/src/client/execution_result.ts +21 -2
- package/src/client/private_execution.ts +2 -0
- package/src/client/simulator.ts +2 -80
- package/src/client/view_data_oracle.ts +0 -10
- package/src/common/errors.ts +5 -0
- package/src/index.ts +1 -0
- package/src/public/abstract_phase_manager.ts +46 -18
- package/src/public/app_logic_phase_manager.ts +2 -1
- package/src/public/executor.ts +0 -4
- package/src/public/hints_builder.ts +5 -5
- package/src/public/public_processor.ts +8 -2
- package/src/public/setup_phase_manager.ts +16 -8
- package/src/public/tail_phase_manager.ts +6 -1
- package/src/public/teardown_phase_manager.ts +16 -8
- package/src/public/transitional_adaptors.ts +1 -0
- package/src/rollup/index.ts +1 -0
- package/src/rollup/rollup.ts +160 -0
- package/src/stats/index.ts +1 -0
- package/src/stats/stats.ts +20 -0
|
@@ -1,115 +1,79 @@
|
|
|
1
|
-
import { Field } from '../avm_memory_types.js';
|
|
1
|
+
import { Field, Uint64 } from '../avm_memory_types.js';
|
|
2
2
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { GetterInstruction } from './instruction_impl.js';
|
|
4
4
|
class EnvironmentGetterInstruction extends GetterInstruction {
|
|
5
5
|
getValue(context) {
|
|
6
|
-
return
|
|
6
|
+
return this.getEnvironmentValue(context.environment);
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export class Address extends EnvironmentGetterInstruction {
|
|
10
10
|
getEnvironmentValue(env) {
|
|
11
|
-
return env.address;
|
|
11
|
+
return new Field(env.address.toField());
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
Address.type = 'ADDRESS';
|
|
15
15
|
Address.opcode = Opcode.ADDRESS;
|
|
16
16
|
export class StorageAddress extends EnvironmentGetterInstruction {
|
|
17
17
|
getEnvironmentValue(env) {
|
|
18
|
-
return env.storageAddress;
|
|
18
|
+
return new Field(env.storageAddress.toField());
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
StorageAddress.type = 'STORAGEADDRESS';
|
|
22
22
|
StorageAddress.opcode = Opcode.STORAGEADDRESS;
|
|
23
23
|
export class Sender extends EnvironmentGetterInstruction {
|
|
24
24
|
getEnvironmentValue(env) {
|
|
25
|
-
return env.sender;
|
|
25
|
+
return new Field(env.sender.toField());
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
Sender.type = 'SENDER';
|
|
29
29
|
Sender.opcode = Opcode.SENDER;
|
|
30
30
|
export class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
31
31
|
getEnvironmentValue(env) {
|
|
32
|
-
return env.feePerL2Gas;
|
|
32
|
+
return new Field(env.feePerL2Gas);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
FeePerL2Gas.type = 'FEEPERL2GAS';
|
|
36
36
|
FeePerL2Gas.opcode = Opcode.FEEPERL2GAS;
|
|
37
37
|
export class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
38
38
|
getEnvironmentValue(env) {
|
|
39
|
-
return env.feePerDaGas;
|
|
39
|
+
return new Field(env.feePerDaGas);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
FeePerDAGas.type = 'FEEPERDAGAS';
|
|
43
43
|
FeePerDAGas.opcode = Opcode.FEEPERDAGAS;
|
|
44
44
|
export class TransactionFee extends EnvironmentGetterInstruction {
|
|
45
45
|
getEnvironmentValue(env) {
|
|
46
|
-
return env.transactionFee;
|
|
46
|
+
return new Field(env.transactionFee);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
TransactionFee.type = 'TRANSACTIONFEE';
|
|
50
50
|
TransactionFee.opcode = Opcode.TRANSACTIONFEE;
|
|
51
51
|
export class ChainId extends EnvironmentGetterInstruction {
|
|
52
52
|
getEnvironmentValue(env) {
|
|
53
|
-
return env.globals.chainId;
|
|
53
|
+
return new Field(env.globals.chainId);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
ChainId.type = 'CHAINID';
|
|
57
57
|
ChainId.opcode = Opcode.CHAINID;
|
|
58
58
|
export class Version extends EnvironmentGetterInstruction {
|
|
59
59
|
getEnvironmentValue(env) {
|
|
60
|
-
return env.globals.version;
|
|
60
|
+
return new Field(env.globals.version);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
Version.type = 'VERSION';
|
|
64
64
|
Version.opcode = Opcode.VERSION;
|
|
65
65
|
export class BlockNumber extends EnvironmentGetterInstruction {
|
|
66
66
|
getEnvironmentValue(env) {
|
|
67
|
-
return env.globals.blockNumber;
|
|
67
|
+
return new Field(env.globals.blockNumber);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
BlockNumber.type = 'BLOCKNUMBER';
|
|
71
71
|
BlockNumber.opcode = Opcode.BLOCKNUMBER;
|
|
72
72
|
export class Timestamp extends EnvironmentGetterInstruction {
|
|
73
73
|
getEnvironmentValue(env) {
|
|
74
|
-
return env.globals.timestamp;
|
|
74
|
+
return new Uint64(env.globals.timestamp.toBigInt());
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
Timestamp.type = 'TIMESTAMP';
|
|
78
78
|
Timestamp.opcode = Opcode.TIMESTAMP;
|
|
79
|
-
|
|
80
|
-
// static type: string = 'COINBASE';
|
|
81
|
-
// static numberOfOperands = 1;
|
|
82
|
-
// constructor(private destOffset: number) {
|
|
83
|
-
// super();
|
|
84
|
-
// }
|
|
85
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
86
|
-
// const {coinbase} = machineState.executionEnvironment.globals;
|
|
87
|
-
// machineState.memory.set(this.destOffset, coinbase);
|
|
88
|
-
// this.incrementPc(machineState);
|
|
89
|
-
// }
|
|
90
|
-
// }
|
|
91
|
-
// export class BlockL2GasLimit extends EnvironmentGetterInstruction {
|
|
92
|
-
// static type: string = 'BLOCKL2GASLIMIT';
|
|
93
|
-
// static numberOfOperands = 1;
|
|
94
|
-
// constructor(private destOffset: number) {
|
|
95
|
-
// super();
|
|
96
|
-
// }
|
|
97
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
98
|
-
// const {blockL2GasLimit} = machineState.executionEnvironment.globals;
|
|
99
|
-
// machineState.memory.set(this.destOffset, blockL2GasLimit);
|
|
100
|
-
// this.incrementPc(machineState);
|
|
101
|
-
// }
|
|
102
|
-
// }
|
|
103
|
-
// export class BlockDAGasLimit extends EnvironmentGetterInstruction {
|
|
104
|
-
// static type: string = 'BLOCKDAGASLIMIT';
|
|
105
|
-
// static numberOfOperands = 1;
|
|
106
|
-
// constructor(private destOffset: number) {
|
|
107
|
-
// super();
|
|
108
|
-
// }
|
|
109
|
-
// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise<void> {
|
|
110
|
-
// const {blockDAGasLimit} = machineState.executionEnvironment.globals;
|
|
111
|
-
// machineState.memory.set(this.destOffset, blockDAGasLimit);
|
|
112
|
-
// this.incrementPc(machineState);
|
|
113
|
-
// }
|
|
114
|
-
// }
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQWUsNEJBQTZCLFNBQVEsaUJBQWlCO0lBQ3pELFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1B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
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFlLDRCQUE2QixTQUFRLGlCQUFpQjtJQUN6RCxRQUFRLENBQUMsT0FBbUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FHRjtBQUVELE1BQU0sT0FBTyxPQUFRLFNBQVEsNEJBQTRCO0lBSTdDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O0FBTE0sWUFBSSxHQUFXLFNBQVMsQ0FBQztBQUNoQixjQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQU9sRCxNQUFNLE9BQU8sY0FBZSxTQUFRLDRCQUE0QjtJQUlwRCxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O0FBTE0sV0FBSSxHQUFXLFFBQVEsQ0FBQztBQUNmLGFBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBTE0sZ0JBQUksR0FBVyxhQUFhLENBQUM7QUFDcEIsa0JBQU0sR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBT3RELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O0FBTE0sbUJBQUksR0FBVyxnQkFBZ0IsQ0FBQztBQUN2QixxQkFBTSxHQUFXLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFPekQsTUFBTSxPQUFPLE9BQVEsU0FBUSw0QkFBNEI7SUFJN0MsbUJBQW1CLENBQUMsR0FBNEI7UUFDeEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O0FBTE0sWUFBSSxHQUFXLFNBQVMsQ0FBQztBQUNoQixjQUFNLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQU9sRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxXQUFZLFNBQVEsNEJBQTRCO0lBSWpELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQUxNLGdCQUFJLEdBQVcsYUFBYSxDQUFDO0FBQ3BCLGtCQUFNLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQU90RCxNQUFNLE9BQU8sU0FBVSxTQUFRLDRCQUE0QjtJQUkvQyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAiB3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,+BAA+B;IA1BzC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAYvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAIrB,+BAA+B,EAAE,MAAM;IAKpC,OAAO,CAAC,OAAO,EAAE,UAAU;IA4FxC,aAA6B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CAC5D;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,SAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,eAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,QAAQ;IAVpF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM;IAI/E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,OAAO;IAVnF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD"}
|
|
@@ -4,6 +4,7 @@ import { convertAvmResultsToPxResult, createPublicExecution } from '../../public
|
|
|
4
4
|
import { gasLeftToGas, sumGas } from '../avm_gas.js';
|
|
5
5
|
import { Field, Uint8 } from '../avm_memory_types.js';
|
|
6
6
|
import { AvmSimulator } from '../avm_simulator.js';
|
|
7
|
+
import { RethrownError } from '../errors.js';
|
|
7
8
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
8
9
|
import { Addressing } from './addressing_mode.js';
|
|
9
10
|
import { Instruction } from './instruction.js';
|
|
@@ -55,6 +56,15 @@ class ExternalCall extends Instruction {
|
|
|
55
56
|
// );
|
|
56
57
|
// const nestedCallResults: AvmContractCallResults = await new AvmSimulator(nestedContext).execute();
|
|
57
58
|
const success = !nestedCallResults.reverted;
|
|
59
|
+
// TRANSITIONAL: We rethrow here so that the MESSAGE gets propagated.
|
|
60
|
+
// This means that for now, the caller cannot recover from errors.
|
|
61
|
+
if (!success) {
|
|
62
|
+
if (!nestedCallResults.revertReason) {
|
|
63
|
+
throw new Error('A reverted nested call should be assigned a revert reason in the AVM execution loop');
|
|
64
|
+
}
|
|
65
|
+
// The nested call's revertReason will be used to track the stack of error causes down to the root.
|
|
66
|
+
throw new RethrownError(nestedCallResults.revertReason.message, nestedCallResults.revertReason);
|
|
67
|
+
}
|
|
58
68
|
// We only take as much data as was specified in the return size and pad with zeroes if the return data is smaller
|
|
59
69
|
// than the specified size in order to prevent that memory to be left with garbage
|
|
60
70
|
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
@@ -155,4 +165,4 @@ Revert.wireFormat = [
|
|
|
155
165
|
OperandType.UINT32,
|
|
156
166
|
OperandType.UINT32,
|
|
157
167
|
];
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLFlBQWEsU0FBUSxXQUFXO0lBZ0I3QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLENBQUMsK0RBQStELEVBQ2pGLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFxQjtJQUM3Qiw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLHFFQUFxRTtJQUM3RCwrQkFBdUM7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFiQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkDvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,UAAU,yBAAyB;IACjC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;AAkFpE,UAAU,YAAY;IACpB,SAAS,IAAI,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,cAAkC,GACjD,WAAW,EAAE,CAiBf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DAGasLeft, L2GasLeft } from '../opcodes/context_getters.js';
|
|
2
|
+
import { ToRadixLE } from '../opcodes/conversion.js';
|
|
2
3
|
import { Keccak, Pedersen, Poseidon2, Sha256 } from '../opcodes/hashing.js';
|
|
3
4
|
import { Add, Address, And, BlockNumber, CMov, Call, CalldataCopy, Cast, ChainId, Div, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FeePerDAGas, FeePerL2Gas, FieldDiv, GetContractInstance, InternalCall, InternalReturn, Jump, JumpI, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Return, Revert, SLoad, SStore, SendL2ToL1Message, Sender, Set, Shl, Shr, StaticCall, StorageAddress, Sub, Timestamp, TransactionFee, Version, Xor, } from '../opcodes/index.js';
|
|
4
5
|
import { BufferCursor } from './buffer_cursor.js';
|
|
@@ -74,6 +75,8 @@ const INSTRUCTION_SET = () => new Map([
|
|
|
74
75
|
[Poseidon2.opcode, Poseidon2],
|
|
75
76
|
[Sha256.opcode, Sha256],
|
|
76
77
|
[Pedersen.opcode, Pedersen],
|
|
78
|
+
// Conversions
|
|
79
|
+
[ToRadixLE.opcode, ToRadixLE],
|
|
77
80
|
]);
|
|
78
81
|
/**
|
|
79
82
|
* Serializes an array of instructions to bytecode.
|
|
@@ -102,4 +105,4 @@ export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET())
|
|
|
102
105
|
}
|
|
103
106
|
return instructions;
|
|
104
107
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vc2VyaWFsaXphdGlvbi9ieXRlY29kZV9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQ0wsR0FBRyxFQUNILE9BQU8sRUFDUCxHQUFHLEVBQ0gsV0FBVyxFQUNYLElBQUksRUFDSixJQUFJLEVBQ0osWUFBWSxFQUNaLElBQUksRUFDSixPQUFPLEVBQ1AsR0FBRyxFQUNILFlBQVksRUFDWixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLEVBQUUsRUFDRixXQUFXLEVBQ1gsV0FBVyxFQUNYLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGNBQWMsRUFDZCxJQUFJLEVBQ0osS0FBSyxFQUNMLG1CQUFtQixFQUNuQixFQUFFLEVBQ0YsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsRUFBRSxFQUNGLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILFVBQVUsRUFDVixjQUFjLEVBQ2QsR0FBRyxFQUNILFNBQVMsRUFDVCxjQUFjLEVBQ2QsT0FBTyxFQUNQLEdBQUcsR0FDSixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUs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
|
|
@@ -63,7 +63,8 @@ export declare enum Opcode {
|
|
|
63
63
|
KECCAK = 55,
|
|
64
64
|
POSEIDON2 = 56,
|
|
65
65
|
SHA256 = 57,// temp - may be removed, but alot of contracts rely on it
|
|
66
|
-
PEDERSEN = 58
|
|
66
|
+
PEDERSEN = 58,// temp - may be removed, but alot of contracts rely on it
|
|
67
|
+
TORADIXLE = 59
|
|
67
68
|
}
|
|
68
69
|
export declare enum OperandType {
|
|
69
70
|
UINT8 = 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/instruction_serialization.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,oBAAY,MAAM;IAEhB,GAAG,IAAA;IACH,GAAG,IAAA;IACH,GAAG,IAAA;IACH,GAAG,IAAA;IACH,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,EAAE,IAAA;IACF,GAAG,IAAA;IACH,GAAG,IAAA;IACH,EAAE,IAAA;IACF,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,IAAI,KAAA;IAEJ,OAAO,KAAA;IACP,cAAc,KAAA;IACd,MAAM,KAAA;IACN,WAAW,KAAA;IACX,WAAW,KAAA;IACX,cAAc,KAAA;IACd,iBAAiB,KAAA;IACjB,OAAO,KAAA;IACP,OAAO,KAAA;IACP,WAAW,KAAA;IACX,SAAS,KAAA;IACT,QAAQ,KAAA;IACR,eAAe,KAAA;IACf,eAAe,KAAA;IACf,YAAY,KAAA;IAEZ,SAAS,KAAA;IACT,SAAS,KAAA;IAET,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,YAAY,KAAA;IACZ,cAAc,KAAA;IAEd,GAAG,KAAA;IACH,GAAG,KAAA;IACH,IAAI,KAAA;IAEJ,KAAK,KAAA;IACL,MAAM,KAAA;IACN,cAAc,KAAA;IACd,YAAY,KAAA;IACZ,eAAe,KAAA;IACf,aAAa,KAAA;IACb,eAAe,KAAA;IACf,YAAY,KAAA;IACZ,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IAClB,aAAa,KAAA;IAEb,IAAI,KAAA;IACJ,UAAU,KAAA;IACV,YAAY,KAAA;IACZ,MAAM,KAAA;IACN,MAAM,KAAA;IAEN,MAAM,KAAA;IACN,SAAS,KAAA;IACT,MAAM,KAAA,CAAE,0DAA0D;IAClE,QAAQ,KAAA;
|
|
1
|
+
{"version":3,"file":"instruction_serialization.d.ts","sourceRoot":"","sources":["../../../src/avm/serialization/instruction_serialization.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,oBAAY,MAAM;IAEhB,GAAG,IAAA;IACH,GAAG,IAAA;IACH,GAAG,IAAA;IACH,GAAG,IAAA;IACH,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,EAAE,IAAA;IACF,GAAG,IAAA;IACH,GAAG,IAAA;IACH,EAAE,IAAA;IACF,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,IAAI,KAAA;IAEJ,OAAO,KAAA;IACP,cAAc,KAAA;IACd,MAAM,KAAA;IACN,WAAW,KAAA;IACX,WAAW,KAAA;IACX,cAAc,KAAA;IACd,iBAAiB,KAAA;IACjB,OAAO,KAAA;IACP,OAAO,KAAA;IACP,WAAW,KAAA;IACX,SAAS,KAAA;IACT,QAAQ,KAAA;IACR,eAAe,KAAA;IACf,eAAe,KAAA;IACf,YAAY,KAAA;IAEZ,SAAS,KAAA;IACT,SAAS,KAAA;IAET,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,YAAY,KAAA;IACZ,cAAc,KAAA;IAEd,GAAG,KAAA;IACH,GAAG,KAAA;IACH,IAAI,KAAA;IAEJ,KAAK,KAAA;IACL,MAAM,KAAA;IACN,cAAc,KAAA;IACd,YAAY,KAAA;IACZ,eAAe,KAAA;IACf,aAAa,KAAA;IACb,eAAe,KAAA;IACf,YAAY,KAAA;IACZ,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IAClB,aAAa,KAAA;IAEb,IAAI,KAAA;IACJ,UAAU,KAAA;IACV,YAAY,KAAA;IACZ,MAAM,KAAA;IACN,MAAM,KAAA;IAEN,MAAM,KAAA;IACN,SAAS,KAAA;IACT,MAAM,KAAA,CAAE,0DAA0D;IAClE,QAAQ,KAAA,CAAE,0DAA0D;IAEpE,SAAS,KAAA;CACV;AAMD,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;CACR;AAgCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAcvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAqBnE"}
|
|
@@ -73,6 +73,8 @@ export var Opcode;
|
|
|
73
73
|
Opcode[Opcode["POSEIDON2"] = 56] = "POSEIDON2";
|
|
74
74
|
Opcode[Opcode["SHA256"] = 57] = "SHA256";
|
|
75
75
|
Opcode[Opcode["PEDERSEN"] = 58] = "PEDERSEN";
|
|
76
|
+
// Conversion
|
|
77
|
+
Opcode[Opcode["TORADIXLE"] = 59] = "TORADIXLE";
|
|
76
78
|
})(Opcode || (Opcode = {}));
|
|
77
79
|
// Possible types for an instruction's operand in its wire format. (Keep in sync with CPP code.
|
|
78
80
|
// See vm/avm_trace/avm_deserialization.cpp)
|
|
@@ -155,4 +157,4 @@ export function serialize(operands, cls) {
|
|
|
155
157
|
}
|
|
156
158
|
return Buffer.concat(chunks);
|
|
157
159
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25fc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vc2VyaWFsaXphdGlvbi9pbnN0cnVjdGlvbl9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxNQXNFWDtBQXRFRCxXQUFZLE1BQU07SUFDaEIsVUFBVTtJQUNWLGlDQUFHLENBQUE7SUFDSCxpQ0FBRyxDQUFBO0lBQ0gsaUNBQUcsQ0FBQTtJQUNILGlDQUFHLENBQUE7SUFDSCxtQ0FBSSxDQUFBO0lBQ0osK0JBQUUsQ0FBQTtJQUNGLCtCQUFFLENBQUE7SUFDRixpQ0FBRyxDQUFBO0lBQ0gsaUNBQUcsQ0FBQTtJQUNILCtCQUFFLENBQUE7SUFDRixrQ0FBRyxDQUFBO0lBQ0gsa0NBQUcsQ0FBQTtJQUNILGtDQUFHLENBQUE7SUFDSCxrQ0FBRyxDQUFBO0lBQ0gsb0NBQUksQ0FBQTtJQUNKLHdCQUF3QjtJQUN4QiwwQ0FBTyxDQUFBO0lBQ1Asd0RBQWMsQ0FBQTtJQUNkLHdDQUFNLENBQUE7SUFDTixrREFBVyxDQUFBO0lBQ1gsa0RBQVcsQ0FBQTtJQUNYLHdEQUFjLENBQUE7SUFDZCw4REFBaUIsQ0FBQTtJQUNqQiwwQ0FBTyxDQUFBO0lBQ1AsMENBQU8sQ0FBQTtJQUNQLGtEQUFXLENBQUE7SUFDWCw4Q0FBUyxDQUFBO0lBQ1QsNENBQVEsQ0FBQTtJQUNSLDBEQUFlLENBQUE7SUFDZiwwREFBZSxDQUFBO0lBQ2Ysb0RBQVksQ0FBQTtJQUNaLE1BQU07SUFDTiw4Q0FBUyxDQUFBO0lBQ1QsOENBQVMsQ0FBQTtJQUNULGVBQWU7SUFDZixvQ0FBSSxDQUFBO0lBQ0osc0NBQUssQ0FB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
|
|
@@ -49,6 +49,7 @@ export declare class ClientExecutionContext extends ViewDataOracle {
|
|
|
49
49
|
private unencryptedLogs;
|
|
50
50
|
private nestedExecutions;
|
|
51
51
|
private enqueuedPublicFunctionCalls;
|
|
52
|
+
private publicTeardownFunctionCall;
|
|
52
53
|
constructor(contractAddress: AztecAddress, argsHash: Fr, txContext: TxContext, callContext: CallContext,
|
|
53
54
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
54
55
|
historicalHeader: Header,
|
|
@@ -95,6 +96,10 @@ export declare class ClientExecutionContext extends ViewDataOracle {
|
|
|
95
96
|
* Return the enqueued public function calls during this execution.
|
|
96
97
|
*/
|
|
97
98
|
getEnqueuedPublicFunctionCalls(): PublicCallRequest[];
|
|
99
|
+
/**
|
|
100
|
+
* Return the public teardown function call set during this execution.
|
|
101
|
+
*/
|
|
102
|
+
getPublicTeardownFunctionCall(): PublicCallRequest;
|
|
98
103
|
/**
|
|
99
104
|
* Pack the given array of arguments.
|
|
100
105
|
* @param args - Arguments to pack
|
|
@@ -183,7 +188,17 @@ export declare class ClientExecutionContext extends ViewDataOracle {
|
|
|
183
188
|
*/
|
|
184
189
|
callPrivateFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<import("@aztec/circuits.js").PrivateCallStackItem>;
|
|
185
190
|
/**
|
|
186
|
-
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
191
|
+
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
192
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
193
|
+
* @param functionSelector - The function selector of the function to call.
|
|
194
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
195
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
196
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
197
|
+
* @returns The public call stack item with the request information.
|
|
198
|
+
*/
|
|
199
|
+
protected createPublicCallRequest(callType: 'enqueued' | 'teardown', targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PublicCallRequest>;
|
|
200
|
+
/**
|
|
201
|
+
* Creates and enqueues a PublicCallStackItem object representing the request to call a public function. No function
|
|
187
202
|
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
188
203
|
* of the execution are empty.
|
|
189
204
|
* @param targetContractAddress - The address of the contract to call.
|
|
@@ -194,6 +209,18 @@ export declare class ClientExecutionContext extends ViewDataOracle {
|
|
|
194
209
|
* @returns The public call stack item with the request information.
|
|
195
210
|
*/
|
|
196
211
|
enqueuePublicFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PublicCallRequest>;
|
|
212
|
+
/**
|
|
213
|
+
* Creates a PublicCallStackItem and sets it as the public teardown function. No function
|
|
214
|
+
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
215
|
+
* of the execution are empty.
|
|
216
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
217
|
+
* @param functionSelector - The function selector of the function to call.
|
|
218
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
219
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
220
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
221
|
+
* @returns The public call stack item with the request information.
|
|
222
|
+
*/
|
|
223
|
+
setPublicTeardownFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PublicCallRequest>;
|
|
197
224
|
/**
|
|
198
225
|
* Derives the call context for a nested execution.
|
|
199
226
|
* @param targetContractAddress - The address of the contract being called.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_execution_context.d.ts","sourceRoot":"","sources":["../../src/client/client_execution_context.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,uBAAuB,EACvB,cAAc,EAGd,KAAK,UAAU,EAEf,yBAAyB,EACzB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EAEX,gBAAgB,EAChB,KAAK,MAAM,EAEX,iBAAiB,EACjB,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,WAAW,EAA6C,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;;
|
|
1
|
+
{"version":3,"file":"client_execution_context.d.ts","sourceRoot":"","sources":["../../src/client/client_execution_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
55
55
|
this.unencryptedLogs = [];
|
|
56
56
|
this.nestedExecutions = [];
|
|
57
57
|
this.enqueuedPublicFunctionCalls = [];
|
|
58
|
+
this.publicTeardownFunctionCall = PublicCallRequest.empty();
|
|
58
59
|
}
|
|
59
60
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
60
61
|
// TODO When that is sorted out on noir side, we can use instead the utilities in serialize.ts
|
|
@@ -126,6 +127,12 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
126
127
|
getEnqueuedPublicFunctionCalls() {
|
|
127
128
|
return this.enqueuedPublicFunctionCalls;
|
|
128
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Return the public teardown function call set during this execution.
|
|
132
|
+
*/
|
|
133
|
+
getPublicTeardownFunctionCall() {
|
|
134
|
+
return this.publicTeardownFunctionCall;
|
|
135
|
+
}
|
|
129
136
|
/**
|
|
130
137
|
* Pack the given array of arguments.
|
|
131
138
|
* @param args - Arguments to pack
|
|
@@ -191,11 +198,11 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
191
198
|
.join(', ')}`);
|
|
192
199
|
notes.forEach(n => {
|
|
193
200
|
if (n.index !== undefined) {
|
|
194
|
-
const siloedNoteHash = siloNoteHash(n.contractAddress, n.innerNoteHash);
|
|
195
|
-
const uniqueSiloedNoteHash = computeUniqueNoteHash(n.nonce, siloedNoteHash);
|
|
196
201
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)
|
|
197
|
-
// Should always
|
|
198
|
-
const
|
|
202
|
+
// Should always call computeUniqueNoteHash when publicly created notes include nonces.
|
|
203
|
+
const uniqueNoteHash = n.nonce.isZero() ? n.innerNoteHash : computeUniqueNoteHash(n.nonce, n.innerNoteHash);
|
|
204
|
+
const siloedNoteHash = siloNoteHash(n.contractAddress, uniqueNoteHash);
|
|
205
|
+
const noteHashForReadRequest = siloedNoteHash;
|
|
199
206
|
this.noteHashLeafIndexMap.set(noteHashForReadRequest.toBigInt(), n.index);
|
|
200
207
|
}
|
|
201
208
|
});
|
|
@@ -308,9 +315,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
308
315
|
return childExecutionResult.callStackItem;
|
|
309
316
|
}
|
|
310
317
|
/**
|
|
311
|
-
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
312
|
-
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
313
|
-
* of the execution are empty.
|
|
318
|
+
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
314
319
|
* @param targetContractAddress - The address of the contract to call.
|
|
315
320
|
* @param functionSelector - The function selector of the function to call.
|
|
316
321
|
* @param argsHash - The packed arguments to pass to the function.
|
|
@@ -318,26 +323,56 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
318
323
|
* @param isStaticCall - Whether the call is a static call.
|
|
319
324
|
* @returns The public call stack item with the request information.
|
|
320
325
|
*/
|
|
321
|
-
async
|
|
326
|
+
async createPublicCallRequest(callType, targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
322
327
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
323
328
|
const targetArtifact = await this.db.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
324
329
|
const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, sideEffectCounter, isDelegateCall, isStaticCall);
|
|
325
330
|
const args = this.packedValuesCache.unpack(argsHash);
|
|
326
|
-
|
|
331
|
+
// TODO($846): if enqueued public calls are associated with global
|
|
332
|
+
// side-effect counter, that will leak info about how many other private
|
|
333
|
+
// side-effects occurred in the TX. Ultimately the private kernel should
|
|
334
|
+
// just output everything in the proper order without any counters.
|
|
335
|
+
this.log.verbose(`Created PublicCallRequest of type [${callType}], side-effect counter [${sideEffectCounter}] to ${targetContractAddress}:${functionSelector}(${targetArtifact.name})`);
|
|
336
|
+
return PublicCallRequest.from({
|
|
327
337
|
args,
|
|
328
338
|
callContext: derivedCallContext,
|
|
329
339
|
parentCallContext: this.callContext,
|
|
330
340
|
functionData: FunctionData.fromAbi(targetArtifact),
|
|
331
341
|
contractAddress: targetContractAddress,
|
|
332
342
|
});
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Creates and enqueues a PublicCallStackItem object representing the request to call a public function. No function
|
|
346
|
+
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
347
|
+
* of the execution are empty.
|
|
348
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
349
|
+
* @param functionSelector - The function selector of the function to call.
|
|
350
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
351
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
352
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
353
|
+
* @returns The public call stack item with the request information.
|
|
354
|
+
*/
|
|
355
|
+
async enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
356
|
+
const enqueuedRequest = await this.createPublicCallRequest('enqueued', targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall);
|
|
338
357
|
this.enqueuedPublicFunctionCalls.push(enqueuedRequest);
|
|
339
358
|
return enqueuedRequest;
|
|
340
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Creates a PublicCallStackItem and sets it as the public teardown function. No function
|
|
362
|
+
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
363
|
+
* of the execution are empty.
|
|
364
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
365
|
+
* @param functionSelector - The function selector of the function to call.
|
|
366
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
367
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
368
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
369
|
+
* @returns The public call stack item with the request information.
|
|
370
|
+
*/
|
|
371
|
+
async setPublicTeardownFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
372
|
+
const publicTeardownFunctionCall = await this.createPublicCallRequest('teardown', targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall);
|
|
373
|
+
this.publicTeardownFunctionCall = publicTeardownFunctionCall;
|
|
374
|
+
return publicTeardownFunctionCall;
|
|
375
|
+
}
|
|
341
376
|
/**
|
|
342
377
|
* Derives the call context for a nested execution.
|
|
343
378
|
* @param targetContractAddress - The address of the contract being called.
|
|
@@ -387,4 +422,4 @@ _ClientExecutionContext_instances = new WeakSet(), _ClientExecutionContext_check
|
|
|
387
422
|
throw new Error(`Static call cannot create new notes, emit L2->L1 messages or generate logs`);
|
|
388
423
|
}
|
|
389
424
|
};
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsSUFBSSxFQUVKLFVBQVUsRUFDVix5QkFBeUIsR0FFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUEyQyxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sRUFBRSxVQUFVLEVBQTBDLE1BQU0sdUJBQXVCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBeUJ4RCxZQUNFLGVBQTZCLEVBQ1osUUFBWSxFQUNaLFNBQW9CLEVBQ3BCLFdBQXdCO0lB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
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsSUFBSSxFQUVKLFVBQVUsRUFDVix5QkFBeUIsR0FFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUEyQyxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sRUFBRSxVQUFVLEVBQTBDLE1BQU0sdUJBQXVCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBMEJ4RCxZQUNFLGVBQTZCLEVBQ1osUUFBWSxFQUNaLFNBQW9CLEVBQ3BCLFdBQXdCO0lB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
|