@aztec/protocol-contracts 0.34.0 → 0.35.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.
@@ -1 +1 @@
1
- { "noir_version": "0.26.0+425566d21af1be0580432962b7065cb172e5eb16", "name": "GasToken", "functions": [{ "name": "balance_of_public", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "owner", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }], "param_witnesses": { "owner": [{ "start": 0, "end": 1 }] }, "return_type": { "abi_type": { "kind": "field" }, "visibility": "public" }, "return_witnesses": [1] }, "bytecode": "H4sIAAAAAAAA/81XUWvbMBCWbCe246bNHsc20C8octjDBoN5r3vc2HNwF2cEkhhsh3X78aF2cke/qGpKiUx74Jx0ku+++6ScZCkOIunpxIc2Ctsy0vo8SR360tLA+YvaEdgzV/E+6umwcxIc88KStI/HHZoTts8QxiXZed4bsEnAPnCNXetpF983MJs5ZNAeAJ7APZ60pzx1BJzvHOKVtJ7IlW9wdQlzhsBf2AN/EuKyb+5zvOdi9l4BZtwXSrjdF5H7nKZXrY8YeI0MfjGvEbUd7kstKD7H5HgjiHtBbSnc1t6EfAXkm3FcgJ3nfCA9EYc9Jyz8xO7XJz1V4zge4pGvAE8i7OdLbHCGZw6OfYfxMbU9sHG+vsX3GGy8dpeWd5GnMeSSUVufJ3ueMFYG/TFoaWB8aTyhBU9ftZTXh31zP+yXi30tveoppwn5GpBfxs/xApjzmfSE1oTtjCs+sT4817PwthPH///n1OvFE4KxQ4gdW/LLAKsNZ0Z2rBuMF/t4D+C5EcQ54zxKTQPi8wEDrg3bPPFwPfB9YcktsfCAdRD5jMR9jXN5F8Q7ZubQb4c9EMdy6rzAO2YPd+l0BHzWTVnlf4ofRT6XAC0wYKJG6Dvoe2DHtm+x7UAnkDLH7Wy8DQZg8wyK8PMH/woPPnkz0vo82dcyDnjqu/qxee9JfyH988C/qldlo7TatL/5alX+LebXCsdqtd7WjaqbvGrUoirXKr1Gv59IvyX9raryf2q5mRe3qtw2qlyom3K7mdf40lfS70j/bkOrplR5XRdVM1vnt7ObZTOrl/8LcQfJYpPTXRAAAA==", "debug_symbols": "5drfiuIwFAbwd+m1LDnJ+ZP4KstedGddEMQZRndhEd9907GJHSqWkRn5incNnvT8UuSzjT00m+endr9+3u6a5aFx37RZfj80u5d22413+/Z13yy9t7BoVttf3WFKx0Xze71Z5YHJcTGqTlSKk2qtVXehlFN0fa045lpMucmPReYYFidicRIWhxyYh8A8HswTwDwM5hEwD1g4E1g6E1g8E1g+e7B89mD57MHy2X9CPpNj6qvJpXhdVDhu4qRq2ldqCudThp7N82TLPNk6T7bNkx3nyZ78JQpOp9hEUtjEOuwxLg7m+1qmM4dykzdPcGAeAvN4ME8A8zCYR8A8CuYxME8E84DlM4PlM4PlM4PlM4PlM4PlM4PlM4PlM4PlM4PlM4Pls3xtPp960B16fEqOitYeFq9fV1IrT1T5MA32XMqVDXAihhMJnEjhRAYninCidHeR1J0Xje6d6EIG5+59dQjB1+puq3ZUbBL7WkvnrVzvTitV9zArpYdZqX+YlYaHWSmDr7RW58M0XOmJL/PmKzg/xsoffHkq39D5Vvjswpgf582fvpkgm+KbLz3Ihv/Iir8kEir3N0G8jETm7i9y10WX403rhXU8ftY0uWWS3jLJbpkUb5mUPjgpj/62r+v252bVvSjZffhn+1Tem8zD/b+X0yfH/w==" }, { "name": "claim_public", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "amount", "type": { "kind": "field" }, "visibility": "private" }, { "name": "secret", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "amount": [{ "start": 35, "end": 36 }], "inputs": [{ "start": 0, "end": 34 }], "secret": [{ "start": 36, "end": 37 }], "to": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }] }, "visibility": "public" }, "return_witnesses": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234] }, "bytecode": "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", "debug_symbols": "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1ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye41ye416e416e416e416e41/f4F278kcAfGfgjE38k8Ufw08e9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsW9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9PsO9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9Pse9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9vsC9voF7fQP3+gbu9Q3c6xu41zdwr2/gXt/Avb6Be30D9/oG7vUN3OsbuNc3cK9v4F7fwL2+gXt9A/f6Bu71DdzrG7jXN3Cvb+Be38C9voF7fQP3+gbu9Q3c6xu41zdwr2/gXt/Avb6Be30D9/oG7vUN3OsbuNc3cK9v4F7fwL2+gXt9A/f6Bu71DdzrG7jXN3Cvb+Be38C9voF7fQP3+gbu9Q3c6xu41zdwr2/gXt/Avb6Be30D9/oG7vUN3OsbuNc3cK9v4F7fwL2+gXt9A/f6Bu71DdzrG7jXN3Cvb+Be38C9voF7fQP3+gbu9Q3c6xu41zdwr2/gXt/Avb6Be30D9/oG7vUN3OsbuNc3cK9v4F7fwL2+gXt9A/f6Bu71DdzrG7jXN3Cvb+Be38C9voF7fQP3+gbu9Q3c65u41zdxr2/iXt/Evb6Je30T9/om7vVN3OubuNc3ca9v4l7fxL2+iXt9E/f6Ju71Tdzrm7jXN3Gvb+Je38S9vol7fRP3+ibu9U3c65u41zdxr2/iXt/Evb6Je30T9/om7vVN3OubuNc3ca9v4l7fxL2+iXt9E/f6Ju71Tdzrm7jXN3Gvb+Je38S9vol7fRP3+ibu9U3c65u41zdxr2/iXt/Evb6Je30T9/om7vVN3OubuNc3ca9v4l7fxL2+iXt9E/f6Ju71Tdzrm7jXN3Gvb+Je38S9vol7fRP3+ibu9U3c65u41zdxr2/iXt/Evb6Je30T9/om7vVN3OubuNc3ca9v4l7fxL2+iXt9E/f6Ju71Tdzrm7jXN3Gvb+Je38S9vol7fRP3+ibu9U3c65u41zdxr2/iXt/Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb7Evb6Fe30L9/oW7vUt3OtbuNe3cK9v4V7fwr2+hXt9C/f6Fu71LdzrW7jXt3Cvb+Fe38K9voV7fQv3+hbu9S3c61u417dwr2/hXt/Cvb6Fe30L9/oW7vUt3OtbuNe3cK9v4V7fwr2+hXt9C/f6Fu71LdzrW7jXt3Cvb+Fe38K9voV7fQv3+hbu9S3c61u417dwr2/hXt/Cvb6Fe30L9/oW7vUt3OtbuNe3cK9v4V7fwr2+hXt9C/f6Fu71LdzrW7jXt3Cvb+Fe38K9voV7fQv3+hbu9S3c61u417dwr2/hXt/Cvb6Fe30L9/oW7vUt3OtbuNe3cK9v4V7fwr2+hXt9C/f6Fu71LdzrW7jXt3Cvb+Fe38K9voV7fQv3+hbu9S3c61u417dwr2/hXt/Cvb6Fe30L9/oW7vUt2OuzA/b6Ho8I/ojijxj+iOOPBP7IwB+Z+COJP4KfvuCnL/jpC376gp++4Kcv+OkLfvqCn77gpy/46St++oqfvuKnr/jpK376ip++4qev+OkrfvqKn77h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t/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N64rvadt/TQ3riu9p239NDeuK72nbf00N63rkrjeUvSeN6SNJ63JI3nLcnRt65K43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSetySN5y1J43lL0njekjSet6SN5y1p43lL2njekjaet6RH37qqjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI2nrekjectaeN5S9p43pI1nrdkjectWeN5S9Z43pIdfeuqNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUvWeN6SNZ63ZI3nLVnjeUveeN6SN5635I3nLXnjeUt+9K2r3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1543lL3njekjeet+SN5y1F43lL0XjeUjSetxSN5y3F0beuRuN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrcUjectReN5S9F43lI0nrc0Gs9bGo3nLY3G85ZG43lL4+hbV0fjeUuj8byl0Xje0mg8b2k0nrc0Gs9bGo3nLY3G85ZG43lLo/G8pdF43tJoPG9pNJ63NBrPWxqN5y2NxvOWRuN5S6PxvKXReN7SaDxvaTSetzQaz1sajectjcbzlkbjeUuj8byl0Xje0mg8b2k0nrc0Gs9bGo3nLY3G85YG87yljOdHJf+g/UyEvDSI/VR8nHxWbI3nh93+8OHnphAX7O/bFOKbwLdtCvPoqe/bFOK7y/dtCvGl6Ps2hfi29X2b4vem/L4pxPfD79sU4ovn923KfaM92ZT7RnuyKfeN9vdNYR769n2bct9oTzblvtGebMp9oz3ZFL835fdNuW+0J5ty32hPNuW+0Z5syn2jPdmU+0b7+6Ywj1v8vk25b7Qnm3LfaE825b7RnmyK35vy+6bcN9qTTblvtCebct9oTzblvtGebMp9o/19U5gHnX7fptw32pNNuW+0J5ty32hPNsXvTfl9U+4b7cmm3Dfak025b7Qnm3LfaE825b7R/r4pzCOGv29T7hvtyabcN9qTTel4o31q98baee+H6S/tY9X+YeS9H37jpvDeD79xU3jvh9+4Kbz3w+/bFOJR2d+4Kbz3w2/cFN774TduCu/98Bs3xe9N+X1T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" }, { "name": "mint_public", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "amount", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "amount": [{ "start": 35, "end": 36 }], "inputs": [{ "start": 0, "end": 34 }], "to": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }] }, "visibility": "public" }, "return_witnesses": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233] }, "bytecode": "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", "debug_symbols": "5d3djmTJdd3xd+lrwjixv4OvYvhiLNMAAWIoiGMDBjHv7pLUmV2EctgT03X+XA1eiRIzT0TN6b1mavO3xL9++tOf/+WHn/745x//8un3f/10/Tdb9un3//2vn/7yrz/8+O//l7/89MO//fTp99fvPv3hx//19j9//t2n//3HP/3h0++t8+f/8bv/+IYffyOOv5HH36jjb/TxN+b4G/v0G3b9+m/87r98bvrxyZl8fnZFP56+bn263fp0v/XpcevT89an161P71ufPrc+fd/5dL91Vv3WWfVbZ9VvnVX/pj/vbz+6f/7o27+ML89f6/H8vvf5cX3b8/PL89//9fny/HXz8+3m5/vNz4+bn583P79ufn7f/Py5+fn73ufnzfOb3za/8fjkWxA8P+uPZ9uNz/Ybn/1tM2tXPR5u/iqTM29+ft38/L75+XPz8/e9z6/r5uevm59vNz/fb37+zfNbN89v3Ty/dfP81s3zWzfPb988v33z/PbN89s3z2/fPL998/z2zfPbN89v3zy/ffP8zs3zOzfP79w8v3Pz/M7N8zs3z+/cPL9z8/zOzfM7N8/vvnl+97fN7+XPXx6vtL95/otPZ+Tj01nXq9uY1G0SvE2t/fh02cvblNRtWuo2I3WbLXQbvy6p2yyp25jUbVzqNiF1G6Us9kspi/1SymK/lLLYL6ksXlJZvKSyeEll8ZLK4iWVxUsqi5dUFi+pLF5SWbykstikstikstikstikstikstikstikstikstikstikstilstilstilstilstilstilstilstilstilstilsjiksjiksjiksjiksjiksjiksjiksjiksjiksjiksjilsjilsjilsjilsjilsjilsjilsjilsjilsjilsriksriksriksriksriksriksriksriksriksriksrilsrilsrilsrilsrilsrilsrilsrilsrilsrilsniksniksniksniksniksniksniksniksniksniksnhLZfGWyuItlcVbKou3VBZL9e5cqnfnUr07l+rduVTvLqR6dyHVuwup3l1I9e7iUsrikOrdhVTvLqR6dyHVuwup3l1I9e5CqncXUr27kOrdhVTvLqR6dyHVuwup3l1I9e5CqncXUr27kOrdhVTvLqR6dyHVuwup3l1I9e5CqncXUr27kOrdhVTvLqR6dyHV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UrfZSrchWye/4jZL6jYmdRuXug2ZxV+zxZtsnfyK2yh5/V1KXn+XktffpeT1dyt5/d1L6jYmdRuXuo1UFrdUFkt1p7ZUd2pLdae2VHdqS3Wn9khl8Uhl8Uhl8Uhl8Uhl8Uhl8Uhl8Uhl8Uhl8ZbK4i2VxVsqi7dUFm+pLN5SWbylsnhLZfFWSr91XUrx93Ydpfx7u45SAL5dRykB365z8Ef581dOWhmPr6zzr9j5V/z8K3H+lTz/Sp1/pc+/MudfOX/7dv727fzt2/nbt/O3b+dv387fvp2/fTt/+3b+9u387fv52/fzt+/nb9/P376fv30/f/t+/vb9/O37+dv387cf528/zt9+nL/9OH/7cf724/ztx/nbj/O3H+dvP87ffp6//Tx/+3n+9vP87ef528/zt5/nbz/P336ev/08f/t1/vbr/O3X+duv87df52+/zt9+nb/9On/7df726/zt9/nb7/O33+dvv8/ffp+//T5/+33+9vv87ff52+/ztz/nb3/O3/6cv/05f/tz/vbn/O3P+duf87c/529/zt/+Pn/7+/zt7/O3v8/f/j5/+/v87e/zt7/P3/4+f/v7+O2v6zr/yjr/ip1/xc+/EudfyfOv1PlX+vwrc/6V87d/vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnu751vutb57u+db7rW+e7vnW+61vnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7rs/Ndn53v+ux812fnuz473/XZ+a7Pznd9dr7r8/Ndn5/v+vx81+fnuz4/3/X5+a7Pz3d9fr7r8/Ndn5/v+vzb/pvVqufzJ2u/axVf+1VjuZ//9RHXl+f6l5ssmZuYzE1c5iYhc5OUuUnJ3KRlbjIyN9kqNzGZjDWZjDWZjDWZjDWZjDWZjDWZjDWZjDWZjDWZjHWZjHWZjHWZjHWZjHWZjHWZjHWZjHWZjHWZjHWZjA2ZjA2ZjA2ZjA2ZjA2ZjA2ZjA2ZjA2ZjA2ZjA2ZjE2ZjE2ZjE2ZjE2ZjE2ZjE2ZjE2ZjE2ZjE2ZjE2ZjC2ZjC2ZjC2ZjC2ZjC2ZjC2ZjC2ZjC2ZjC2ZjC2ZjG2ZjG2ZjG2ZjG2ZjG2ZjG2ZjG2ZjG2ZjG2ZjG2ZjB2ZjB2ZjB2ZjB2ZjB2ZjB2ZjB2ZjB2ZjB2ZjB2ZjN0yGbtlMnbLZOyWydgtk7FbJmO3TMZumYzdMhm7VTI2LpWMjUslY+NSydi4VDI2LpWMjUslY+NSydi4VDI2LpWMjUsmY2V6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT8wqZnlfI9LxCpucVMj2vkOl5hUzPK2R6XiHT80qZnlfK9LxSpueVMj2vvFQyNmV6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5pUzPK2V6XinT80qZnlfK9LxSpueVMj2vlOl5lUzPq2R6XiXT8yqZnlddKhlbMj2vkul5lUzPq2R6XiXT8yqZnlfJ9LxKpudVMj2vkul5lUzPq2R6XiXT8yqZnld9Y89r78+f7OXfeJNv7Hl95E2WzE1M5iYuc5OQuUnK3KRkbvIyY9eyxxFrZX7lPu5XPQ5x/5JwES8+3PkIw97x5cHX80KjdqEtdqHX5a9/5IWW2oXsIy6U63mh3O8v9DjFkVPiI06ZeZ7y7q/Yu1PyQ055Zk1c/uqUQk75hUgbf5xiV33llL0eH9715bN1vfho7HkEd17x5S/u2vt5o5G70Va7UVxyN1pyNzK5G7ncjULuRil3o5K7kVxmh1xmh1xmp1xmp1xmp1xm5wdk9rri8c+tb793zt+/06/fk9VzT/blH+zKnxeP7/Xi+b1evL7Xi3/97yfvVie/cPG330aev5dEvT/lxa8lbZ8/G3+zk6nnjUbuRlvtRnXJ3WjJ3cjkbuRyNwq5G6XcjUruRnKZXXKZXXKZ3XKZ3XKZ3XKZ3XKZ3XKZ3XKZ3XKZ3XKZ3XKZ3XKZPXKZPXKZPXKZPXKZPXKZPXKZPXKZPXKZPXKZPXKZveUye8tl9pbL7C2X2Vsus7dcZm+5zN5ymb3lMnurZXZfapndl1pm96WW2X2pZXZfapndl1pm96WW2X2pZXZfapndl1xmL7nMXnKZveQye8ll9pLL7CWX2Usus5dcZi+5zF5ymW1ymW1ymW1ymW1ymW1ymW1ymW1ymW1ymW1ymW1yme1yme1yme1yme1yme1yme1yme1yme1yme1yme1ymR1ymR1ymR1ymR1ymR1ymR1ymR1ymR1ymR1ymR1ymZ1ymZ1ymZ1ymZ1ymZ1ymZ1ymZ1ymS3Xg2y5HmTL9SBbrgfZcj3IlutBtlwPsuV6kC3Xg2y5HmTL9SBbrgfZcj3IlutBtlwPsuV6kC3Xg2y5HmTL9SBbrgfZcj3IlutBtlwPsuV6kC3Xg2y5HmTL9SBbrgfZcj3IlutBtlwPsuV6kC3Xg2y5HmTL9SBbrgfZcj3IlutBtlwPsuV6kC3Xg2y5HmTL9SBHrgc5cj3IketBjlwPci61zB65HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kCPXgxy5HuTI9SBHrgc5cj3IketBjlwPcuR6kFuuB7nlepBbrge55XqQ+1LL7C3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9xyPcgt14Pccj3ILdeD3HI9yC3Xg9w39yAfpzRyyodka9bzlJ6//1d3VV+PD1fvL39995e/vlvtTnZ9TGfxg++0BO9kgndywTuF4J0Sv1Ou553m+ps7vchlvx6Pdnd7fjrixYc75/Nne8eXO1/Pn7X+iX7W/if6Weef6Gfd/zw/67rEf9bnp9/+5X7/sz5+gPW9/wAm/gPMPH+Ad3+E3v0Arv4D9OMHiMtf/QDxvf8AX/8HDMuv/ABx1eNOcXW+OqU+4pQdz18Cr5d/mho5ZT7glOX1PCVenrI/5JR8npKv3v6vqKP+ilP6y8+yr1enrI8+ZV6dYh9wiq3HvITZy1McOSU+4pR8/km2evVnzBI5pZBTXs++Peds2bu/hb4+Za/HlXa9W8xcry709p/Iff5sXu8G+G1T8rzRyN1oq93oF6qV/8gbLbkbmdyNXO5GIXejlLtRyd1ILrNdLrNdLrNDLrNDLrNDLrNDLrPjAzL77Te052/D17vfCl7e6XGh6ysPredvGrX9/W/jj4vn93rx+l4v3t/rxed7vfj+Ti+eX/+707sV2y9cPPbzd9Nc9vPfX8i9Rd2XD+fPX1nI5Xr8pJ72alWWS/wHuL72A9gH/ABp9rxT2av37MgpgZySyCmFnNLIKYOcsolT6kJOWcgpyOwXMvuFzH4hs1/I7Bcy+4XMfiGz38jsNzL7jcx+I7PfyOw3MvuNzH4js9/I7Dcy+4PM/iCzP8jsDzL7g8z+ILM/yOwPMvuDzP4gs7+R2d/I7G9k9jcy+xuZ/Y3M/kZmfyOzv5HZ38Tsr+tCTlnIKYac4sgpgZySyCmFnNLIKYOcgsz+QmZ/IbO/kNlfyOwvZPYXMvsLmf2FzP5CZn8hs2/I7Bsy+4bMviGzb8jsGzL7hsy+IbNvyOwbMvuOzL4js+/I7Dsy+47MviOz78jsOzL7jsy+I7MfyOwHMvuBzH4gsx/I7Acy+4HMfiCzH8jsBzL7icx+IrOPuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuL6FuD5DXJ8hrs8Q12eI67MrkFMSOaWQUxo5ZZBTkNlHXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PEdfniOtzxPU54vr8CuSURE4p5JRGThnkFGT2EdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrC8T1BeL6AnF9gbi+uAI5JZFTCjmlkVMGOQWZfcT1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+hJxfYm4vkRcXyKuL69ATknklEJOaeSUQU5BZh9xfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5CXF8hrq8Q11eI66srkFMSOaWQUxo5ZZBTkNlHXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vEdfXiOtrxPU14vr6CuSURE4p5JRGThnkFGT2EdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jrG8T1DeL6BnF9g7i+uQI5JZFTCjmlkVMGOQWZfcT1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+jbi+jbi+jbi+jbi+vYVyCmJnFLIKY2cMsgpyOwjrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8jrm8Trs8vwvW9nbKQUww5xZFTAjklkVMKOaWRUwY5BZn9hcz+QmZ/IbO/kNlfyOwvZPYXMvsLmf2FzP5CZt+Q2Tdk9g2ZfUNm35DZN2T2DZl9Q2bfkNk3ZPYdmX1HZt+R2Xdk9h2ZfUdm35HZd2T2HZl9R2Y/kNkPZPYDmf1AZj+Q2Q9k9gOZ/UBmP5DZD2T2E5n9RGY/kdlPZPYTmf1EZj+R2U9k9hOZ/URmv5DZL2T2C5n9Qma/kNkvZPYLmf1CZr+Q2S9k9huZ/UZmv5HZb2T2G5n9Rma/kdlvZPYbmf1GZn+Q2R9k9geZ/UFmf5DZH2T2B5n9QWZ/kNkfZPY3Mvsbmf2NzP5GZn8js7+R2d/I7G9k9jcy+4jrW4jrW4jrW4jrW4jrW1cgpyRySiGnNHLKIKcgs4+4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4voW4PkNcnyGuzxDXZ4jrsyuQUxI5pZBTGjllkFOQ2UdcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8Q12eI6zPE9Rni+gxxfYa4PkNcnyGuzxDXZ4jrM8T1GeL6DHF9hrg+Q1yfIa7PENdniOszxPUZ4voMcX2GuD5DXJ8hrs8R1+eI63PE9Tni+vwK5JRETinklEZOGeQUZPYR1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOtzxPU54voccX2OuD5HXJ8jrs8R1+eI63PE9Tni+hxxfY64PkdcnyOuzxHX54jrc8T1OeL6HHF9jrg+R1yfI67PEdfniOsLxPUF4voCcX2BuL64AjklkVMKOaWRUwY5BZl9xPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6AnF9gbi+QFxfIK4vENcXiOsLxPUF4voCcX2BuL5AXF8gri8Q1xeI6wvE9QXi+gJxfYG4vkBcXyCuLxDXF4jrC8T1BeL6EnF9ibi+RFxfIq4vr0BOSeSUQk5p5JRBTkFmH3F9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkRcXyKuLxHXl4jrS8T1JeL6EnF9ibi+RFxfIq4vEdeXiOtLxPUl4voScX2JuL5EXF8iri8R15eI60vE9SXi+hJxfYm4vkJcXyGurxDXV4jrqyuQUxI5pZBTGjllkFOQ2UdcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8Q11eI6yvE9RXi+gpxfYW4vkJcXyGurxDXV4jrK8T1FeL6CnF9hbi+QlxfIa6vENdXiOsrxPUV4voKcX2FuL5CXF8hrq8R19eI62vE9TXi+voK5JRETinklEZOGeQUZPYR19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOtrxPU14voacX2NuL5GXF8jrq8R19eI62vE9TXi+hpxfY24vkZcXyOurxHX14jra8T1NeL6GnF9jbi+RlxfI66vEdfXiOsbxPUN4voGcX2DuL65AjklkVMKOaWRUwY5BZl9xPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4jrG8T1DeL6BnF9g7i+QVzfIK5vENc3iOsbxPUN4voGcX2DuL5BXN8grm8Q1zeI6xvE9Q3i+gZxfYO4vkFc3yCubxDXN4Tri1/4/3J2ff7S9ZXnm5t//ujbv4znp9dazwPq7gP67gPm7gP2zQe8Rk8fecC6+wC7+wC/+4C4+4BvnOTO5wHz+oC6+4C++4C5+4B98wF23X3AuvsAu/sAv/uAuPuAuyfZ7p5ku3uS7e5Jtrsn2b9xkvPL3w8mXx6w7j7A7j7A7z4g7j4g7z6g7j6g7z5g7j5g33xA3D3Jcfckx92THHdPctw9yXH3JMfdkxx3T3LcPclx9yTn3ZOcd09y3j3Jefck592TnHdPct49yXn3JOfdk5x3T3LdPcl19yTX3ZNcd09y3T3Jdfck192TXHdPct09yXX3JL/GL1b9+Xt+vfv1+qrn1/y3fS1+29fyt32tftvX+jd97fV/yF/2+M+Tqubl1+K3fS1/29fqt32tD7/29r/93x/+7Y8//M8//eEvb9/493/z//z4Lz/98c8/fv5ff/p///qf/87P/x8=" }, { "name": "pay_fee", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "fee_limit", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "fee_limit": [{ "start": 34, "end": 35 }], "inputs": [{ "start": 0, "end": 34 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }] }, "visibility": "public" }, "return_witnesses": [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232] }, "bytecode": "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", "debug_symbols": "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" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 20, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [{ "start": 4, "end": 24 }], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [24, 25, 26, 27] }, "bytecode": "H4sIAAAAAAAA/+2YzW7CMAyA0xL6B+3+2PiZtPW4YytxmHbqQ+wFEKs0LjDRbo8/rYZYNWHsMvdgCUtR0jQ4n+2SOHHUXu6b4ph2ryl9dSz4vjB19j/JGXVlXXI6QjhdIZw9Rk5gG6luv1PdgV+5GfsCGD0BjL4AxkAAYyiAMRLAOBDAOBTAGAtgTAQwXghgvBTAeCWA8VoA440AxpEAxlsBjHcCGMeMjA5h1KY9acq0KTO1P7O/mP5AtVJwMczzJeTsOPlEHQrkJi4+6Lavh9ykD/ld0od3DD3d2uCx25DNQa/PrdfkZuh3j/jEs2ICc89In2a3MX8OiD/Z9Gad+W73baN/8Ozqk2f0VWjajHcwOZ3bMSUkcyoTI2xPyVgch/5wSYxBIM/E+Id//E5bv0vIGO8X+wvFa79v8fgWc98wgUCuMtGtX2w2zvsx0Bvx6z2IubZiEpF+HPNo6kvTN+SPw5yuH4rYTKUg7SHx/YCfJ+/Izl1MY6PrW/GuIYnlq8DyVULGxMR/SQf+c8i8qJtygJyZz8ynmAfq8D+OffQ91q5lC827cHyojtcTVoNwQpoYOgYO3sGCChsJbGi+ajeNiBgbG2C4WIDFFjYbOHjCwQ4OTnAwgcR/TOY4lQzThBnlwdRPpn59X1XpcrOut4tlnb5tyipdb+r0syrTj+3qa1GX8FxW6ge2C+5aGhsAAA==", "debug_symbols": "nZBLCoAgFEX38sYSUvRzK9HgZQaCqKgFIe49JVpAzu6HMzkRlOEYpNEeWATatAOwJYK3qMvgA7oArJ16AkLvOc00ETikEjmPfVpJgcYaaKqB5gqooz+h3C50EjclipZynpp/lnINt32f9AA=" }, { "name": "check_balance", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "fee_limit", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "fee_limit": [{ "start": 34, "end": 35 }], "inputs": [{ "start": 0, "end": 34 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }] }, "visibility": "public" }, "return_witnesses": [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232] }, "bytecode": "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", "debug_symbols": "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I+X2xSPl9sUj5fbFI+X2xSPl9sUj5fbFI+X2xSPl9sUj5fbFI+X2xSPl9r3iaLWylNsXj5Tb94qj1cpSbl88Um7fK45WK0u5fa84Wq0s5fa94mi1spTb94qj1cpSbt8rjlYrS7l98Ui5ffFIuX3xSLl9rzharSzl9sUj5fa94mi1spTb94qj1cpSbt8rjlYrS7l9rzharSzl9r3iaLWylNv3iqPVylJu3yuOVCublttnWm6fabl9puX22SPVyqbl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pun2m5fabl9pmW22dabp9puX2m5faZlttnWm6fabl9puX2mZbbZ1pu39Fy+46W23e03L6j5fadR6qVj5bbd7TcvqPl9h0tt+9ouX0H1cXGz9vTc+PDOKEVB/yt7M/Mp6fd7HwYp7XijFQcUoj6IXFMKw74A4a/fpx5i3PufM/TMf322feJb83hzHt4/yWHj19y+KsR/i1OacVprTgjFYd0oX5IHNOKI1LIb3HQiu16i+OPfxgntOJcrTipFae04rRWnJGKE49WHNOKc7TiaLVyaLVyaLVyaLVyaLVyaLVyaLXy1Wrlq9XKV6uVr1YrX61WvlqtfLVa+Wq18tVq5avVyqnVyqnVyqnVyqnVyqnVyqnVyqnVyqnVyqnVyqnVyqXVyqXVyqjtMxNvcZ7zfBjnasVJrTilFae14oxUHNT2+QFxTCvO0YrjP1ecD0miDq04VytOasVBsa94R3ee+hDd6ZaKM6YV52jFca04oRXnasUh/1+o2X2LY24fximtOK0VZ5Ti+COFm/ojhZv6c7TiuFac0IpzteKkVhwpCcAfKQnAHykJwE2rlU2rlU2rlU2rlU2rlU2rlU2rlbXULNdSs1xLzXItNcu11Cw/Wq18tFr5aLXy0Wrlo9XKR6uVj1YrH61Wdq1Wdq1Wdq1Wdq1Wdq0adK0adK0adK0adK0a/Fj5OfkO2jzf+puET76/5j/utfhxr90f91r+uNdq+drrP/3f3/zH737zP3//2z+93vjb//h//vBvf/7dH//w6T/++f/9+3/9L3/9/w==" }], "outputs": { "structs": { "functions": [{ "kind": "struct", "path": "GasToken::pay_fee_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::pay_fee_parameters", "fields": [{ "name": "fee_limit", "type": { "kind": "field" } }] } }, { "name": "return_type", "type": { "kind": "field" } }] }, { "kind": "struct", "path": "GasToken::check_balance_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::check_balance_parameters", "fields": [{ "name": "fee_limit", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "GasToken::mint_public_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::mint_public_parameters", "fields": [{ "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "amount", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "GasToken::claim_public_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::claim_public_parameters", "fields": [{ "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "amount", "type": { "kind": "field" } }, { "name": "secret", "type": { "kind": "field" } }] } }] }] }, "globals": { "storage": [{ "kind": "struct", "fields": [{ "name": "balances", "value": { "kind": "struct", "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "1" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, PublicMutable<U128>>" } }] } }] }] } }, "file_map": { "2": { "source": "// docs:start:eq-trait\ntrait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\nimpl Eq for Field { fn eq(self, other: Field) -> bool { self == other } }\n\nimpl Eq for u64 { fn eq(self, other: u64) -> bool { self == other } }\nimpl Eq for u32 { fn eq(self, other: u32) -> bool { self == other } }\nimpl Eq for u8 { fn eq(self, other: u8) -> bool { self == other } }\nimpl Eq for u1 { fn eq(self, other: u1) -> bool { self == other } }\n\nimpl Eq for i8 { fn eq(self, other: i8) -> bool { self == other } }\nimpl Eq for i32 { fn eq(self, other: i32) -> bool { self == other } }\nimpl Eq for i64 { fn eq(self, other: i64) -> bool { self == other } }\n\nimpl Eq for () { fn eq(_self: Self, _other: ()) -> bool { true } }\nimpl Eq for bool { fn eq(self, other: bool) -> bool { self == other } }\n\nimpl<T, N> Eq for [T; N] where T: Eq {\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T] where T: Eq {\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<N> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B) where A: Eq, B: Eq {\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C) where A: Eq, B: Eq, C: Eq {\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D) where A: Eq, B: Eq, C: Eq, D: Eq {\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E) where A: Eq, B: Eq, C: Eq, D: Eq, E: Eq {\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3) & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\nstruct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n// docs:start:ord-trait\ntrait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else {\n if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n\nimpl<T, N> Ord for [T; N] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B) where A: Ord, B: Ord {\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C) where A: Ord, B: Ord, C: Ord {\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D) where A: Ord, B: Ord, C: Ord, D: Ord {\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E) where A: Ord, B: Ord, C: Ord, D: Ord, E: Ord {\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n", "path": "std/cmp.nr" }, "3": { "source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index as u64 < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen as u64, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n", "path": "std/collections/bounded_vec.nr" }, "20": { "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n", "path": "std/field.nr" }, "30": { "source": "mod poseidon;\nmod mimc;\nmod poseidon2;\nmod pedersen;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(sha256)]\n// docs:start:sha256_slice\npub fn sha256_slice(input: [u8]) -> [u8; 32]\n// docs:end:sha256_slice\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s_slice\npub fn blake2s_slice(input: [u8]) -> [u8; 32]\n// docs:end:blake2s_slice\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3_slice\npub fn blake3_slice(input: [u8]) -> [u8; 32]\n// docs:end:blake3_slice\n{}\n\n// docs:start:pedersen_commitment\nstruct PedersenPoint {\n x : Field,\n y : Field,\n}\n\npub fn pedersen_commitment<N>(input: [Field; N]) -> PedersenPoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n// docs:start:pedersen_commitment_slice\npub fn pedersen_commitment_slice(input: [Field]) -> PedersenPoint {\n pedersen_commitment_with_separator_slice(input, 0)\n}\n// docs:end:pedersen_commitment_slice\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator<N>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator_slice(input: [Field], separator: u32) -> [Field; 2] {}\n\npub fn pedersen_commitment_with_separator<N>(input: [Field; N], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\npub fn pedersen_commitment_with_separator_slice(input: [Field], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator_slice(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<N>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n// docs:start:pedersen_hash_slice\npub fn pedersen_hash_slice(input: [Field]) -> Field\n// docs:end:pedersen_hash_slice\n{\n pedersen_hash_with_separator_slice(input, 0)\n}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator<N>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator_slice(input: [Field], separator: u32) -> Field {}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut inputs_as_bytes = &[];\n\n for input in inputs {\n let input_bytes = input.to_le_bytes(32);\n for i in 0..32 {\n inputs_as_bytes = inputs_as_bytes.push_back(input_bytes[i]);\n }\n }\n\n let hashed_input = blake2s_slice(inputs_as_bytes);\n crate::field::bytes32_to_field(hashed_input)\n}\n\n#[foreign(keccak256)]\n// docs:start:keccak256\npub fn keccak256<N>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{}\n\n#[foreign(keccak256)]\n// docs:start:keccak256_slice\npub fn keccak256_slice(input: [u8], message_size: u32) -> [u8; 32]\n// docs:end:keccak256_slice\n{}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<N>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: [Field]);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self]);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self.lo as Field, self.hi as Field]);\n }\n}\n\nimpl<T, N> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n", "path": "std/hash.nr" }, "33": { "source": "// Regular merkle tree means a append-only merkle tree (Explain why this is the only way to have privacy and alternatives if you don't want it)\n// Currently we assume that it is a binary tree, so depth k implies a width of 2^k\n// XXX: In the future we can add an arity parameter\n// Returns the merkle root of the tree from the provided leaf, its hashpath, using a pedersen hash function.\npub fn compute_merkle_root<N>(leaf: Field, index: Field, hash_path: [Field; N]) -> Field {\n let n = hash_path.len();\n let index_bits = index.to_le_bits(n as u32);\n let mut current = leaf;\n for i in 0..n {\n let path_bit = index_bits[i] as bool;\n let (hash_left, hash_right) = if path_bit {\n (hash_path[i], current)\n } else {\n (current, hash_path[i])\n };\n current = crate::hash::pedersen_hash([hash_left, hash_right]);\n }\n current\n}\n", "path": "std/merkle.nr" }, "35": { "source": "use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<N, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n", "path": "std/option.nr" }, "44": { "source": "use crate::ops::{Add, Sub, Mul, Div, Rem, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\n\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex<N>(hex: str<N>) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else if ascii < 71 {\n ascii - 55\n } else {\n ascii - 87\n } as Field\n }\n\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if self < b {\n (U128::from_u64s_le(0, 0), self)\n } else {\n //TODO check if this can overflow?\n let (q,r) = self.unconstrained_div(b * U128::from_u64s_le(2, 0));\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::from_u64s_le(1, 0), r - b)\n }\n }\n }\n\n pub fn from_integer<T>(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer<T>(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo + self.hi) * (b.lo + b.hi) - low + carry\n } else {\n self.lo * b.hi + self.hi * b.lo + carry\n };\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64))as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: U128) -> U128 { \n assert(other < U128::from_u64s_le(128,0), \"attempt to shift left with overflow\");\n let exp_bits = other.lo.to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: U128) -> U128 { \n assert(other < U128::from_u64s_le(128,0), \"attempt to shift right with overflow\");\n let exp_bits = other.lo.to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n", "path": "std/uint128.nr" }, "60": { "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::protocol_types::{hash::pedersen_hash, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()], 0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr" }, "63": { "source": "use crate::context::Context;\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T> Storage<T> for PublicMutable<T> {}\n\nimpl<T> PublicMutable<T> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n\n // docs:start:public_mutable_struct_read\n pub fn read<T_SERIALIZED_LEN>(self) -> T where T: Deserialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"PublicMutable reads only supported in public functions\");\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write<T_SERIALIZED_LEN>(self, value: T) where T: Serialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"PublicMutable writes only supported in public functions\");\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr" }, "76": { "source": "use crate::{\n context::{\n inputs::PublicContextInputs, interface::ContextInterface, interface::PublicContextInterface,\n gas::GasOpts\n},\n messaging::process_l1_to_l2_message,\n oracle::{arguments, public_call::call_public_function_internal}, hash::hash_args_array\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_non_existent_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL>,\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_note_hashes: BoundedVec<SideEffect, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: Field,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n PublicContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter,\n args_hash,\n return_values: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hash: 0,\n unencrypted_logs_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero() // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn call_public_function_no_args(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let side_effect_counter = self.side_effect_counter;\n // TODO get next value from output of `call_public_function_internal`\n self.side_effect_counter += 1;\n\n call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = 0;\n let unencrypted_log_preimages_length = 0;\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_non_existent_read_requests: self.nullifier_non_existent_read_requests.storage,\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n unencrypted_logs_hash,\n unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n prover_address: self.prover_address,\n revert_code: 0\n };\n pub_circuit_pub_inputs\n }\n}\n\nimpl ContextInterface for PublicContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_note_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PublicContextInterface for PublicContext {\n fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n fn timestamp(self) -> u64 {\n self.inputs.public_global_variables.timestamp\n }\n\n fn coinbase(self) -> EthAddress {\n self.inputs.public_global_variables.coinbase\n }\n\n fn fee_recipient(self) -> AztecAddress {\n self.inputs.public_global_variables.fee_recipient\n }\n\n fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_nullifier_non_existent_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_non_existent_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // We can consume message with a secret in public context because the message cannot be modified and therefore\n // there is no front-running risk (e.g. somebody could front run you to claim your tokens to your address).\n fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n this,\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn call_public_function<ARGS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n _gas: GasOpts\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n fn static_call_public_function<ARGS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n _gas: GasOpts\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n fn delegate_call_public_function<ARGS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr" }, "87": { "source": "use crate::{\n hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier},\n oracle::get_l1_to_l2_membership_witness::get_l1_to_l2_membership_witness\n};\n\nuse dep::std::merkle::compute_merkle_root;\nuse dep::protocol_types::{constants::L1_TO_L2_MSG_TREE_HEIGHT, address::{AztecAddress, EthAddress}, utils::arr_copy_slice};\n\npub fn process_l1_to_l2_message(\n l1_to_l2_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n chain_id: Field,\n version: Field,\n content: Field,\n secret: Field\n) -> Field {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n portal_contract_address,\n chain_id,\n storage_contract_address,\n version,\n content,\n secret_hash\n );\n\n let returned_message = get_l1_to_l2_membership_witness(storage_contract_address, message_hash, secret);\n let leaf_index = returned_message[0];\n let sibling_path = arr_copy_slice(returned_message, [0; L1_TO_L2_MSG_TREE_HEIGHT], 1);\n\n // Check that the message is in the tree\n // This is implicitly checking that the values of the message are correct\n let root = compute_merkle_root(message_hash, leaf_index, sibling_path);\n assert(root == l1_to_l2_root, \"Message not in state\");\n\n compute_message_nullifier(message_hash, secret, leaf_index)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/messaging.nr" }, "100": { "source": "use dep::protocol_types::{address::AztecAddress, constants::L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH};\n\n// Obtains membership witness (index and sibling path) for a message in the L1 to L2 message tree.\n#[oracle(getL1ToL2MembershipWitness)]\nfn get_l1_to_l2_membership_witness_oracle(\n _contract_address: AztecAddress,\n _message_hash: Field,\n _secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {}\n\nunconstrained pub fn get_l1_to_l2_membership_witness(\n contract_address: AztecAddress,\n message_hash: Field,\n secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {\n get_l1_to_l2_membership_witness_oracle(contract_address, message_hash, secret)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_l1_to_l2_membership_witness.nr" }, "106": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr" }, "109": { "source": "mod globals;\nmod inputs;\n\nmod private_context;\nmod public_context;\nmod avm_context;\nmod interface;\nmod gas;\n\nuse interface::ContextInterface;\nuse private_context::PrivateContext;\nuse public_context::PublicContext;\nuse avm_context::AvmContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n avm: Option<&mut AvmContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context { private: Option::some(context), public: Option::none(), avm: Option::none() }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context { public: Option::some(context), private: Option::none(), avm: Option::none() }\n }\n\n pub fn avm(context: &mut AvmContext) -> Context {\n Context { avm: Option::some(context), public: Option::none(), private: Option::none() }\n }\n\n pub fn none() -> Context {\n Context { public: Option::none(), private: Option::none(), avm: Option::none() }\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context.nr" }, "111": { "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET, GENERATOR_INDEX__NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, silo_nullifier}\n};\n\nuse dep::protocol_types::hash::sha256_to_field;\n\npub fn compute_secret_hash(secret: Field) -> Field {\n // TODO(#1205) This is probably not the right index to use\n pedersen_hash([secret], GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < args.len() {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < args.len() {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr" }, "130": { "source": "pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr" }, "147": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS},\n contract_class_id::ContractClassId, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n AztecAddress::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute_from_public_key(\n pub_key: GrumpkinPoint,\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n portal_contract_address: EthAddress,\n deployer: AztecAddress\n ) -> AztecAddress {\n AztecAddress::compute(\n PublicKeysHash::compute(pub_key),\n PartialAddress::compute(\n contract_class_id,\n salt,\n initialization_hash,\n portal_contract_address,\n deployer\n )\n )\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let contract_address_salt = 3;\n let contract_class_id = ContractClassId::from_field(4);\n let initialization_hash = 5;\n let portal_contract_address = EthAddress::from_field(6);\n let deployer = AztecAddress::from_field(7);\n\n let address = AztecAddress::compute_from_public_key(\n point,\n contract_class_id,\n contract_address_salt,\n initialization_hash,\n portal_contract_address,\n deployer\n );\n\n let expected_computed_address_from_preimage = 0x027ea2b41ced2ec9a98305984e96dd28518536a4628883ccdc06e38aa8997220;\n assert(address.to_field() == expected_computed_address_from_preimage);\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let partial_address = PartialAddress::from_field(3);\n\n let address = AztecAddress::compute(PublicKeysHash::compute(point), partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x0447f893197175723deb223696e2e96dbba1e707ee8507766373558877e74197;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "152": { "source": "use dep::std::cmp::Eq;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "196": { "source": "use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr" }, "199": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__CONSTRUCTOR, GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_logs_hash(previous_log_hash: Field, current_log_hash: Field) -> Field {\n accumulate_sha256(\n [\n previous_log_hash,\n current_log_hash\n ]\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "209": { "source": "// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr" }, "275": { "source": "mod lib;\n\ncontract GasToken {\n use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}};\n use dep::aztec::{hash::compute_secret_hash, state_vars::{PublicMutable, Map}};\n\n use crate::lib::{calculate_fee, get_bridge_gas_msg_hash};\n\n #[aztec(storage)]\n struct Storage {\n balances: Map<AztecAddress, PublicMutable<U128>>,\n }\n\n #[aztec(public)]\n fn claim_public(to: AztecAddress, amount: Field, secret: Field) {\n let content_hash = get_bridge_gas_msg_hash(to, amount);\n\n // Consume message and emit nullifier\n context.consume_l1_to_l2_message(content_hash, secret, context.this_portal_address());\n\n let new_balance = storage.balances.at(to).read() + U128::from_integer(amount);\n storage.balances.at(to).write(new_balance);\n }\n\n // TODO(@just-mitch): remove this function before mainnet deployment\n // convenience function for testing\n // the true canonical gas token contract will not have this function\n #[aztec(public)]\n fn mint_public(to: AztecAddress, amount: Field) {\n let amount = U128::from_integer(amount);\n let new_balance = storage.balances.at(to).read().add(amount);\n\n storage.balances.at(to).write(new_balance);\n }\n\n #[aztec(public)]\n fn check_balance(fee_limit: Field) {\n let fee_limit = U128::from_integer(fee_limit);\n assert(storage.balances.at(context.msg_sender()).read() >= fee_limit, \"Balance too low\");\n }\n\n #[aztec(public)]\n fn pay_fee(fee_limit: Field) -> Field {\n let fee_limit_u128 = U128::from_integer(fee_limit);\n let fee = calculate_fee(context);\n assert(fee <= fee_limit_u128, \"Fee too high\");\n\n let sender_new_balance = storage.balances.at(context.msg_sender()).read() - fee;\n storage.balances.at(context.msg_sender()).write(sender_new_balance);\n\n let recipient_new_balance = storage.balances.at(context.fee_recipient()).read() + fee;\n storage.balances.at(context.fee_recipient()).write(recipient_new_balance);\n\n let rebate = fee_limit_u128 - fee;\n rebate.to_field()\n }\n\n // utility function for testing\n unconstrained fn balance_of_public(owner: AztecAddress) -> pub Field {\n storage.balances.at(owner).read().to_field()\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr" }, "276": { "source": "use dep::aztec::prelude::{AztecAddress, EthAddress};\nuse dep::aztec::context::PublicContext;\nuse dep::aztec::protocol_types::hash::sha256_to_field;\n\npub fn calculate_fee(_context: PublicContext) -> U128 {\n U128::from_integer(1)\n}\n\npub fn get_bridge_gas_msg_hash(owner: AztecAddress, amount: Field) -> Field {\n let mut hash_bytes = [0; 68];\n let recipient_bytes = owner.to_field().to_be_bytes(32);\n let amount_bytes = amount.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i + 4] = recipient_bytes[i];\n hash_bytes[i + 36] = amount_bytes[i];\n }\n\n // Function selector: 0x3e87b9be keccak256('mint_public(bytes32,uint256)')\n hash_bytes[0] = 0x3e;\n hash_bytes[1] = 0x87;\n hash_bytes[2] = 0xb9;\n hash_bytes[3] = 0xbe;\n\n let content_hash = sha256_to_field(hash_bytes);\n content_hash\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr" } } }
1
+ { "noir_version": "0.27.0+783feebcc2543497cc9a23db958af64902afa589", "name": "GasToken", "functions": [{ "name": "claim_public", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "amount", "type": { "kind": "field" }, "visibility": "private" }, { "name": "secret", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "amount": [{ "start": 55, "end": 56 }], "inputs": [{ "start": 0, "end": 54 }], "secret": [{ "start": 56, "end": 57 }], "to": [{ "start": 54, "end": 55 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] }, "visibility": "public" }, "return_witnesses": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271] }, "bytecode": "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", "debug_symbols": "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r4HhvAaG8xoYzmtgOK+B4bwGhvMaGM5rfJLz8vlQEvZZJQOjZGKULIwSwShRjBLDKHGMkoTHPn5kp38kQ049fmTkf2Tmf2Tlf0TyP6L5H7H8j3j+R/JP3/JP3/NP3/NP3/NP3/NP3/NP3/NP3/NP3/NP3/NP3/NPP/JPP/JPP/JPP/JPP/JPP/JPP/JPP/JPP/JPP/JPf+ef/s4//Z1/+jv/9Hf+6e/809/5p7/zT3/nn/5OP/15u+V/ZOR/ZOZ/ZOV/RPI/ovkfsfyPeP5HIv8j+ac/8k9/5J/+yD/9kX/6I//0R/7pj/zTH/mnP/JPf+Sf/sw//Zl/+jP/9Gf+6c/805/5pz/zT3/mn/7MP/2Zf/or//RX/umv/NNf+ae/8k9/5Z/+yj/9lX/6K//0V/7pS/7pS/7pS/7pS/7pS/7pS/7pS/7pS/7pS/7pS/7pa/7pa/7pa/7pa/7pa/7pa/7pa/7pa/7p57O+mc/6Zj7rm/msb+azvpnP+mY+65v5rG/ms76Zz/pmPuub+axv5rO+mc/6Zj7rm/msb+azvpnP+mY+65v5rG/ms76Zz/pmPuub+axv5rO+mc/6Zj7rm/msb+azvpnP+mY+65v5rG/ms76Zz/pmPuub+axv5rO+mc/6Zj7rm/msb+azvpnP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/pWPutb+axv5bO+lc/6Vj7rW/msb+WzvpXP+lY+61v5rG/ls76Vz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6LJ/1WT7rs3zWZ/msz/JZn+WzPstnfZbP+iyf9Vk+67N81mf5rM/yWZ/lsz7LZ32Wz/osn/VZPuuzfNZn+azP8lmf5bM+y2d9ls/6LJ/1WT7rs3zWZ/msz/JZn+WzPstnfZbP+iyf9Vk+67N81mf5rM/yWZ/lsz7LZ32Wz/osn/VZPuuzfNZn+azP8lmf5bM+y2d9ls/6LJ/1WT7rs3zWZ/msz/JZn+WzPstnfZbP+iyf9Vk+67N81mf5rM/yWZ/lsz7LZ32Wz/osn/VZPuuzfNZn+azP8lmf5bM+y2d9ls/6LJ/1WT7rs3zWZ/msz/JZn+WzPstnfZbP+iyf9Vk+67N81mf5rM/yWZ/lsz7LZ32Wz/osn/VZPuuzfNZn+azP8lmf5bM+y2d9ls/6LJ/1WT7rs3zWZ/msz/NZn+ezPs9nfZ7P+jyf9Xk+6/N81uf5rM/zWZ/nsz7PZ32ez/o8n/V5PuvzfNbn+azP81mf57M+z2d9ns/6PJ/1eT7r83zW5/msz/NZn+ezPs9nfZ7P+jyf9Xk+6/N81uf5rM/zWZ/nsz7PZ32ez/o8n/V5PuvzfNbn+azP81mf57M+z2d9ns/6PJ/1eT7r83zW5/msz/NZn+ezPs9nfZ7P+jyf9Xk+6/N81uf5rM/zWZ/nsz7PZ32ez/o8n/V5PuvzfNbn+azP81mf57M+z2d9ns/6PJ/1eT7r83zW5/msz/NZn+ezPs9nfZ7P+jyf9Xk+6/N81uf5rM/zWZ/nsz7PZ32ez/o8n/V5PuvzfNbn+azP81mf57M+z2d9ns/6PJ/1eT7r83zW5/msz/NZn+ezPs9nfZ7P+iKf9UU+64t81hf5rC/yWV/ks77IZ32Rz/oin/VFPuuLfNYX+awv8llf5LO+yGd9kc/6Ip/1RT7ri3zWF/msL/JZX+SzvshnfZHP+iKf9UU+64t81hf5rC/yWV/ks77IZ32Rz/oin/VFPuuLfNYX+awv8llf5LO+yGd9kc/6Ip/1RT7ri3zWF/msL/JZX+SzvshnfZHP+iKf9UU+64t81hf5rC/yWV/ks77IZ32Rz/oin/VFPuuLfNYX+awv8llf5LO+yGd9kc/6Ip/1RT7ri3zWF/msL/JZX+SzvshnfZHP+iKf9UU+64t81hf5rC/yWV/ks77IZ32Rz/oin/VFPuuLfNYX+awv8llf5LO+yGd9kc/6Ip/1RT7ri3zWF/msL/JZX+SzvshnfZHP+iKf9UU+64t81hf5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb+axv57O+nc/6dj7r2/msb+ezvp3P+nY+69v5rG/ns76dz/p2Puvb6axv3dJZ3/1HRv5HZv5HVv5HJP8jmv8Ry/+I538k8j+Sf/oj//RH/umP/NMf+ac/8k9/5J/+yD/9kX/6I//0R/7pz/zTn/mnP/NPf+af/sw//Zl/+jP/9Gf+6c/805/5p7/yT3/ln/7KP/2Vf/or//RX/umv/NNf+ae/8k9/5Z++5J++5J++5J++5J++5J++5J++5J++5J++5J++5J++5p++5p++5p++5p++5p++5p++5p++5p++5p++5p++5Z++5Z++5Z++5Z++5Z++5Z++5Z++5Z++5Z++5Z++55++55++55++55++55++55++55++55++55++559+5J9+5J9+5J9+5J9+5J9+5J9+5J9+5J9+5J9+5J/+zj/9nX/6O//0d/7p7/zT3/mnv/NPf+ef/s4//XzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfyWd/IZ30jn/WNfNY38lnfyGd9I5/1jXzWN/JZ38hnfSOf9Y181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNY381nfzGd9M5/1zXzWN/NZ38xnfTOf9c181jfzWd/MZ30zn/XNfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWt/JZ38pnfSuf9a181rfyWd/KZ30rn/WtfNa38lnfymd9K5/1rXzWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZLP+iSf9Uk+65N81if5rE/yWZ/ksz7JZ32Sz/okn/VJPuuTfNYn+axP8lmf5LM+yWd9ks/6JJ/1ST7rk3zWJ/msT/JZn+SzPslnfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81qf5rE/zWZ/msz7NZ32az/o0n/VpPuvTfNan+axP81mf5rM+zWd9ms/6NJ/1aT7r03zWp/msT/NZn+azPs1nfZrP+jSf9Wk+69N81mf5rM/yWZ/lsz7LZ32Wz/osn/VZPuuzfNZn+azP8lmf5bM+y2d9ls/6LJ/12XXWd0+n/vih++v6n37sn/7uszLlj8/K1J8+Kx9H6Pkj7PwRfv6IOH/EPn7EdRb6e48Y54+Y549Y5484X93zfHXP89U9z1f3PF/d83x1r/PVvc5X9zpf3et8da/z1b3OV/c6X93rfHWv89W9zle3nK9uOV/dcr665Xx1y/nqlvPVLeerW85Xt5yvbjlf3Xq+uvV8dev56tbz1a3nq1vPV7eer249X916vrr1fHXb+eq289Vt56vbzle3na9uO1/ddr667Xx12/nqtvPV7eer289Xt5+vbj9f3X6+uv18dfv56vbz1e3nq9vPV3ecr+44X91xvrrjfHXH+eqO89Ud56s7zld3nK/uOF/d+3x17/PVvc9X9z5f3ft8de/z1b3PV/c+X937fHXv49Xtt9v5I8b5I+b5I9b5I+T8EXr+CDt/hJ8/Is4fcb66x/nqHuere5yv7nG+us/Pqvn5WTU/P6vm52fV/Pysmp+fVfPzs2p+flbNz8+q+flZNT8/q+bnZ9X8/Kyan59V8/Ozan5+Vs3Pz6r5+Vk1Pz+r5udn1fz8rJqfn1Xz87Nqfn5Wzc/Pqvn5WTU/P6vm52fV/Pysmp+fVfPzs2p+flbNz8+q+flZNT8/q+bnZ9X8/Kyan59V8/Ozan5+Vs3Pz6r5+Vk1Pz+r5udn1fz8rJqfn1Xz87Nqfn5Wzc/Pqvn5WTU/P6vm52fV/Pysmp+fVfPzs2p+flbNz8+q+flZNT8/q+bnZ9X8/Kyan59V8/Ozan5+Vs3Pz6r5+Vk1Pz+r5udn1fz8rJqfn1Xz87Nqfn5Wzc/Pqvn5WTU/P6vm52fV/Pysmp+fVfPzs2p+flbNz8+q+flZNT8/q+bnZ9X8/Kyan59Vi/OzanF+Vi3Oz6rF+Vm1uMn5I/T8EXb+CD9/RJw/4nx1n59Vi/OzanF+Vi3Oz6rF+Vm1OD+rFudn1eL8rFqcn1WL87NqcX5WLc7PqsX5WbU4P6sW52fV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7/Orxvf5Vfe3+VX393lb2t/nbWmXvy19/HtMzNs//lX9Y5OWq/zpV32IX53FS2fx2lm8dRbvncVHZ/G7r/h1u3UWPzqLb9xh161xh123xh123Rp32HVr3GHXrXGHXbfGHXbdOnfY0bnDjs4ddnTusKNzh/08D/WV4jt32NG5w47OHXZ07rCjc4ednTvs7NxhZ+cOOzt32M+TiF8pvnOHnZ077OzcYWfnDjs7d9jVucOuzh12de6wq3OH/TwD/JXiO3fY1bnDrs4ddnXusKtzh5XOHVY6d1jp3GGlc4f9PH3/leI7d1jp3GGlc4eVzh1WOndY7dxhtXOH1c4dVjt32M/vvfhK8Z07rHbusNq5w2rnDqudO6x17rDWucNa5w5rnTvs5zfOfKX4zh3WOndY69xhrXOHtc4d1jt3WO/cYb1zh/XOHfbzu56+UnznDuudO6x37rDeucN65w4bnTtsdO6w0bnDRucOW79D63eK79xho3OHjc4dNjp32OjcYXfnDrs7d9jOO51W551Oq/NOp9V5p9PqvNNpdd7ptDrvdFqddzpJ551O0nmnk3Te6SSddzrJrXGHlc47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJOu90ks47naTzTifpvNNJO+900s47nbTzTiftvNNJb407rHbe6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O2nmnk3be6aSddzpp551O1nmnk3Xe6WSddzpZ551OdmvcYa3zTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu90ss47nazzTifrvNPJOu908s47nbzzTifvvNPJO+908lvjDuuddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnk3fe6eSddzp5551O3nmnU3Te6RSddzpF551O0XmnU9wad9jovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47naLzTqfovNMpOu90is47nXbnnU67806n3Xmn0+6802nfGnfY3Xmn0+6802l33um0O+902p13Ou3OO512551Ou/NOp915p9PuvNNpd97ptDvvdNqddzrtzjudduedTrvzTqfdeafT7rzTaXfe6bQ773TanXc67c47nXbnnU67806n3Xmn0+6802l33um0O+902p13Ou3OO512551Ou/NOp915p9PuvNNpd97ptDvvdNqddzrtzjudduedTrvzTqfdeafT7rzTaXfe6bQ773TanXc67c47nXbnnU67806n3Xmn0+6802l33um0O+902p13Ou3OO512551Ou/NOp915p9PuvNNpd97ptDvvdNqddzrtzjudduedTrvzTqfdeafT7rzTaXfe6bQ773TanXc67c47nXbnnU67806n3Xmn0+6802l33um0O+902p13Ou3OO512551Ou/NOp915p9PuvNNpd97ptDvvdNqddzrtzjudduedTrvzTqfdeafT7rzTaXfe6bQ773TanXc67c47nXbjnU56a7zT6S6+b4e9i+/bYe/i+3bYu/i+HfYuvm+HvYvv22Hv4vt22Lv4vh32Lr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dtvNPpLr5zh2280+kuvnOHbbzT6S6+c4dF73SKx/fGiD+J//vP7hgPDbexfki+kjDWtseHZf3pw49bIbfur7sV8jvB190K+WXj626F/BbzdbdCfj36sltBb/r6ulshv9B93a2Q3xS/7lbIr6BfdyvyvpWLW3m/217dyvvd9upW3u+2V7fyfre9upX3u+3FraB37H3drbzfba9u5f1ue3Ur73fbq1uR961c3Mr73fbqVt7vtle38n63vbqV97vt1a28323//lYGervl193K+9326lbe77ZXt/J+t726FXnfysWtvN9tr27l/W57dSvvd9urW3m/217dyvvd9uJW0Htlv+5W3u+2V7fyfre9upX3u+3Vrcj7Vi5u5f1ue3Ur73fbq1t5v9te3cr73fbqVt7vthe3gt7o/Je38hDf8hX0IR78phjyId527T+P4DfFL7wVed/Kxa2A3xS/8FbAb4pfeCvgN8UvvBXwm+IX3gr4TfHrboW8mfwLbwX8CvqFt/J+t726lfe77dWtyPtWLm7l/W57dSvvd9urW3m/217dyvvd9upW3u+2F7dC/psAX3gr73fbq1t5v9te3cr73fbqVuR9Kxe38n63vbqV97vt1a28322vbuX9bnt1K+9324tbIf81ji+8lfe77dWtvN9tr27l/W57dSvyvpWLW3m/217dyvvd9upW3u+2V7fyfre9upX3u+3FrZD/Ds4X3sr73fbqVt7vtle38n63vboVed/Kxa28322vbqXlu+1DfMtX0Id48pvifvyxlf3TPzUl/zyS3xS/7FbIf8/pC2+F/Kb4dbdCflP8ulshvyl+3a3I+1YuboX8pvh1t0J+U/y6WyG/gn7drbzfba9u5f1ue3Er5L+Z9YW38n63vbqV97vt1a28322vbkXet3JxK+9326tbeb/bXt3K+9326lbe77ZXt/J+t724FfLfzPrCW3m/217dyvvd9upW3u+2V7ci71u5uJX3u+3Vrbzfba9u5f1ue3Ur73fbq1t5v9v+/a1M8t/M+sJbeb/bXt3K+9326lbe77ZXtyLvW7m4lfe77dWtvN9tr27l/W57dSvvd9urW3m/217cCvlvZn3hrbzfba9upeW77UN8y1fQh3jhit+6H+Jj1v7zCH5T/MJbAb8pfuGtgN8Uv/BWwG+KX3gr4DfFr7sV8l+g+sJbAb8pfuGtgN8Uv/BWwK+gX3gr8r6Vi1t5v9te3cr73fbqVt7vtle38n63vbqV97vtxa2Q/2bWF97K+9326lbe77ZXt/J+t726FXnfysWtvN9tr27l/W57dSvvd9urW3m/217dyvvd9uJWyH8z6wtv5f1ue3Ur73fbq1t5v9te3Yq8b+XiVt7vtle38n63vbqV97vt1a28322vbuX9bntxK+S/mfWFt/J+t726lfe77dWtvN9tr25F3rdycSvvd9urW3m/217dyvvd9upWWr7bPsS3fAX9Qzz5L1CN2y0+/iFbo/SfSPLfoPrSewG/LX7pvYDfF7/0XuR9L5f3An5n/NJ7Ab81fum9gN8bv/RewG+OX3ov4JfSr7wX8t/R+tJ7eb/vXt/L+333+l7e77vX9yLve7m8l/f77vW9vN93r+/l/b57fS/v993re3m/717eC/lva33pvbzfd6/v5f2+e30v7/fd63uR971c3sv7fff6Xt7vu9f38n7fvb6X9/vu9b2833cv74X897a+9F7e77vX9/J+372+l/f77vW9yPteLu/l/b57fS/v993re3m/717fy/t99/pe3u+7V/eyyH+D60vv5f2+e30v7/fd63t5v+9e34v0vJeH/KavpQ/56LdH+/EPWkTtP5Xot8cvvBf02+MX3gv67fHr7oX8V66+9F7Qb49feC/ot8cvvBf02+MX3ou87+XyXtCvpV94L+/33et7eb/vXt/L+333+l7e77uX90L+W11fei/v993re3m/717fy/t99/pe5H0vl/fyft+9vpf3++71vbzfd6/v5f2+e30v7/fdy3sh//2uL72X9/vu9b2833ev7+X9vnt9L/K+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Tk/Ed+6w8J1OT8R37rDwnU5PxHfusPCdTk/Ed+6w8J1OT8R37rDwnU5PxHfusJ13OkXnnU7ReadTdN7pFJ13OkXnnU7B3ulkcz50rCvx6A77TDy6wz4Tj+6wz8SjO+wz8egO+0w8qMM+JIH65kMSqBs+JIF63B+SSLuSHpJA/eghCdRlHpJAveMhCdQRHpJAPv+QxHNv0haghySee5M29vwhibSH5yGJ596knTkPSTz3Ju23eUjiuTdpF81DEs+9SXtjHpJw7r1JO14eknDuvUn7WB6ScO69bzj33qSNKA9JOPfepO0lD0k4996kTSN/SCLtD3lI4rk3adfHQxLPvUl7OR6SeO5N2qHxkMRzb9K+i4cknnuTdlM8JPHcm7RH4iGJ596knQ8PSTz3Ju1neEjiuTdpl8JDEs+9SXsPHpJ47k3aUfCQxHNv0j6BhySee5PY/4cknnuTOP2HJJ57k5j6hySee5P494cknnuTWPWHJJ57k7jyhySee5MY8IcknnuTeO2HJJ57k9jqhySee5M46IcknnuTmOWHJJ57k/jihySee5NY4IcknnuTuN2HJJ57kxjbhySee38BDxv6kDTHupLkPEnBk7Rxkr6AM30qafAkTZ6kxZMkPEnKk8Rzb+e5t/Pc23nuHTz3Dp57B8+9g+fewXPv4Ll38Nw7eO4dPPcOnntvnntvnntvnntvnntvnntvnntvnntvnntvnntvmnv77UZz77skmnvfJdHc+y6J5t53STT3vkuiufddEs2975Jo7n2XRHPvuySeew+eew+eew+eew+eew+eew+eew+eew+eew+eew+ee0+ee0+ee0+ee0+ee0+ee0+ee0+ee0+ee0+ee0+eey+eey+eey+eey+eey+eey+eey+eey+eey+eey+eewvPvYXn3sJzb+G5t/DcW3juLTz3Fp57C8+9hefeynNv5bm38txbee6tPPdWnnsrz72V597Kc2/lubfx3Nt47m089zaeexvPvY3n3jjW8i6J59441vIuiefeONbyLonn3jjW8i6J59441vIuiefeONbyLonn3odZy8cpu+KUw0Tk45RRcsosOWWVnCIlp2jJKVZyipecUlL7UVL7u6T2d0nt75La3yW1f82m+fQ/fs719uQU13h8dsuPz/44QY+fYMdP8OMnxPET9uETxjV19VtPGMdPmMdPWMdP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uis+5K9r+eiu+1w+uus+k79u6K77XD666z6Xj+66z+Wju+78eOdZei0f3XWfy0d33efy0V33uXx0130uH911n8tHd92n8ge66z6Xj+66z+Wju+5z+b277ujddUfvrjt6d93Ru+uO3l139O66s3fXnb277uzddWfvrjt7d93Zu+vO3l139u66s3fXnb277urddVfvrrt6d93Vu+uWb335zfJ7d93Vu+uW7x0xlT8+HPP2j9UPuT3+49CQn/TfD3lyL8t+iL5dfdg+BlwtftzhWPPjYso3mjAuxv0h2cOuL2a8L+b6Yub7Yq4vZr0v5vpi5H0x1xej3/NizD8uxq8vxt4Xc30x/r6Y64uJ98VcX8z3fPN9fjH6Td98n1/MN33z/XEx+7pd6zd9831+Md/0zdc+/ubZbVxfjHzTi7k9u5jv+ub79GK+65vv04v5nm++MfRDxXWCp9/zzfeFi/meb77PL8a+55vvCxfzPd98Iz4uZl+br33PN98XLuZ7vvm+cDHyvpjri/meb74vXMz3fPMN94+L+Yuu9E3ffJ9fzDd9831+Md/0zffpxfg3ffN9fjHf9M33+cV80zffj4vZf5HH+Dd983X7uJjrMLx8nSnkYmw/u5hv+ub7/GK+6Zvv84v5pm++zy/mm775Pr+Yb/rm+/Ri4pu++T6/GPJ7zLj5xxff9p8u5kO/NNdPfit4RT+5eb+in9xjX9FPboVjfXjV0HGtn9yxXtC/yY3lFf3k5OMV/eSA4hX96P77gn50/31BP7r/vqAf3X9f0I/uvy/oR/ffefv44rWu9aP771P9ckP33xf0o/vvC/rR/fcF/ej++4J+dP99QT+6/76gH91/X9CP7r8v6O/df+XWvP+O5v13NO+/o3n/Hc37b/kK2t+tv3n/Hc3772jef0fz/jua99/ZvP/O5v13Nu+/s3n/LV9G+7v1N++/s3n/nc3772zef2fz/rua99/VvP8udP/1+fHFHtf60f33Bf3o/vuCfnT/fUE/uv++oB/df+OH/r2v9aP77wv60f33uX70At9X9KP77wv60f33Bf3o/vuCfnT/fUE/uv++oB/df2386L9/oR/df1/Qj+6/L+hH99/n+tFrRF/Rj+6/L+hH998X9KP77wv60f33Bf3o/vuC/ub9F73X8RX9zfsvekviC/rRywxf0d+8/6JXA76iv3n/RS/a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" }, { "name": "check_balance", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "fee_limit", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "fee_limit": [{ "start": 54, "end": 55 }], "inputs": [{ "start": 0, "end": 54 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] }, "visibility": "public" }, "return_witnesses": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269] }, "bytecode": "H4sIAAAAAAAA/+2dBZwcx5XGe5a0q9GumGnFLK9mV5IFlmaZV9JKli2TLGlXYKElGcKOkzjsMB3kLneXHCS5HEMuzMzMzMyo3Kue97LftrrXO+sup0p+/fu9X1d/U1P1r6+rqoe6JhMUtupMEGQ4XUqxObh8k8fzvK97cNuGFMuqs8mZ8YSzxBPOUk84yzzhLPeEs8ITznGecFZ6wlnlCed4TziznnBO8ISz2hPOGk84J3rCOckTzsmecE7xhHOqJ5zTPOGc7gnnDE84Z3rCOcsTztmecM7xhHOuJ5zzPOGc7wnnAk84F3rCWesJ5yJPOBd7wrnEE86lnnAu84RzuSecKzzhXOkJ5ypPOFd7wrnGE861nnCu84RzvSecV3nCWecJ5wZPOHOecNZ7wtngCedGTzg3pci5Ezjlt0JX834L77fyfhvvt/P+Gt7v4P3OSDsbed/E+2bet/C+lfdtvG/nfQfvO3nfxftu3vfwvjcoeFvGx30Uuyh2U+yJPNZPsZdiH8W1/FgtP7af4jqK6ykOUNxAcSPFTRQ3U9xCcZDiVopDFIcpjlAMUAxSHKU4RnGc4gTFbRQnKU5RnKY4Q3GW4hzF7RTnKS5QXKS4I8JyJ8VdFHdTPILikRSPong0xWMoHkvxOIp7KB5PcS/FEyieSPEkivsonkzxFIqnUjyN4ukUz6B4JsX9FM+ieDbFcyieS/E8iudTvCDi2QspXkTxYoqXRDj/jOLPKf6C4i8pXkrxVxR/TfEyir+h+FuKv6N4OcUrKP6e4h8o/pHinyheSfEqildT/DPFayj+heJfKf6N4t8p/oPiPyn+i+K/Kf6H4n+ZRQbZayn+j+J1FK+neAPFGyneRPFmirdQvJXibRRvp3gHxTsp3kXxbor3ULyX4n0U76f4AMUHKT5E8WGKj1B8lOJjFB+n+ATFJyk+RfFpis9QfJbicxSfp/gCxRcpvkTxZYqvUHyV4msUX6f4BsU3Kb5F8e2I59+h+C7F9yi+z9oPeP9D3v+I9z/m/U94/1Pe/4z3P+f9L3j/S97/ive/5v1veP9b3v+O97/n/SXe/4H3MqFleF/C+1Lel/G+nPcVvB/H+0reV/F+PO+zvJ/Ae/NbxpNT+TnB0JYPUpr/NtYNVoTAhbKiv5U0v8Mr5cdkX8t6GR+XRfRyPi6P6BV8XBHRx/Gx7DOsV/JxZUSv4uOqSDnj+Xh8RM/ycTaiV/NxdUSv4eOaiD6JjydF9Ml8PDmiz+DjGRF9Hh/Pi+gL+HhBRK+V44i+mI8XR/TlfCz7POtX8fFVEX0jH2+EcrL8WLiJf0Hh97Rmy4Am47YEtHLWSkGrkOJAG8daOWjSzytAq2JtHGjjWasELctaFWgTWBsPWjVrWdBqWJsA2kTWqkGbxFoNaJNZmwjaFNYmgcZD+Y99xWjTWJsC2nTWpoI2g7VpoM1kbTpos1ibAdps1maCNoe1WaDNZW02aPNYmwPafNbmgraAtXmgLWRtPmi1rC0AbRFrC0FbzFotaEtYWwTaUtYWg7aMtSWgLWdtKWgrWFsG2krWloO2irUVoK1mbSVoa1hbBdpa1laDto61NaCtZ20taFextg40ueavB20Da1eBlmOtDrR61jaA1sBaDrSNrNWDtom1BtDkerERNHntvEnm9WDouhs+h/US0K6WawxoW+T6AtpWubaAtk2uK6Bth7pFu0auJ6DtkGsJaDvlOgJaHton+0bWJoDWJNcU0JrlegJaC2sTQWuV6wtobXJtAa2dtSmgdbA2FbRO1qaB1sXadNC65ToFWg9rM0HrZU3mF+OjvD/JBym9HmloGDTldqVdLpVsyu1Jv9w687qkl8uS369LPV3gVR+nU7wHYwPWneGQekQvg/RFyCv5xA+5Rgi76cPdnO4b4XmdkefVQJ7umPbng3Tb3xPh6Ykwm3NyAjjS77Mbc9pnR70V3WfvhbzRvievV67EPnsXcFjos5vs9NlcnfbZwmdLQRDf9+S185XYZ58EHOn32c3aZ0e/Fd1nXwp5o31P3sddiX32ecCRfp/dsklfG4x6K7rPvgryRvuefKZwJfbZlwGHhT57SOfZUW9F99nXQt5o35PPt67EPvsa4Ei/zx621Gfrtc8Ghe8JgyC+78lnrVdin309cKTfZwcP6WuDUW9F99lPQN5o35PP/a/EPvteTpvPbH/An9muAu2HrK0G7UesrQHtx6ytBe0nrK0D7aesrQftZ/JdI2g/Z60OtF+wtgG0X7KWA+1XrNWD9mvWGkD7jXyXCdpvWdsE2u9Y2wza71m7GrRLrG0B7Q+sbQVNvpDYBlqGte2glbB2DWilrO0ArYy1naCVs5YHrYK1RtDGsdYEWiVrzaBVsdYC2njWWkHLstYG2gTW2kGrZq2DNfOdhXzX80nWKoE1H6Q3NrJQlmyZyDE+3gg8Tenz1GehjtHwNNnlGbbeAtbVbKGuYs9FM/C0WOAx5bamX254LWyLtEnKlvpqIM/V0M42C+3MQL1SdvT3hYYHx5/ZspCv0RFG0XC+aothbE+fMRd3XqO/z8Tz2mLXs1yxc0mbVX8a6vBcjIanHXgsjMMNlvpB+L5PrmWXgnTnjc6IV3H9S/J0gH+pvwfhMdke4ZFjqU+ZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlTmvzMqszMqszMocKHPdg9uUWZmVWZmVWZmVWZmVWZmVWZm9ZMZ7EPCeIsnX6AijaK12eXLZCI/ZMpHjPKQ7gac7dZ7C7/s7i+DB+x4t3Mu6wU47C7/Dj95P2RlpUw3kwbFj4d7asF92R3jkuAfOgzIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszIrszI//JjxN+7CmoV87Y4witZlmScb4TFbJnKch3QcI57XXkuMPUUw9trlqcM+LeUbxi0Rzfw1zObSIRYL91GEv+eXPlLG5QpHJ+iS52uTh9i2MVs1PN4T2OftAX/yUA+24499vXQo7/kY3kbeG/87Ipppg63/85C6pGw5lvqqg8vvP6qGdDdo0bnHtKU1opm22PifmEyQ/N8kLcAo7cL7goStNjWe3BE77Wyom0hlVIHXLRF/pV0l0NYO4DBc6f9vUEM4Hpq4LBkPUr/UVwZ59vIYmBRcvlUGNv5HqaHOTtsLfS8PbTTpzpi2S57rYS64gdM47rvAxxMxj8s20rWjCby0ce0wdfcBZx7qwbp3AWtKdW/AujMcUo/oZZA+XjqUV/KJH+K1sJs5QuZsZI8+ryPyvBrI0xPT/nyQbvt7Izy9EWZzTm6GfnYCrt/dlph6EjzC/4aSPPgfW3Kdk/x43XgoroHF/KdVN/iL1/F8hNe0oTmmDbaufc3B8DbIMV77ZFzif7YJW21qPPavfflI2xoj7TLeb41o5nw9uvTydueD9M5DNhg+B5ttpDlaGGpALwncZyz1gLHMA8ZyDxgrPGAc5wFjpQeMVR4wjveAMesB4wQPGKs9YKzxgHGiB4yTPGCc7AHjFA8Yp3rAOM0DxukeMM7wgHGmB4yzPGCc7QHjHA8Y53rAOM8DxvkeMC7wgHGhB4y1HjAu8oBxsQeMSzxgXOoB4zIPGJd7wLjCA8aVHjCu8oBxtQeMazxgXOsB4zoPGNd7wHiVB4x1HjBu8IAx5wFjvQeMDR4wbvSAcZMHjJuVMRXGrY4yIs+l9HjqsO1YV1P6bc8V2/Ym4LHxm9ss1DEanma7POG5aIqpy8Lv/XLFtr0FeFrT5wnPRUsRPPjbz5YYzyww5sbKaOt3p/gb19HwxP0WtdkuY26sjHhPRYo8oWdtRfDgf+i0xXhmgTE3VkbD05E+T+hZMf9P0wGetcd4ZoExN1ZGS/d2bSj2Xgv836GOGM9s/e/QWBgNj43/+ckGxf3vUBd41hnjmQXG3FgZbd0zkYU6RsOD9yJ3xXjmKmOjMqbCONMDxlkeMM72gHGOB4xzPWCc5wHjfA8YF3jAuNADxloPGBd5wLjYA8YlHjAu9YBxmQeMyz1gXOEB40oPGFd5wLjaA8Y1HjCu9YBxnQeM+hmAMv6pGZGnNj2eOmw71mVrnbti2o7r3Cnjw4MReTKBnX6OddlaK7GYtuM6TD4xdivjw4ax0QNGPdd6rpWxOEYfzrUy6rh2iVHPtTIqY3GMOq7VR5cY1Uf1URmvPMZmDxj1XCujMirjn4JRPzfT1z3KWByjfhdXuP9oLIyGpy99ntCz3iJ4+sAzeV6zXcbcWBkNj43/3slCHaPh2QWe9cV4ZoExN1ZGw7M7fZ7Qs11F8OwGz3bFeGaBMTdWRsOzJ32e0LPdRfDsAc92x3hmgTE3VkbD058+T+jZniJ4+sGzPTGeWWDMjZXR8OxNnyf0rL8Inr3gWX+MZxYYc2NlNDz70ucJPdtbBM8+8GxvjGcWGHNjZTQ816bPE3q2rwiea8GzfTGeucrY6AFjtweMPviojMroEqOOa/XRJUb1UX1UxiuPUV+HK6MyXnmMPR4w6rlWRmW8chlLQLua95ci7MWsoX30ATZTxn4uaxzULXWVwePP4T9Dl/+qxS2OO8+6lLUP+PE4A8+RvKa9142hvdFzExWwvaXAcB3UewD4x1hvdMsV20cOAM/16fNssNTOOlPuDQ/+vF3Ga7y6MeLVvohXNZDnBvDvRgv+ZaBeKVuOpb5imUscYLZUd878B3cVtF/q6I74YbabeF8OeiN4ejOny/hY8veALnm+UTHUrgDamE+lXRvrK4OhcZxeuZsbTFklqZe76agpqzR93lwl+54ybzhPladf7mZTVkX65W40ZY1LvdxcOK9Wpn/ewv5blb4PR0xZ4y3132z6PoTjbYKl81adern1Ybk1lngnpn/eBk1Zkyz1h8mW+sMUS/5OTd+HcJ6cln654TiebqncGZb6w8z0+0N4vZiVPm94vZidfrlh/52Tfv8Nx/FcS+NiXurlFl6fzU+/P4T+LrDUfxemzxu+PqtNnzecdxalX2443hanX2443pZY6r9L0z9vYf9dlr4P4fy73FL/XZG+D+F4W2nJ31WW+sPq9P0dMGWtSd+HcFysteTvOkv9Yb2l83aVJR/qLPmwIf1+Fs7rufR5w+tQvSUfGiz1h43p+7vJlLXJkr+b0+cN5/Wr0y83nM+2WDpvW1Mvtz4cF9vS5x3E71S2874GNPwsUD7vzKdWf+GzYdzykL4phmedYzzXOMazyDGe6Y7xVDnGs8sxnp2O8ax0jGeeYzztjvFMcoynzDGeJY7xbHeMZ6ZjPFnHeHY7xrPaMZ4DjvEscIynwzGeKY7x5B3jqXCMZ5ljPLMd46l2jGePYzxrHeOpdYyn0zGeLY7xTHOMp8kxnkrHeFY4xjPXMZ6JjvGUOsbT7xhPl2M8OxzjWewYzzbHeGY4xtPiGM94x3hWOcaz3zGerY7xzHeMZ7JjPOWO8ex1jKfXMZ6ljvHMcoyn1TGeCY7xbHaMZ41jPAsd45nqGM84x3j6HONZ7hjPtY7xzHGMp80xnhrHeDIO8GSDy9coyMLjB0AriTzXzFe3Th16/BbWS+A5BzldGlP2LaDJvdwHY56LPt0Cbclzuu7BbaFPWFcejqW+auA46AhPjWM8bY7xzHGM51rHeJY7xtPnGM84x3imOsaz0DGeNY7xbHaMZ4JjPK2O8cxyjGepYzy9jvHsdYyn3DGeyY7xzHeMZ6tjPPsd41nlGM94x3haHOOZ4RjPNsd4FjvGs8Mxni7HePod4yl1jGeiYzxzHeNZ4RhPpWM8TY7xTHOMZ4tjPJ2O8dQ6xrPWMZ49jvFUO8Yz2zGeZY7xVDjGk3eMZ4pjPB2O8SxwjOeAYzyrHePZ7RhP1jGemY7xbHeMZ4ljPGWO8UxyjKfdMZ55jvGsdIxnp2M8uxzjqXKMZ7pjPIsc47nGMZ51jvGUxPBY+D+lkEd+/yhly/EBu16Ea2jeaqlNh7isci5X+KW+MsjzCv5wNO5/x7As4Yz+hhTfX0jekhgfLwXDf297KRh9m0fzP2tS9zio+6aY9r56hPbGcedZl7JuBn48zsBzJG8l1FtMe6PnNCogXykwHIJ6DwP/GOuNbA11+HvhANqNWx7Sh4Hn1tR5Cv+zln47C2PzyIM/b5dtxquBiFc3R7yqgTxHwL8BC/5loF4pW44HYuquDdL1YnAUXgzG8Aw+xF5IfcUyH/GQWX1Wn5OY1Wf1OYlZfVafk5jVZ/U5iVl9Vp+TmNVn9TmJWX1Wn5OY1Wf1OYlZfVafk5jVZ/U5iVl9Vp+TmNVn9TmJWX1Wn5OY1Wf1OYlZfVafk5jVZ/U5iVl9Vp+TmNVn9TmJWX1Wn5OY1Wf1OYnZBZ8Nj6yhJKxZyNflCKNot9rlachCm2XLRI7zkB4EnsMW/LHUzvA35EcjbeqK8V3y4Pg6aqGdcWNHjo/CeSiGecBDZvV5bMyGp5fTwpqFfL2OMIp22C5POI/1BsO3keaxo8BjY5631M5wHjsWaVNvjO+SB8fXMQvtjBs7cnwMzoMyK3Mcs+Hp47SwZiFfnyOMog1a5cmF9032BcO3keaxY8BjY5635Hs4jx2PtKkvxnfJg331uIV2xo0dOT4O56EY5gEPmdVn9TmJWX1Wn5OY1Wf1OYlZfVafk5jVZ/U5iVl9Vp+TmNVn9TmJWX1Wn5OY1Wf1OYlZfX74+Gx4ZG1eYc1Cvl2OMIp21CpPffi9w65g+DbS9w7HgcfG9zKWfA+/dzgRadOuGN8lD46vExbaGTd25PgEnIcrnXnAQ2btGw8Ns/YNZU5i1r6hzEnM2jeUOYlZ+4YyJzFr31DmJGbtG8qcxKx9Q5mTmLVvKHMSs/YNZU5i1r6hzEnM2jeUOYlZ+4YyJzFr31DmJGbtG8qcxOxC3zA8uzktrFnIt9sRRtGO2eUJ1z3YHQzfRvrdzgngOW7BH0vtDH+3c1ukTbtjfJc8OL5us9DOuLEjx7fBeVBmZY5jNjx7OC2sWci3xxFG0Y7b5QnnsT3B8G2keew24LExz1tqZziPnYy0aU+M75IH++pJC+2MGztyfBLOgzIrcxyz4enntLBmIV+/I4yinbDLE85j/cHwbaR57CTw2JjnLbUznMdORdrUH+O75MG+espCO+PGjhyfgvOgzMocx2x49nJaWLOQb68jjKLdZpcnnMf2BsO3keaxU8BjY5631M5wHjsdadPeGN8lD/bV0xbaGTd25Pg0nIdimAc8ZFafx8ZcA/UJazYYPnZcYBTtpF2ecB7LB8O3keax08BjY5631M5wHjsTaVM+xnfJg+PrjIV2xo0dOT4D56EY5gEPmdXnsTEbniZ43GxZyNfkCKNop6zyFNYFbQqGbyPNY2eAx8Y8b8n3cB47G2lTU4zvkgfH11kL7YwbO3J8Fs6DMiuzMiuzMiuzMiuzMiuzMiuzMiuzMiuzMiuzMiuzMrvNbHhaOC2sWcjX4gijaKet8hS+d2gJhm8jfe9wFnjOpM5T+N7Bgu/h9w7nIm1qifFd8mBfPWehnXFjR47PwXlQZmVWZmVWZmVWZmVWZmVWZmVWZmVWZmVWZmVWZmVWZreZDU8rp4U1C/laHWEU7YxdnvC+rdZg+DbS9w7ngMfG9zKW2hl+73B7pE2tMb5LHuyrt1toZ9zYkePb4TwoszLHMRueNk4LaxbytTnCKNpZqzyF70/bguHbSPPY7cBjY5635Hs4j52PtKktxnfJg331vIV2xo0dOT4P56EY5gEPmdVn9TmJWX1Wn5OY1Wf1OYlZfVafk5jVZ/U5iVl9Vp+TmNVn9TmJWX1Wn5OY1Wf1OYlZfX74+Gx42jktrFnI1+4Io2jnrPLUh987tAfDt5G+dzgPPDa+l7Hke/i9w4VIm9pjfJc8OL4uWGhn3NiR4wtwHq505gEPmbVvPDTM2jeUOYlZ+4YyJzFr31DmJGbtG8qcxKx9Q5mTmLVvKHMSs/YNZU5i1r6hzEnM2jeUOYlZ+4YyJzFr31DmJGbtG8qcxKx9Q5mTmLVvKHMSswt9w/B0cFpYs5CvwxFG0W63yxOue9ARDN9G+t3OBeA5b8EfS+0Mf7dzMdKmjhjfJQ+Or4sW2hk3duT4IpwHZVbmOGbD08lpYc1Cvk5HGEWTuaIEtAPw3BJglscvsX4g0qZ8pJz9oyxnf0w5GTguZ+1ApNwyyHN3zVDe05w2ZdwYKWN/pI1lkOcClHGO05Xw+KUgvfNk+sQ2LgsZ77Rbb+6B6jWPb2d9Gzz+KLtcdVjvjTH1loB+E+/zrMvxtaBn4FjOffT5ZZDn6XDu74H+c0OkjJsijGWQ5z4o4wngVz5I3a+w/1wD7ZV6n2q33twD1Wse38H6NfD4/Xa56rDefEK9jRbOQ7Q+6cNSVxk8/nzoH88Fv3by49uhnBfGPL4j5nFL7aqLtmtnpF2m3mZOZ1Ks15TVBN5h2c2gS55Xgg8BsKXD05CrDIZed6dX7qbw9XRJ+uUeMWWVWuItS7/cwUruXymXW2/Kqki/3I2mrHGpl5urqwyG+nB65W5uMGVVpe/DUVPWeEvlZi35OyF93nC8VVvyoSb9/rB5UjC0TYTyZa3JfGp1FT7DyAfDt5E+w2gBnqb0eTZYamd4zWqNtCkfaROu64nX0FYL7cwEw/+rKw/HrTF11wbpetE2Ci/aYnjaHmIvpL5imRs9ZHbBZ1N3e/p1NxT733Ttlr2w1M5wbHUE8R5Lffg5OvbTDgvtzATD7y3Nw3EHnIdimFs9ZFafx8Zs6u5Mve5c0fc8d1r2wk47C/NBVxDvsdRXA3mwn3ZZaCd+Zitly3EXnAdlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZldpvZ1N2det2Fz++xbvEniPDI1m3ZCzvtLHx+3xPEeyz11UAePOc9FtqZgXqlbDnugfOgzMqszMqszMqszMqszMqszMqszMqszMqszMqszMqszG4zm7p70687vB8H6xZ/ggiPbL2WvbDUzvDz+74g3mOprwby4Dnvs9DODNQrZctxH5wHZVbmOGZT967U6y58n4d1iz9BhEe2XZa9sNPOwnywO4j3WOqrgTx4zndbaGcG6pWy5Xg3nIdimFs9ZFaf1eckZvVZfU5iVp/V5yRm9Vl9Npv6rD6rz+pzGszqs/qcxKw+q89JzOqz+pzErD4/fHw2de9Jve768PN7rFv8CSI8su2x7IWddhY+v+8P4j2W+mogD/bTfgvtzEC9UrYc98N5uNKZWz1k1r7x0DBr31DmJGbtG8qcxKx9Q5mTmLVvKHMSs/YNZU5i1r6hzEnM2jeUOYlZ+4YyJzFr31DmJGbtG8qcxKx9Q5mTmLVvKHMSs/YNZU5i1r6hzEnMLvQNU/fe9OsO72fHusWfIMIj217LXlhqZ/j7l31BvMdSXw3kwX66z0I7M1CvlC3H++A8KLMyxzHjOKlMr+7w93BSRwnvjXYtp0tB28/pMtCu43Q5aNdzugK0A5weB9oN0B7RbuR0FWg3cXo8aDdDWva3cHoCaAc5XQ3arZyuAe0QpyeCdpjTk0A7wunJoA1wegpog5yeCtpRTk8D7Rinp4N2nNMzQDvB6a2g3cbpRtBOcjoP2ilON4F2mtMtoJ3hdBtoZzndDto5TneAdjunO0E7z+ku0C5wuhu0i5zuAe0OTveCdien+0C7i9O7QLub07tBewSn94D2SE73g/YoTm8G7dEx2mM4jd4/NkZ7HKdngnYPp2eB9nhOzwbtXk7PAe0JnJ4L2hM5PQ+0J3F6Pmj3cXoBaE/m9ELQnsLpWtCeyulFoD2N04tBezqnl4D2DE4vBe2ZnF4G2v2cXg7aszi9ArRnc3olaM/h9CrQnsvp1aA9j9NrQHs+p9eC9gJOrwPthZzG8/siTu8F7cWcxvnvJZzG+e/POI3zn8zB+0CTOfha0GQO3g+azMHXgSYM14MmDAdAE4YbQJM5+EbQZA6+CTSZg3FOljn4FtBkDj4ImszBt4Imc/Ah0GQOPgyazMFHQJM5eAA0mYMHQZM5+ChoMgcfA03m4OOgyVg+AZqM5dtAk7F8EjQZy6dAk7F8GjQZy2dAk7F8FjQZy+dAk7F8O2i1nD4PmozlC6DJWL4ImozlO0CTsXwnaDKW7wJNxvLdoMlYfgRoMpYfCZqM5UeBJmP50aCt4fRjQJOx/FjQZCw/DrT1nL4HtKs4/XjQ6jh9L2gbOP0E0HKcfiJo9Zx+EmgNnL4PtI2cfjJomzj9FNDkOvRU0K7m9NNA28Lpp4Mmrx+eAdo2Tj8TtO2cvh+0azj9LNB2cPrZoO3k9HNAy3P6uaDJPPo80OQ1yvNBa+b0C0CT1y0vBE3et78INHkt82LQ5LXMS0CT1zIyJ5u5z8xX8tqlPSavaJVQTz5I932B1CVly7HUZxjlNVcHaJLG9fFa02cM32cLSxmXK/2uFXTJ8wOetGU+x80wNqfO2BAySr8qj/jYDIyS5ycPwNhkgdFO2wt9KA9tNOnOmLZLnl9OHvLp15zGcdQFPlZOufxx2Ub6TKkJvLSwJlp4vncBZx7qwbrx/riU6h52b1smGH7vnehlkB43ZShv9B498VrYzbiW90Mj3dvXFnke3tvXG9P+fJBu+/siPH0RZnNOfgf9TPqRYWqxxNSb4FEHeCR5rgZN5nh8TyzjB+f/P9X/ltWAJt7hNQHn/w5LjF0JjFIfzr8VCe3A+XcG94e4+RfXncX/brMxJ6P/MkdKnU2gS565zG369AF+04GvIfB9Y0dEs3R9HvE1hNT3QK8humMYa1NjzB2xdf7M+0jzOk7GblOk3XL9M++5WyLtzwfDP2dNkwvnI7k+4bxntjLIs2qE8VAZ2FgPuPB6JP22D78+RF+PYNslz3oYU3XwekPOE74e2RnzuGwjvR6xfE2sw+/75HzHXY/x+8qU6h72XaO8HpF6RC+D9A54PRL9zlS8FnYzR8jrmJG+a+2IPA+/a90V0/58kG77o6+PdkeYzTmph362E16P2HpftyvBoxbwSPI0gybXC/zsXZ6D1xJb7yVaItwtMYyitQFP+q/rGuqKfd/RAjw2XgtZev067L3hpSDdeSn6+rIt4hW+vmwG/zot+DdS/5L6lFmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZlVmZ88qszMqszMqszIEy1z24TZmVWZmVWZmVWZmVWZmVWZmV2UvmpPv7JF+7I4yidfC+GjS8N0vuz0jxN+IbkCWAevH+w+4IsyW/6vDePykf77WzeZ6i9zhuiXBk4PxURPLgPY6S5xZmjrunKxvzXNPOzaVD7eRkque6MhhaLyafYrm4Xk0AfuGWh7QwVAZDa9qkyTM+GFqz5sLFs+cPHRvsHzw0kAG0sggm7hH9EhyXgI7p0hjtEuxxmR6pF5fpwaXVSiIW4fJAkr8quNzeVMeCVLgZys8wXCk3opwhDVQlQ4nvZm0gM4eZ8Wzu0TRjwNwObm67MsPCrM1j1uIxa++YtXbM2jpmLR2zdo5ZK8esjWPWwjFr35i1bmqDwlo2i4PCWjVLg8JaNMuDwlozK4PCWjJm7Zg1QWFtGLMWzPqgsNaLWdvFTHRm7RazVotZm8WsxbIJ2vdJaLO5P9yMT7OWilk7xayVYtZGMWuh7GSvG4PC/abmOmfmTHPPqbnGmGuKmQPMvGHGtpk7zZxm7gPsCwr3fJn708z9eOb+NLOulFkLyqz9ZNZ6Mms7mbWczNpNZq0mszaTWYvJrL1k1loyayvdGhTWTjocFNZGGggKax8dDQprGx0PCmsXmbWKTgaFtYjM2kNngsLaQmYtIbN2kFkryKwNZNYCMmv/mLV+zNo+Zi0fs3aPWavHrM1j1uIxa++YtXbM2jr3BIW1c+4NCmvjPDEorH1zX1BY2+YpQWHtGrNWjVmbxqxFY9aeuT8orC1j1pIxa8eYtWLM2jBmLRiz9otZ68Ws7WLWcjFrt5i1Wv6c4i8o/pLipRR/RfHXFC+j+BuKv6X4O4qXU7yC4u8p/oHiHyn+ieKVFK+ieDXFP1O8huJfKP6V4t8o/p3iPyj+k+K/KP6b4n8o/pfitRT/R/E6itdTvIHijRRvongzxVso3krxNoq3U7yD4p0U76J4N8V7KN5L8T6K91N8gOKDFB+i+DDFRyg+SvExio9TfCIo9MNPUXya4jMUn6X4HMXnKb5A8UWKL1F8meIrFF+l+BrF1ym+QfFNim9RfJviOxTfpfgexfcpfkDxQ4ofUfyY4icUP6X4GcXPKX5B8UuKX1H8muI3FL+l+B3F74PCZPYHCjMZZChKKEopyijKKSooxlFUUlRRjKfIUkygqM4MrTeGk1c/Tzayllbj+fOHHlF74szA4N21Z++4WHv2aO3hs3ecGbiAT3o2T4+ysNaRQ6dO1V48W3vowoXB8xcPnj5098HDJy4evHDikYP4tJdXjqGuV1WOqa7v8/oXsjZZ58i1/HjyGNCm832sspbYoYsXB0+fuxjSDQzU3nXi4vHas3cOnj966uxd+LyVU8ZQ2c1TR1/ZH5/0/2ybetaaiAMA", "debug_symbols": "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7btf++7Xvvu1737tu1/77te++7Xvfu+73/vu9777ve9+77vf++73vvu9737vu9/77s+++7Pv/uy7P/vuz777s+/+7Ls/++7Pvvuz7/7dd//uu3/33b/77t999++++3ff/bvv/t13f7/rs/2uz/a7Ptvv+my/63v9We/+ldy/UvtXev/K7F/Zd3+/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7P9rs+2+/6bL/rs/2uz/a7Ptvv+my/67P9rs/2uz7b7/psv+uz/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO/td39nv+s5+13f2u76z3/Wd/a7v7Hd9Z7/rO3/ZP0Cy8+Of6db10//Lva/+4+L6858C+Hz5XM/PShxTSWAqSUwlhamkMZUMppJLqWSzo/7OlRimEkzGXkzGXkzGXkzGXkzGXkzGXkzGXkrG+kPJWH8oGesPJWP9oWSsP5SM9YeSsf5QMtYfSsb6Q8lYfzAZa5iMNUzGGiZjDZOxhslYw2SsYTLWMBlrmIw1TMYeTMYeTMYeTMYeTMYeTMYeTMYeTMYeTMYeTMYeTMY6JmMdk7GOyVjHZKxjMtYxGeuY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" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 20, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [{ "start": 4, "end": 24 }], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [24, 25, 26, 27] }, "bytecode": "H4sIAAAAAAAA/+2ZyXLbMAyGSUnWYsfK5sRLuu9HKXbS9qZb36Od9v2foFODIUYw3fTSHwfMhDMaUxT18yNAUiDt3UO62V8+5vP9NXHHiZ8P8bf7v9QDtTpNTm+EMzPCmQM5iW3hdMdpoWBXNOPEAGNpgLEywFgbYGwMME4NMM4MMJ4YYJwbYGwNMJ4aYDwzwHhugPHCAOOlAcaFAcYrA4zXBhiXQEYvGIuYX+2v9f7auIc9+/dYXrsxDSiGXf+DYnZufOUOE8UmGd8UY1nO3KKM+TNRxmcMeTH2oYT3oduRboXWjbEZ270UNikTn1DbG1FWwPvYf6mFPWG6nZrtwthm+/DetRL3bKsm5oFnML1s28erEW266CPOr0Vdrsf2yISPKVGcyf5v/vFekbzXijrlX/o/OGz/q4SnSpgnkYkSxSqrYrRLyoY8HyPdKV73wOdF4pOpKOc630Q/ncgPEJ67MK88XPc+rAMZXvcraeVw3c/bOhlTGN3bTq6HQDts5TcKqPtLrrNA3Z+1G8cw0G87Of+Burdy/gPtEM7MZkrj4UTJvnOledHi7RB4T5XmxRle9460zvF+C+PhQslvl3g7hPVhoeS3K6V5ca1k3yWeN4yzldI4WyvNi42SfW/wdgi6z/C64Tv0HG/fEEe9wPPek9ZLPG/4br7C84Z5/Fpp/L5RGr9v8bxh/X2H1w3r73slv31Q8ttHPO+WYwdKn4Q+x2wDrK1uJ8+DOPnkfhB5GTfO8Dy9Uj87GZv+BuqSrdrEVnViq1bUkfFxq2A/L9plbclB6Yn5ifkx5pk7nONcJp/zb5b0RZ6jc/3GHa8n0A5xg/Kg30c4ekYHNXSoQgcglRsPAaeis/MITJtBWnxpk0UbItq80EaDNgUUwC9FG4/9uXGU/gAif8QsrigAAA==", "debug_symbols": "ndZNCoMwEEDhu2QtxZqZ8ecqpYvUWhBERdNCEe9eQ+kB+nbJDG/3LWZzw9SG2E/j6prN5afCXHPZ3DqHMQ3WGJbomqLSzHXj/XjV+Z65Rz90aer3a5aikkQViWoQ+ZxEZxIVJPIkEhIpiYgIT0R4IsITEUJECBEhRIQQEUJECBEhRIQQEUJECBGhRIQSEUpEKBGhRIQSEUpEKBGhRIQSEUZEGBFhRIQREUZEGBFhRIQREUZEGBFR/ivi+L3C0ofb0KXzKi2fY/u7to5vfM/fzf4B" }, { "name": "pay_fee", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "fee_limit", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "fee_limit": [{ "start": 54, "end": 55 }], "inputs": [{ "start": 0, "end": 54 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] }, "visibility": "public" }, "return_witnesses": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269] }, "bytecode": "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", "debug_symbols": "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f/u6v33d377ub1/3t6/729f97ev+9nV/+7q/fdvfvu1v3/a3b/vbt/3t2/72bX/7tr9929++7W/f97fv+9v3/e37/vZ9f/u+v33f377vb9/3t+/724/97cf+9mN/+7G//djffuxvP/a3H/vbj/3tx/72c3/7ub/93N9+7m8/97ef+9vP/e3n/vZzf/u5v/3a337tb7/2t1/726/97df+9mt/+7W//drffu1vv/e33/vb7/3t9/72e3/7vb/93t9+72+/97ff+9uf/e3P/vZnf/uzv/3Z3/7sb3/2tz/725/97e+zPtlnfbLP+mSf9ck+6/v6p979R2L/kdx/pPYf6f1H9re/z/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan/9gCyYofO90q//g/uffLdXH1cwvg5/fvtfhZidFU4jSVBE0lSVNJ0VTSNJUMSyWbjPq4EqGphGbGDs2MHZoZOzQzdmhm7NDM2KGZscMyY+3DMmPtwzJj7cMyY+3DMmPtwzJj7cMyY+3DMmPtwzJj7cMyY+1DM2OFZsYKzYwVmhkrNDNWaGas0MxYoZmxQjNjhWbGCs2MVZoZqzQzVmlmrNLMWKWZsUozY5VmxirNjFWaGas0M9ZoZqzRzFijmbFGM2ONZsYazYw1mhlrNDPWaGas0cxYp5mxTjNjnWbGOs2MdZoZ6zQz1mlmrNPMWKeZsU4zY4NmxgbNjA2aGRs0MzZoZmzQzNigmbFBM2ODZsYGzYxNmhmbNDM2aWZs0szYpJmxSTNjk2bGJs2MTZoZmzQztmhmbNHM2KKZsUUzY4tmxhbNjC2aGVs0M7ZoZmzRzNimmbFNM2NpPC+j8byMxvMyGs/LaDwvo/G8jMbzMhrPy2g8L6PxvIzG8zIaz8toPC+j8byMxvMyGs/LaDwvo/G8nMbzchrPy2k8L6fxvPzDMmOdxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPC+n8bycxvNyGs/LaTwvp/G8nMbzchrPy2k8L6fxvJzG83Iaz8tpPK+g8byCxvMKGs8raDyv+LDM2KDxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2g8r6DxvILG8woazytoPK+g8byCxvMKGs8raDyvoPG8gsbzChrPK2k8r6TxvJLG80oazys/LDM2aTyvpPG8ksbzShrPK2k8r6TxvJLG80oazytpPK+k8bySxvNKGs8raTyvpPG8ksbzShrPK2k8r6TxvJLG80oazytpPK+k8bySxvNKGs8raTyvpPG8ksbzShrPK2k8r6TxvJLG80oazytpPK+k8bySxvNKGs8raTyvpPG8ksbzShrPK2k8r6TxvJLG80oazytpPK+k8bySxvNKGs8raTyvpPG8ksbzShrPK2k8r6TxvJLG80oazytpPK+k8bySxvNKGs8raTyvpPG8ksbzyn/Q8yr9UUnnP1rJsFTyD3pef2UlQlOJ0lRiNJU4TSVBU8lixv74SO0/0vuPzPojGxfpx0dk/xHdf8T2H/H9R2L/kf3t9/72e3/7vb/92d/+7G9/9rc/+9uf/e3P/vZnf/uzv/3Z3/6sb78+n/1HZP8R3X/E9h/x/Udi/5Hcf6T2H+n9R/a3L/vbl/3ty/72ZX/7sr992d++7G9f9rcv+9uX/e3r/vZ1f/u6v33d377ub1/3t6/729f97ev+9nV/+7a/fdvfvu1v3/a3b/vbt/3t2/72bX/7tr9929++72/f97fv+9v3/e37/vZ9f/u+v33f377vb9/3tx/724/97cf+9mN/+7G//djffuxvP/a3H/vbj/3t5/72c3/7ub/93N9+7m8/97ef+9vP/e3n/vZzf/u1v/3a337tb7/2t1/726/97e+zvtpnfbXP+mqf9dU+66t91lf7rK/2WV/ts77aZ321z/pqn/XVPuurfdZX+6yv9llf7bO+2md9tc/6ap/11T7rq33WV/usr/ZZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/WWZ9+1lnf10dk/xHdf8T2H/H9R2L/kdx/pPYf6f1H9rcv+9uX/e3L/vZlf/uyv33Z377sb1/2ty/725f97ev+9nV/+7q/fd3fvu5vX/e3r/vb1/3t6/72dX/7tr9929++7W/f9rdv+9u3/e3b/vZtf/u2v33b377vb9/3t+/72/f97fv+9n1/+76/fd/fvu9v3/e3H/vbj/3tx/72Y3/7sb/92N9+7G8/9rcf+9uP/e3n/vZzf/u5v/3c337ubz/3t5/728/97ef+9nN/+7W//drffu1vv/a3X/vbr/3t1/72a3/7tb/92t9+72+/97ff+9vv/e33/vZ7f/u9v/3e337vb7/3tz/725/97c/+9md/+7O//dnf/uxvf/a3P/vb32d9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33WJ/usT/ZZn+yzPtlnfbLP+mSf9ck+65N91if7rE/2WZ/ssz7ZZ32yz/pkn/XJPuuTfdYn+6xP9lmf7LM+2Wd9ss/6ZJ/1yT7rk33Wp/usT/dZn+6zPt1nfV9/w73/SOw/kvuP1P4jvf/I/vb3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPt1nfbrP+nSf9ek+69N91qf7rE/3WZ/usz7dZ326z/p0n/XpPuvTfdan+6xP91mf7rM+3Wd9us/6dJ/16T7r033Wp/usT/dZn+6zPttnfbbP+myf9dk+67N91mf7rM/2WZ/tsz7bZ322z/psn/XZPuuzfdZn+6zP9lmf7bM+22d9ts/6bJ/12T7rs33WZ/usz/ZZn+2zPttnfbbP+myf9dk+67N91mf7rM/2WZ/tsz7bZ322z/psn/XZPuuzfdZn+6zP9lmf7bM+22d9ts/6bJ/12T7rs33WZ/usz/ZZn+2zPttnfbbP+myf9dk+67N91mf7rM/2WZ/tsz7bZ322z/psn/XZPuuzfdZn+6zP9lmf7bM+22d9ts/6bJ/12T7rs33WZ/usz/ZZn+2zPttnfbbP+myf9dk+67N91mf7rM/2WZ/tsz7bZ322z/psn/XZPuuzfdZn+6zP9lmf7bM+22d9ts/6bJ/12T7rs33WZ/usz/ZZn+2zPttnfbbP+myf9dk+6/N91uf7rM/3WZ/vsz7fZ32+z/p8n/X5Puvzfdbn+6zP91mf77M+32d9vs/6fJ/1+T7r833W5/usz/dZn++zPt9nfb7P+nyf9fk+6/N91uf7rM/3WZ/vsz7fZ32+z/p8n/X5Puvzfdbn+6zP91mf77M+32d9vs/6fJ/1+T7r833W5/usz/dZn++zPt9nfb7P+nyf9fk+6/N91uf7rM/3WZ/vsz7fZ32+z/p8n/X5Puvzfdbn+6zP91mf77M+32d9vs/6fJ/1+T7r833W5/usz/dZn++zPt9nfb7P+nyf9fk+6/N91uf7rM/3WZ/vsz7fZ32+z/p8n/X5Puvzfdbn+6zP91mf77M+32d9vs/6fJ/1+T7r833W5/usz/dZn++zPt9nfb7P+nyf9fk+6/N91uf7rM/3WZ/vs77YZ32xz/pin/XFPuuLfdYX+6wv9llf7LO+2Gd9sc/6Yp/1xT7ri33WF/usL/ZZX+yzvthnfbHP+mKf9cU+64t91hf7rC/2WV/ss77YZ32xz/pin/XFPuuLfdYX+6wv9llf7LO+2Gd9sc/6Yp/1xT7ri33WF/usL/ZZX+yzvthnfbHP+mKf9cU+64t91hf7rC/2WV/ss77YZ32xz/pin/XFPuuLfdYX+6wv9llf7LO+2Gd9sc/6Yp/1xT7ri33WF/usL/ZZX+yzvthnfbHP+mKf9cU+64t91hf7rC/2WV/ss77YZ32xz/pin/XFPuuLfdYX+6wv9llf7LO+2Gd9sc/6Yp/1xT7ri33WF/usL/ZZX+yzvthnfbHP+mKf9cU+64t91hf7rC/2WV/ss77YZ32xz/pin/XFPuvLfdaX+6wv91lf7rO+3Gd9uc/6cp/15T7ry33Wl/usL/dZX+6zvtxnfbnP+nKf9eU+68t91pf7rC/3WV/us77cZ325z/pyn/XlPuvLfdaX+6wv91lf7rO+3Gd9uc/6cp/15T7ry33Wl/usL/dZX+6zvtxnfbnP+nKf9eU+68t91pf7rC/3WV/us77cZ325z/pyn/XlPuvLfdaX+6wv91lf7rO+3Gd9uc/6cp/15T7ry33Wl/usL/dZX+6zvtxnfbnP+nKf9eU+68t91pf7rC/3WV/us77cZ325z/pyn/XlPuvLfdaX+6wv91lf7rO+3Gd9uc/6cp/15T7ry33Wl/usL/dZX+6zvtxnfbnP+nKf9eU+68t91pf7rC/3WV/us77cZ325z/pyn/XlPuvLfdaX+6wv91lf7rO+2md9tc/6ap/11T7rq33WV/usr/ZZX+2zvtpnfbXP+mqf9dU+66t91lf7rK/2WV/ts77aZ321z/pqn/XVPuurfdZX+6yv9llf7bO+2md9tc/6ap/11T7rq33WV/usr/ZZX+2zvtpnfbXP+mqf9dU+66t91lf7rK/2WV/ts77aZ321z/pqn/XVPuurfdZX+6yv9llf7bO+2md9tc/6ap/11T7rq33WV/usr/ZZX+2zvtpnfbXP+mqf9dU+66t91lf7rK/2WV/ts77aZ321z/pqn/XVPuurfdZX+6yv9llf7bO+2md9tc/6ap/11T7rq33WV/usr/ZZX+2zvtpnfbXP+mqf9dU+66t91lf7rK/2WV/ts77aZ321z/pqn/XVPuurfdZX+6yv9llf7bO+2md9tc/6ap/11T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvt5nfb3P+nqf9fU+6+t91tf7rK/3WV/vs77eZ329z/p6n/X1PuvrfdbX+6yv91lf77O+3md9vc/6ep/19T7r633W1/usr/dZX++zvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0+65t91jf7rG/2Wd/ss77ZZ32zz/pmn/XNPuubfdY3+6xv9lnf7LO+2Wd9s8/6Zp/1zT7rm33WN/usb/ZZ3+yzvtlnfbPP+maf9c0667PPOuv7+ojsP6L7j9j+I77/SOw/kvuP1P4jvf/I/vZlf/uyv33Z377sb1/2ty/725f97cv+9mV/+7K/fd3fvu5vX/e3r/vb1/3t6/72dX/7ur993d++7m/f9rdv+9u3/e3b/vZt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PMig8yCDzoMMOg8y6DzIoPMgg86DDDoPMug8yKDzIIPOgww6DzLoPMig8yCDzoMMOg8y6DzIoPMgg86DDDoPMug8yKDzIIPOgww6DzLoPMig8yCDzoMMOg8y6DzIoPMgg86DDDoPMug8yKDzIIPOgww6DzLoPMig8yCDzoMMOg8y6DzIoPMgg86DDDoPMug8yKDzIIPOgww6DzLoPMig8yCDzoMMOg8y6DzIoPMgg86DDDoPMuk8yKTzIJPOg0w6DzI/bDM76TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoNMOg8y6TzIpPMgk86DTDoPMuk8yKTzIJPOg0w6DzLpPMik8yCTzoMsOg+y6DzIovMgi86DrA/bzC46D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIIvOgyw6D7LoPMii8yCLzoMsOg+y6DzIovMgi86DLDoPsug8yKLzIJvOg2w6D7LpPMim8yD7wzazm86DbDoPsuk8yKbzIJvOg2w6D7LpPMim8yCbzoNsOg+y6TzIpvMgm86DbDoPsuk8yKbz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QSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNJ5kErnQSqdB6l0HqTSeZBK50EqnQepdB6k0nmQSudBKp0HqXQepNF5kEbnQRqdB2l0HqR92Ga20XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQdpdB6k0XmQRudBGp0HaXQepNF5kEbnQRqdB2l0HqTReZBG50EanQfpdB6k03mQTudBOp0H6R+2me10HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k03mQTudBOp0H6XQepNN5kE7nQTqdB+l0HqTTeZBO50E6nQfpdB6k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/61ef35+vxx/vx5/vx1/vx9/fxx/fx5/fx1/fx9//5x+f30+x98vx9+vx99vx9/vx98fx9+fx99fx9/fx99/3L9y3L9y3L9y3L9y3L9y3L9y3L9y3L9y3L9y3L9y3L963L963L963L963L963L963L963L963L963L963L923L923L923L923L923L923L923L923L923L923L9+3L9+3L9+3L9+3L9+3L9+3L9+3L9+3L9+3L9+3L9x3L9x3L9x3L9x3L9x3L9x3L9x3L9x3L9x3L9x3L953L953L953L953L953L953L953L953L953L953L913L913L913L913L913L913L913L913L913L913L993L993L993L993L993L993L993L993L993L993L/H/FUd81d1zF/VMX9Vx/xVHfNXdcxf1TF/Vcf8VR3zV33MX/Uxf9XH/FUf81f98ePvj+Pvz+Pvr+Pv7+PvP+7fY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qz7mr/qYv+pj/qqP+as+5q/6mL/qY/6qj/mrPuav+pi/6mP+qo/5qznmr+aYv5pj/mqO+av5+PH3x/H35/H31/H39/H3H/fvMX81x/zVHPNXc8xfzTF/Ncf81RzzV3PMX80xfzXH/NUc81dzzF/NMX81x/zVHPNXc8xfzTF/Ncf81RzzV3PMX80xfzXH/NUc81dzzF/NMX81x/zVHPNXc8xfzTF/Ncf81RzzV3PMX80xfzXH/NUc81dzzF/NMX81x/zVHPNXc8xfzTF/Ncf81RzzV3PMX80xfzXH/NUc81dzzF/NMX81x/zVHPNXc8xfzTF/Ncf81RzzV3PMX80xfzXH/NUc81dzzF/NMX81x/zVHPNXc8xf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1/+qVy/OzwP6+oA5PuBsXcbPA+T6AL0+wK4P8OsD4vqAvD7gupPtupPtupP9upP9upP9upP9upP9upP9upP9upP9upP9upP9upPjupPjupPjupPjupPjupPjupPjupPjupPjupPjupPzupPzupPzupPzupPzupPzupPzupPzupPzupPzupPrupPrupPrupPrupPrupPrupPrupPrupPrupPrupP7upP7upP7upP7upP7upP7upP7upP7upP7upP7upPnupPnupPnupPnupPnupPnupPnupPnupPnupPnuJPl87k+QK4P0OsD7PoAvz4grg/I6wPq+oC+PuC6k+W6k+W6k+W6k+W6k+W6k+W6k+W6k+W6k+W6k+W6k/W6k/W6k/W6k/W6k/W6k/W6k/W6k68ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL7lmvOSa8ZJrxkuuGS+5ZrzkmvGSa8ZLrhkvuWa85JrxkmvGS64ZL71mvPSa8dJrxkuvGS/9+PUBcX1AXh9Q1wf09QHXnXzNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeOl14yXXjNees146TXjpdeMl14zXnrNeOk146XXjJdeM156zXjpNeNl14yXXTNeds142TXjZR+/PiCuD8jrA+r6gL4+4LqTrxkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvOya8bJrxsuuGS+7ZrzsmvGya8bLrhkvu2a87JrxsmvGy64ZL7tmvPya8fJrxsuvGS+/Zrz849cHxPUBeX1AXR/Q1wdcd/I14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14yXXzNefs14+TXj5deMl18zXn7NePk14+XXjJdfM15+zXj5NePl14xXXDNecc14xTXjFdeMV3z8+oC4PiCvD6jrA/r6gOtOvma84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8YprxiuuGa+4ZrzimvGKa8YrrhmvuGa84prximvGK64Zr7hmvOKa8cprxiuvGa+8ZrzymvHKj18fENcH5PUBdX1AXx9w3cnXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNeec145TXjldeMV14zXnnNeOU145XXjFdeM155zXjlNeOV14xXXjNedc141TXjVdeMV10zXvXx6wPi+oC8PqCuD+jrA647+ZrxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquuGa+6ZrzqmvGqa8arrhmvuma86prxqmvGq64Zr7pmvOqa8aprxquvGa++Zrz6mvHqa8arP359QFwfkNcH1PUBfX3AdSdfM159zXj1NePV14xXXzNefc149TXj1deMV18zXn3NePU149XXjFdfM159zXj1NePV14xXXzNefc149TXj1deMV18zXn3NePU149XXjFdfM159zXj1NePV14xXXzNefc149THjpXf7Kv7lD+vHfnyvfkJ//rCI/+qn5yM/fnpE/tlP/yw+Xy6+Xi6+Xy5+Hi7+7O+lIcULbfFVP4tv/3Xx+nLx9nLx/nLxvC+s5s/i628Uz/vCfqN43hf2G8XzvrDf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" }, { "name": "balance_of_public", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "owner", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }], "param_witnesses": { "owner": [{ "start": 0, "end": 1 }] }, "return_type": { "abi_type": { "kind": "field" }, "visibility": "public" }, "return_witnesses": [1] }, "bytecode": "H4sIAAAAAAAA/81ayW7bMBDVYsd2FDtJ973qvrfykqTbQf2F3noKnFgpAqQxYDtAupx77w8bjWhO8cQIKVK/QUPAIDWi3zw+Dkc2Kd+bFd9+8hJCG4vYUlsn85U2ESvxHZ6/bLsO9pTlr5d0FnKQSlEXKdHRJ5AL26d29FmA+761S79VsPnAvcrmniSd3H/ocHbHkEK7CnwqfD5tpXEmddB8SuTr2/lErUJHqxb0WQD9agr6+eBXsOVa/J2Wc3AGOGNcxB43Lur8MXWWjzAaoGvd0RfHtWjbxLhMPOtffIq/RfC7ZNu+x829kcWqWGzhsQR26fMJ+HjQTil81rp1r5hDObgbvRwroOOu7+RYIZ9vB/M1kW8hXxNxNzBfE3HXMIfxcDuFPEKcNxO/Db4O25h32PEb8XXoYb5iz1uTjts1uC0lvsv8ectyrBWleFhViodzSvqe5+tg8uQFPq5ZxxeVcC8pxcNlfjyY58UVPl/zvLjKxzXxe40fv2YdX1daFzfouLPfZzf58WD0vaUUv7f5fM3vs5jP1+SdO3xcs97u8nHNerunFL/3+fNm4vcBXweTfx8qxe8jvg5mvT1W0veJUjw85es7yLGe8XUw6+K5kr4vlOLhpdK8vVLSIVHSoc2PM5PXO3y+5jnUVdKhpxQPa3x913OsdSV9N/h8TV5/zcc1+eyN0ry9peN2zbp4x+ebyX/jvLy3dQtsuKck+zUpzf9sjxxLCu1GCR//DPCJvPLzsIajGZ6R4b2fcF/2aAKwyXjDEuwm2GQ/qlXyXdSpCWNJbTuZrxid0FcK102ofYfj/+ZTK+GjdfYj8yPYcl3T1aKwl8Yek+SLqsUV/uKvAn0ObI05Rorv2FPveIzjfEnfoETHqVfMB6c5b9r5S0HfNfDdKBnvD4crljLeqbVjXhH+eI3nmrhnvvIP43Xn1DUgvxA44JgiGFOt5D6ewbpji0p0wDyJ+uKZEfNsG89gUiJuzr3iFctJzxM8B1J4N6C9CHqOJ8NR/3P2MesPfKBWcWhijdSncB2AHdthiW0KdQRDFr+5TcKgCrbAkQhf58ClcOwVntTWyXzF5DpxeNJ7Qj6QxX4TW8se64fRqP813t0fZIfx8GASD3fireHB/mCMX/pua9no3O7v7cWTYdwfj7PRZPNL/3Bza3eyOd79lv35zm9B8GR/3SQAAA==", "debug_symbols": "5ZzRittADEX/xc+hSDMaSZNfKX1ItykEQnbZpIUS8u91qO24xF3TkF10yZuNNZ4zxtwzDkTHZvv8tDpsnnf7Znls6JM2y8/HZv+y2p3P94fV66FZpmR50ax3386HtZ4WzffNdt2eeD4trqor98VVdahVmiiV6tTVFhK53Jjk9GXR4lgsHI+FU2PhMAXj4WA8KRhPDsYjwXhKMJ5g4czB0pmDxTMHy+cULJ9TsHxOwfI53SGfmYS7aqbqbxP1ODRzUzXtKrXmyy1zhy2Y2AUTWzGxDRPbMbErJHYmTGzGxE6Y2JiWzJiWzJiWzJiWzJiWzJiWzJiWFExLCqYlBdOSgmlJwbSkYFpSMC0pmJYUTEsKpiULpiULpiULpiULpiULpiULpiULpiULpiULpiULpiUV05KKaUnFtKRiWlIxLamYllRMSyqmJRXTkoppScO0pGFa0jAtaZiWNExLGqYlDdOShmlJw7SkYVrSMS3pmJZ0TEs6piUd05KOaUnHtKRjWtIxLemzlsykc9jMpcdm0fEc18XZUlcrfMFhpu7PeRSMh4PxpGA8ORiPBOMpwXg0GI8F4/FgPMHymSlYQDMFS2imYBHNFCyj221ONKBgKc0ULKaZguU0U7CgbjfswYD4fZO6m4Q/YpK7JGrRYRLztx8tq/WfV+3h6LONuEfK8ZAkHlKJh6TxkCweksdDqh+OVIZfY9TpL6SJNG5n76pzzmmoPrcouCq24l2t1XELg77jDT3OUvlxlpoeZ6n5cZYqwZc6VLeHdbzUjr+A82twfveBf/T+XPgtOr/1/EJ5gt/B+ee3FWxz/Jb6SdhGPYm4TAVK+0b3W51cUrlGmm/gcX8kmkGaTjkdni3JxBfoP9oezI3Sm0bZTaP8plH1P0e1Zz9Xr5vV1+363DH0fPHH7qlvINqeHn69/Lly+g0=" }, { "name": "mint_public", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "authwit::aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "amount", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "amount": [{ "start": 55, "end": 56 }], "inputs": [{ "start": 0, "end": 54 }], "to": [{ "start": 54, "end": 55 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "da", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l1", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "l2", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::DimensionGasSettings", "fields": [{ "name": "gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "teardown_gas_limit", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_fee_per_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hash", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l1_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l1_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] }, "visibility": "public" }, "return_witnesses": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270] }, "bytecode": "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", "debug_symbols": "5Z3driXJcV7fZa4JozL+MoKvYviClmmAAEEKIm3AIPju3rLmnG5Be9STM13LX4FXaoq7KmJPdnw5HWet5t9++OOf/+l3f/3Dn//0lx9++7cfrv9i0T/89r/+7Ye//PPv/vSv/5+//PV3//LXH357/eaH3//pf7z+799/88P//MMff//Db6397//tN//viTl9Iq/jJ9bxE3b8hB8/EcdP5PET9fOf+M1/+Ny6lv340XXZ/vz0ivl4/775/X3z++fe99d18/vXze+3m9/vN78/bn5/3vz+m+e3bp7funl+6+b53b/q97+5+Y8fff0yvrx/xcf7/eb31697f355f+e79++b3983v3/ufX9fN79/3fx+u/n9fvP74+b3583vv3l++9fNb3x80mJ9fvbj3z27b3z33Pfu+XUza1d9vNz8XSbPuvn9dvP7/eb3x83vz5vfXze/f9/8/r75/XPr+/26bn7/uvn9dvP7/eb3x83vz5vfXze/f9/8/r75/TfP77p5ftfN87tunt918/yum+d33Ty/6+b5XTfP77p5ftfN82s3z6/dPL928/zazfNrN8+v3Ty/dvP82q+b38s///B4pf2797/5dEZ+fDrretdNK3XjC+ymrvXx6XrfjUl141LdhFQ3KdVNSXVD5k3NZ/rV7HfdtFQ3o9RNXFLdLKluTKobl+ompLpJqW5KqhupLA6pLA6pLE6pLE6pLE6pLE6pLE6pLE6pLE6pLE6pLE6pLE6pLC6pLC6pLC6pLC6pLC6pLC6pLC6pLC6pLC6pLC6pLN5SWbylsnhLZfGWyuItlcVbKou3VBZvqSzeUlm8pbK4pbK4pbK4pbK4pbK4pbK4pbK4pbK4pbK4pbK4pbJ4pLJ4pLJ4pLJ4pLJ4pLJ4pLJ4pLJ4pLJ4pLJ4lLI4LqUsjkspi+NSyuK4lLI4LqUsjkspi+NSyuK4lLI4LqUsjksqi5dUFi+pLF5SWbyksnhJZfGSyuIllcVLKouXVBYvqSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSx2qSx2qSx2qSx2qSx2qSx2qSx2qSyW8u5CyrsLKe8upLy7kPLuQsq7CynvLqS8u5Dy7kLKuwsp7y6kvLuQ8u5CyrsLKe8upLy7kPLuQsq7CynvLqS8u5Dy7kLKuwsp7y6kvLuQ8u5CyrsLKe8upLy7kPLuQsq7CynvLqS8u5Dy7kLKuwsp7y6kvLuQ8u5CyrsLKe8upLy7kPLuQsq7CynvLqS8u5Dy7kLKuwsp7y6kvLuQ8u5CyrsLKe8upLy7kPLuQsq7CynvLqS8u5Dy7kLKuwsp7y6kvLuQ8u5CyrsLKe8upby7lPLuUsq7SynvLi+lLE4p7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7lLKu0sp7y6lvLuU8u5SyrtLKe8upby7lPLuUsq7SynvLqW8u5Ty7krKuysp766kvLuS8u7qUsrikvLuSsq7K9S72+Ufn94V77ppqW5GqRvUu/t2N0uqG5PqxqW6CaluUqqbkupGKouXVBYvqSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSw2qSx2qSx2qSx2qSx2qSx2qSx2qSx2qSx2qSx2qSx2qSwOqSwOqSwOqSwOqSwOqSwOqSwOqSwOqSwOqSwOqSxOqSxOqSxOqSxOqSxOqSxOqSxOqSxOqSxOqSxOqSwuqSwuqSwuqSwuqSwuqSwuqSwuqSwuqSwuqSwuqSzeUlm8pbJ4S2XxlsriLZXFWyqLt1QWb6ks3lJZvKWyuKWyuKWyuKWyuKWyuKWyuKWyuKWyuKWyuKWyuKWyeKSyeKSyeKSyeKSyeKSyeKSyeKSyeKSyeKSyeJSyeF9KWbwvpSzel1IW70spi/ellMX7UsrifSll8Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe9uS3l3W8q721Le3Zby7raUd7elvLst5d1tKe+upby7lvLuWsq7aynvri+lLG4p766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7lrKu2sp766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7lrKu2sp766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7lrKu2sp766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7lrKu2sp766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7lrKu2sp766lvLuW8u5ayrtrKe+upby7lvLuWsq7aynvrqW8u5by7hr17vrLp18/bnnXzZbqpqW6GaVuUO/udRKf3ex5182S6sakunGpbkKqGzJv5lofn571bqZIf8p9x4+ffv0y33UDzpTHso9uIuxdNybVTUp1U1LdbKluWqqbEepmSEfoZ3SjlDdzKeXNkI7Qz+gmpLpRyuK50Cyezzs8a33j0zH98e684sufBe367H0/uPd+cO+j0fu/dbPQWyH35zzN226WVDcm1Y1LdRNS3aRUNyXVzZbqpqW6GaVuTCqLTSqLTSqLTSqLTSqLTSqLTSqLTSqLTSqLTSqLXSqLXSqLXSqLXSqLXSqLXSqLXSqLXSqLXSqLXSqLQyqLQyqLQyqLQyqLQyr9Qir9Qir9Qir9Qir9SD/Isz+oBa/49btu0ib67r3bg3snqcNvkS6D2jjf7kaJAhrUxvl2N6PUDWrjfLsbkjqcvT+76XjXjUl141LdhFQ3KdVNSXWzpbppqW5GqRvUxvl2N2gWW312s992Y1LduFQ3IdVNSnVTUt1sqW5aqptR6ga1cb7djVQWt1QWt1QWt1QWt1QWt1QWt1QWt1QWt1QWj1QWj1QWj1QWj1QWj1QWj1QWj1QWj1QWj1QWj1IWr+tSCuNXO0pp/GpHKY5f7Sjl8asdpUB+taOUyK920EieD5HfL9tv29la7bRWOyPVDvo/iPUz2lla7ZCYwRWfOuA19bYd12qntNrZWu20Vjsj1Q6qU/2MdpZWO2TurPwU6W3NNz79Tbzp1bw/ufl4cvOp0fxHO+T9sFZ+tLPifTtbq53Wamek2kEVr5/RztJqx7Taca12Qqud1GpHK5VdK5VdK5VdK5VDK5VDK5VDK5VDK5VDK5VDK5VDK5VDK5VDK5VDK5VTK5VTK5VTK5VTK5VTK5VTK5VTK5VTK5VTK5VTK5VJQc6tPhVVK3vbztJqx7Taca12Qqud1GqntNrZWu20Vjsj1c7WSuWtlcpbK5W3VipvrVTeWqm8tVJ5a6Xy1krlrZXKrZXKrZXKrZXKrZXKrZXKrZXKrZXKrZXKrZXKrZXKo5XKo5XKo5XKo5XKo5XKo5XKo5XKo5XKo5XKI5XK65JK5XVJpfK6pFJ5XVKp/PrJtVY7Uqm8LqlUXpdUKq9LKpXXpZXKSyuVl1YqL61UXlqpvLRSeWml8tJK5aWVyksrlZdWKptWKptWKptWKptWKptWKptWKptWKptWKptWKptWKrtWKrtWKrtWKrtWKrtWKrtWKrtWKrtWKrtWKrtWKodWKodWKodWKodWKodWKodWKodWKodWKodWKodWKqdWKqdWKqdWKqdWKqdWKqdWKqdWKqdWKqdWKqdWKmu5fUvL7Vtabt/ScvuWltu3tNy+peX2LS23b2m5fUvL7Vtabt/ScvuWltu3tNy+peX2LS23b2m5fUvL7Vtabt/ScvuWltu3tNy+peX2LS23b2m5fUvL7Vtabt/ScvuWltu3tNy+peX2LS23b2m5fUvL7Vtabt/ScvuWltu3tNy+peX2LS23z7TcPtNy+0zL7TMtt88uqVQ2LbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7TcvtMy+0zLbfPtNw+03L7TMvtMy23z7TcPtNy+0zL7TMtt8+03D7Tcvtcy+1zLbfPtdw+13L7/JJKZddy+1zL7XMtt8+13D7Xcvtcy+1zLbfPtdw+13L7XMvtcy23z7XcPtdy+1zL7XMtt8+13D7Xcvtcy+1zLbfPtdw+13L7XMvtcy23z1G37/XHqI92Xv8c3rYzUu2gbt/PaIdMZd/x2c7Ot+2YVjuh1U5qtVNa7WytdlqqnRMD6eORPH+kzh/Z54/0+SNz/MiJWfLxyDp/xM4f8fNHzk8/z08/z08/z08/z08/z0+/zk+/zk+/zk+/zk+/zk+/zk+/zk+/zk+/zk+/zk9/n5/+Pj/9fX76+/z09/np7/PT3+env89Pf5+f/j4//T4//T4//T4//T4//T4//T4//T4//T4//T4//T4//Tk//Tk//Tk//Tk//Tk//Tk//Tk//Tk//Tk//Tk+/biu80fW+SN2/oifPxLnj+T5I3X+yD5/pM8fOT/9dX766/z01/npr/PTX+env85Pf52f/jo//XV++uv89O389O389O389O389O389O389O389O389O389O389P389P389P389P389P389P389P389P389P389P389OP89OP89OP89OP89M93fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL853fXG+64vzXV+c7/rifNcX57u+ON/1xfmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/ryfNeX57u+PN/15fmuL893fXm+68vzXV+e7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmur853fXW+66vzXV+d7/rqfNdX57u+Ot/11fmub5/v+vb5rm+f7/r2+a5vn+/69vmub5/v+vb5rm+f7/r2+a5vn+/69vmub5/v+vb5rm+f7/r2+a5vn+/69vmub5/v+vb5rm+f7/r2+a5vn+/69vmub5/v+vb5rm+f7/r2+a5vn+/6tp2f/vmub5/v+vb5rm+f7/r2r/vLB3d+/D2du77+C+He/mVze//4Wb++vNfzs5OU6aRkOtkynbRMJ6PSycnW9+ZOlkwnJtOJy3Qik7Ehk7Ehk7Ehk7Ehk7Ehk7Epk7Epk7Epk7Epk7Epk7Epk7Epk7Epk7Epk7Epk7Elk7Elk7Elk7Elk7Elk7Elk7Elk7Elk7Elk7Elk7FbJmO3TMZumYzdMhm7ZTJ2y2TslsnYLZOxWyZjt0zGtkzGtkzGtkzGtkzGtkzGtkzGtkzGtkzGtkzGtkzGjkzGjkzGjkzGjkzGjkzGjkzGjkzGjkzGjkzGjkrG9qWSsX2pZGxfKhnbl0rG9qWSsX2pZGxfKhnbl0rG9qWSsX3JZOySydglk7FLJmOXTMYumYxdMhm7ZDJ2yWTs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X2qZ7ZdcZi+5zF5ymb3kMnvJZfaSy+wll9lLLrOXXGbLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQbqcB+lyHqTLeZAu50G6nAfpch6ky3mQLudBupwH6XIepMt5kC7nQYacBxlyHmTIeZAh50HGpZbZIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kyHmQIedBhpwHGXIeZMh5kCHnQYacBxlyHmTIeZAh50GGnAcZch5kynmQKedBppwHmXIeZF5qmZ1yHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwHmXIeZMp5kCnnQaacB5lyHmTKeZAp50GmnAeZch5kynmQKedBppwH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R7g+R7i+QLi+QLi+QLi+QLi+uAKpkkiVQqpspEojVZDZR7i+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+QLi+RLi+RLi+RLi+RLi+vAKpkkiVQqpspEojVZDZR7i+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+RLi+Qri+Qri+Qri+Qri+ugKpkkiVQqpspEojVZDZR7i+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+Qri+jXB9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KaTKRqo0UgWZfYTrc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4Trc4TrC4TrC4TrC4TrC4TriyuQKolUKaTKRqo0UgWZfYTrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrC4TrS4TrS4TrS4TrS4TryyuQKolUKaTKRqo0UgWZfYTrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrS4TrK4TrK4TrK4TrK4TrqyuQKolUKaTKRqo0UgWZfYTrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4TrK4Lry5/4+2GuHx+6vvF+c/MfP/r6ZXx+eq34LNB3F5ibC7z/wfH3LLDuLmB3F/C7C8TdBfLuAnV3gV85yTs/C/T7An13gbm3wE/89S7fs8C6u4DdXcDvLhB3F8i7C9TdBfbdBfruAndP8rp7ktfdk7x+5STnl/ug820Bv7tA3F0g7y5QdxfYdxfouwvMzQXsurvAurvA3ZNsd0+y3T3Jdvck292TbHdPst09yXb3JPvdk+x3T7LfPcl+9yT73ZPsd0+y3z3Jfvck+92T7HdPctw9yXH3JMfdkxx3T3LcPclx9yTH3ZMcd09y3D3Jcfck592TnHdP8vsfG1rtH5/z6+s/Xl+fj+Uve6x+2WP7lz3Wv+yx+UWPvf9rD8o+fp5U1W8fq1/22P5lj/Uve2wOH3v9p//9u3/5w+/++x9//5fXE//6X/6vP/3TX//w5z/9+B//+n/++d/+m7//Xw==" }], "outputs": { "structs": { "functions": [{ "kind": "struct", "path": "GasToken::mint_public_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::mint_public_parameters", "fields": [{ "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "amount", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "GasToken::check_balance_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::check_balance_parameters", "fields": [{ "name": "fee_limit", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "GasToken::claim_public_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::claim_public_parameters", "fields": [{ "name": "to", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "amount", "type": { "kind": "field" } }, { "name": "secret", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "GasToken::pay_fee_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "GasToken::pay_fee_parameters", "fields": [{ "name": "fee_limit", "type": { "kind": "field" } }] } }, { "name": "return_type", "type": { "kind": "field" } }] }] }, "globals": { "storage": [{ "kind": "struct", "fields": [{ "name": "balances", "value": { "kind": "struct", "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "1" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, PublicMutable<U128>>" } }] } }] }] } }, "file_map": { "2": { "source": "// docs:start:eq-trait\ntrait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\nimpl Eq for Field { fn eq(self, other: Field) -> bool { self == other } }\n\nimpl Eq for u64 { fn eq(self, other: u64) -> bool { self == other } }\nimpl Eq for u32 { fn eq(self, other: u32) -> bool { self == other } }\nimpl Eq for u8 { fn eq(self, other: u8) -> bool { self == other } }\nimpl Eq for u1 { fn eq(self, other: u1) -> bool { self == other } }\n\nimpl Eq for i8 { fn eq(self, other: i8) -> bool { self == other } }\nimpl Eq for i32 { fn eq(self, other: i32) -> bool { self == other } }\nimpl Eq for i64 { fn eq(self, other: i64) -> bool { self == other } }\n\nimpl Eq for () { fn eq(_self: Self, _other: ()) -> bool { true } }\nimpl Eq for bool { fn eq(self, other: bool) -> bool { self == other } }\n\nimpl<T, N> Eq for [T; N] where T: Eq {\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T] where T: Eq {\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0 .. self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<N> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B) where A: Eq, B: Eq {\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C) where A: Eq, B: Eq, C: Eq {\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D) where A: Eq, B: Eq, C: Eq, D: Eq {\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E) where A: Eq, B: Eq, C: Eq, D: Eq, E: Eq {\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3) & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\nstruct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n// docs:start:ord-trait\ntrait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else {\n if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n\nimpl<T, N> Ord for [T; N] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T] where T: Ord {\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0 .. self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B) where A: Ord, B: Ord {\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C) where A: Ord, B: Ord, C: Ord {\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D) where A: Ord, B: Ord, C: Ord, D: Ord {\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E) where A: Ord, B: Ord, C: Ord, D: Ord, E: Ord {\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n", "path": "std/cmp.nr" }, "3": { "source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index as u64 < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen as u64, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n", "path": "std/collections/bounded_vec.nr" }, "20": { "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n", "path": "std/field.nr" }, "30": { "source": "mod poseidon;\nmod mimc;\nmod poseidon2;\nmod pedersen;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(sha256)]\n// docs:start:sha256_slice\npub fn sha256_slice(input: [u8]) -> [u8; 32]\n// docs:end:sha256_slice\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s_slice\npub fn blake2s_slice(input: [u8]) -> [u8; 32]\n// docs:end:blake2s_slice\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<N>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3_slice\npub fn blake3_slice(input: [u8]) -> [u8; 32]\n// docs:end:blake3_slice\n{}\n\n// docs:start:pedersen_commitment\nstruct PedersenPoint {\n x : Field,\n y : Field,\n}\n\npub fn pedersen_commitment<N>(input: [Field; N]) -> PedersenPoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n// docs:start:pedersen_commitment_slice\npub fn pedersen_commitment_slice(input: [Field]) -> PedersenPoint {\n pedersen_commitment_with_separator_slice(input, 0)\n}\n// docs:end:pedersen_commitment_slice\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator<N>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[foreign(pedersen_commitment)]\npub fn __pedersen_commitment_with_separator_slice(input: [Field], separator: u32) -> [Field; 2] {}\n\npub fn pedersen_commitment_with_separator<N>(input: [Field; N], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\npub fn pedersen_commitment_with_separator_slice(input: [Field], separator: u32) -> PedersenPoint {\n let values = __pedersen_commitment_with_separator_slice(input, separator);\n PedersenPoint { x: values[0], y: values[1] }\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<N>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n// docs:start:pedersen_hash_slice\npub fn pedersen_hash_slice(input: [Field]) -> Field\n// docs:end:pedersen_hash_slice\n{\n pedersen_hash_with_separator_slice(input, 0)\n}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator<N>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_hash)]\npub fn pedersen_hash_with_separator_slice(input: [Field], separator: u32) -> Field {}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut inputs_as_bytes = &[];\n\n for input in inputs {\n let input_bytes = input.to_le_bytes(32);\n for i in 0..32 {\n inputs_as_bytes = inputs_as_bytes.push_back(input_bytes[i]);\n }\n }\n\n let hashed_input = blake2s_slice(inputs_as_bytes);\n crate::field::bytes32_to_field(hashed_input)\n}\n\n#[foreign(keccak256)]\n// docs:start:keccak256\npub fn keccak256<N>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{}\n\n#[foreign(keccak256)]\n// docs:start:keccak256_slice\npub fn keccak256_slice(input: [u8], message_size: u32) -> [u8; 32]\n// docs:end:keccak256_slice\n{}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<N>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: [Field]);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self]);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self as Field]);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, &[self.lo as Field, self.hi as Field]);\n }\n}\n\nimpl<T, N> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n", "path": "std/hash.nr" }, "33": { "source": "// Regular merkle tree means a append-only merkle tree (Explain why this is the only way to have privacy and alternatives if you don't want it)\n// Currently we assume that it is a binary tree, so depth k implies a width of 2^k\n// XXX: In the future we can add an arity parameter\n// Returns the merkle root of the tree from the provided leaf, its hashpath, using a pedersen hash function.\npub fn compute_merkle_root<N>(leaf: Field, index: Field, hash_path: [Field; N]) -> Field {\n let n = hash_path.len();\n let index_bits = index.to_le_bits(n as u32);\n let mut current = leaf;\n for i in 0..n {\n let path_bit = index_bits[i] as bool;\n let (hash_left, hash_right) = if path_bit {\n (hash_path[i], current)\n } else {\n (current, hash_path[i])\n };\n current = crate::hash::pedersen_hash([hash_left, hash_right]);\n }\n current\n}\n", "path": "std/merkle.nr" }, "35": { "source": "use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<N, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n", "path": "std/option.nr" }, "44": { "source": "use crate::ops::{Add, Sub, Mul, Div, Rem, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\n\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex<N>(hex: str<N>) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else if ascii < 71 {\n ascii - 55\n } else {\n ascii - 87\n } as Field\n }\n\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if self < b {\n (U128::from_u64s_le(0, 0), self)\n } else {\n //TODO check if this can overflow?\n let (q,r) = self.unconstrained_div(b * U128::from_u64s_le(2, 0));\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::from_u64s_le(1, 0), r - b)\n }\n }\n }\n\n pub fn from_integer<T>(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer<T>(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo + self.hi) * (b.lo + b.hi) - low + carry\n } else {\n self.lo * b.hi + self.hi * b.lo + carry\n };\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64))as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: U128) -> U128 { \n assert(other < U128::from_u64s_le(128,0), \"attempt to shift left with overflow\");\n let exp_bits = other.lo.to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: U128) -> U128 { \n assert(other < U128::from_u64s_le(128,0), \"attempt to shift right with overflow\");\n let exp_bits = other.lo.to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n", "path": "std/uint128.nr" }, "60": { "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::protocol_types::{hash::pedersen_hash, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()], 0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr" }, "63": { "source": "use crate::context::Context;\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T> Storage<T> for PublicMutable<T> {}\n\nimpl<T> PublicMutable<T> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n\n // docs:start:public_mutable_struct_read\n pub fn read<T_SERIALIZED_LEN>(self) -> T where T: Deserialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"PublicMutable reads only supported in public functions\");\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write<T_SERIALIZED_LEN>(self, value: T) where T: Serialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"PublicMutable writes only supported in public functions\");\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_mutable_struct_write\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr" }, "80": { "source": "use crate::{\n context::{\n inputs::PublicContextInputs, interface::ContextInterface, interface::PublicContextInterface,\n gas::GasOpts\n},\n messaging::process_l1_to_l2_message,\n oracle::{arguments, public_call::call_public_function_internal, returns},\n hash::{hash_args_array, ArgsHasher}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash}\n},\n hash::silo_nullifier, address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{Deserialize, Empty}\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_hash : Field,\n\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_non_existent_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL>,\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_note_hashes: BoundedVec<SideEffect, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: Field,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n PublicContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter,\n args_hash,\n return_hash: 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hash: 0,\n unencrypted_logs_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero() // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> FunctionReturns<RETURNS_COUNT> {\n let side_effect_counter = self.side_effect_counter;\n // TODO get next value from output of `call_public_function_internal`\n self.side_effect_counter += 1;\n\n let raw_returns = call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n FunctionReturns::new(raw_returns)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_non_existent_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_non_existent_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = 0;\n let unencrypted_log_preimages_length = 0;\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_non_existent_read_requests: self.nullifier_non_existent_read_requests.storage,\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n returns_hash: self.return_hash,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n unencrypted_logs_hash,\n unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n prover_address: self.prover_address,\n revert_code: 0,\n gas_left: self.inputs.call_context.gas_left\n };\n pub_circuit_pub_inputs\n }\n}\n\nimpl ContextInterface for PublicContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_note_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PublicContextInterface for PublicContext {\n fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n fn timestamp(self) -> u64 {\n self.inputs.public_global_variables.timestamp\n }\n\n fn coinbase(self) -> EthAddress {\n self.inputs.public_global_variables.coinbase\n }\n\n fn fee_recipient(self) -> AztecAddress {\n self.inputs.public_global_variables.fee_recipient\n }\n\n fn fee_per_da_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_da_gas\n }\n\n fn fee_per_l1_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_l1_gas\n }\n\n fn fee_per_l2_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_l2_gas\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Current public can only check for settled nullifiers, so we always silo.\n let siloed_nullifier = silo_nullifier(address, unsiloed_nullifier);\n nullifier_exists_oracle(siloed_nullifier) == 1\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // We can consume message with a secret in public context because the message cannot be modified and therefore\n // there is no front-running risk (e.g. somebody could front run you to claim your tokens to your address).\n fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n this,\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn call_public_function<ARGS_COUNT, RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n fn static_call_public_function<ARGS_COUNT, RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n fn delegate_call_public_function<ARGS_COUNT, RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext {\n inputs: PublicContextInputs::empty(),\n side_effect_counter: 0 as u32,\n args_hash : 0,\n return_hash : 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hash: 0,\n unencrypted_logs_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n }\n }\n}\n\n#[oracle(checkNullifierExists)]\nfn nullifier_exists_oracle(nullifier: Field) -> Field {}\n\nstruct FunctionReturns<N> {\n values: [Field; N]\n}\n\nimpl<N> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr" }, "91": { "source": "use crate::{\n hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier},\n oracle::get_l1_to_l2_membership_witness::get_l1_to_l2_membership_witness\n};\n\nuse dep::std::merkle::compute_merkle_root;\nuse dep::protocol_types::{constants::L1_TO_L2_MSG_TREE_HEIGHT, address::{AztecAddress, EthAddress}, utils::arr_copy_slice};\n\npub fn process_l1_to_l2_message(\n l1_to_l2_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n chain_id: Field,\n version: Field,\n content: Field,\n secret: Field\n) -> Field {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n portal_contract_address,\n chain_id,\n storage_contract_address,\n version,\n content,\n secret_hash\n );\n\n let returned_message = get_l1_to_l2_membership_witness(storage_contract_address, message_hash, secret);\n let leaf_index = returned_message[0];\n let sibling_path = arr_copy_slice(returned_message, [0; L1_TO_L2_MSG_TREE_HEIGHT], 1);\n\n // Check that the message is in the tree\n // This is implicitly checking that the values of the message are correct\n let root = compute_merkle_root(message_hash, leaf_index, sibling_path);\n assert(root == l1_to_l2_root, \"Message not in state\");\n\n compute_message_nullifier(message_hash, secret, leaf_index)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/messaging.nr" }, "99": { "source": "#[oracle(packReturns)]\nfn pack_returns_oracle<N>(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nfn unpack_returns_oracle<N>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<N>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr" }, "104": { "source": "use dep::protocol_types::{address::AztecAddress, constants::L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH};\n\n// Obtains membership witness (index and sibling path) for a message in the L1 to L2 message tree.\n#[oracle(getL1ToL2MembershipWitness)]\nfn get_l1_to_l2_membership_witness_oracle(\n _contract_address: AztecAddress,\n _message_hash: Field,\n _secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {}\n\nunconstrained pub fn get_l1_to_l2_membership_witness(\n contract_address: AztecAddress,\n message_hash: Field,\n secret: Field\n) -> [Field; L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH] {\n get_l1_to_l2_membership_witness_oracle(contract_address, message_hash, secret)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_l1_to_l2_membership_witness.nr" }, "110": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr" }, "113": { "source": "mod globals;\nmod inputs;\n\nmod private_context;\nmod public_context;\nmod avm_context;\nmod interface;\nmod gas;\n\nuse interface::ContextInterface;\nuse private_context::PrivateContext;\nuse private_context::PackedReturns;\nuse public_context::PublicContext;\nuse public_context::FunctionReturns;\nuse avm_context::AvmContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n avm: Option<&mut AvmContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context { private: Option::some(context), public: Option::none(), avm: Option::none() }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context { public: Option::some(context), private: Option::none(), avm: Option::none() }\n }\n\n pub fn avm(context: &mut AvmContext) -> Context {\n Context { avm: Option::some(context), public: Option::none(), private: Option::none() }\n }\n\n pub fn none() -> Context {\n Context { public: Option::none(), private: Option::none(), avm: Option::none() }\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context.nr" }, "114": { "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET, GENERATOR_INDEX__NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, silo_nullifier}\n};\n\nuse dep::protocol_types::hash::sha256_to_field;\n\npub fn compute_secret_hash(secret: Field) -> Field {\n // TODO(#1205) This is probably not the right index to use\n pedersen_hash([secret], GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr" }, "132": { "source": "pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr" }, "149": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS},\n contract_class_id::ContractClassId, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute_from_public_key(\n pub_key: GrumpkinPoint,\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n portal_contract_address: EthAddress,\n deployer: AztecAddress\n ) -> AztecAddress {\n AztecAddress::compute(\n PublicKeysHash::compute(pub_key),\n PartialAddress::compute(\n contract_class_id,\n salt,\n initialization_hash,\n portal_contract_address,\n deployer\n )\n )\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let contract_address_salt = 3;\n let contract_class_id = ContractClassId::from_field(4);\n let initialization_hash = 5;\n let portal_contract_address = EthAddress::from_field(6);\n let deployer = AztecAddress::from_field(7);\n\n let address = AztecAddress::compute_from_public_key(\n point,\n contract_class_id,\n contract_address_salt,\n initialization_hash,\n portal_contract_address,\n deployer\n );\n\n let expected_computed_address_from_preimage = 0x027ea2b41ced2ec9a98305984e96dd28518536a4628883ccdc06e38aa8997220;\n assert(address.to_field() == expected_computed_address_from_preimage);\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let partial_address = PartialAddress::from_field(3);\n\n let address = AztecAddress::compute(PublicKeysHash::compute(point), partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x0447f893197175723deb223696e2e96dbba1e707ee8507766373558877e74197;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "154": { "source": "use dep::std::cmp::Eq;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "201": { "source": "use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr" }, "204": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__CONSTRUCTOR, GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_logs_hash(previous_log_hash: Field, current_log_hash: Field) -> Field {\n accumulate_sha256(\n [\n previous_log_hash,\n current_log_hash\n ]\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "214": { "source": "// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr" }, "283": { "source": "mod lib;\n\ncontract GasToken {\n use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}};\n use dep::aztec::{hash::compute_secret_hash, state_vars::{PublicMutable, Map}};\n\n use crate::lib::{calculate_fee, get_bridge_gas_msg_hash};\n\n #[aztec(storage)]\n struct Storage {\n balances: Map<AztecAddress, PublicMutable<U128>>,\n }\n\n #[aztec(public)]\n fn claim_public(to: AztecAddress, amount: Field, secret: Field) {\n let content_hash = get_bridge_gas_msg_hash(to, amount);\n\n // Consume message and emit nullifier\n context.consume_l1_to_l2_message(content_hash, secret, context.this_portal_address());\n\n let new_balance = storage.balances.at(to).read() + U128::from_integer(amount);\n storage.balances.at(to).write(new_balance);\n }\n\n // TODO(@just-mitch): remove this function before mainnet deployment\n // convenience function for testing\n // the true canonical gas token contract will not have this function\n #[aztec(public)]\n fn mint_public(to: AztecAddress, amount: Field) {\n let amount = U128::from_integer(amount);\n let new_balance = storage.balances.at(to).read().add(amount);\n\n storage.balances.at(to).write(new_balance);\n }\n\n #[aztec(public)]\n fn check_balance(fee_limit: Field) {\n let fee_limit = U128::from_integer(fee_limit);\n assert(storage.balances.at(context.msg_sender()).read() >= fee_limit, \"Balance too low\");\n }\n\n #[aztec(public)]\n fn pay_fee(fee_limit: Field) -> Field {\n let fee_limit_u128 = U128::from_integer(fee_limit);\n let fee = calculate_fee(context);\n assert(fee <= fee_limit_u128, \"Fee too high\");\n\n let sender_new_balance = storage.balances.at(context.msg_sender()).read() - fee;\n storage.balances.at(context.msg_sender()).write(sender_new_balance);\n\n let recipient_new_balance = storage.balances.at(context.fee_recipient()).read() + fee;\n storage.balances.at(context.fee_recipient()).write(recipient_new_balance);\n\n let rebate = fee_limit_u128 - fee;\n rebate.to_field()\n }\n\n // utility function for testing\n unconstrained fn balance_of_public(owner: AztecAddress) -> pub Field {\n storage.balances.at(owner).read().to_field()\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr" }, "284": { "source": "use dep::aztec::prelude::{AztecAddress, EthAddress};\nuse dep::aztec::context::PublicContext;\nuse dep::aztec::protocol_types::hash::sha256_to_field;\n\npub fn calculate_fee(_context: PublicContext) -> U128 {\n // TODO(palla/gas-in-circuits): Use the transaction_fee injected into the context\n U128::from_integer(1)\n}\n\npub fn get_bridge_gas_msg_hash(owner: AztecAddress, amount: Field) -> Field {\n let mut hash_bytes = [0; 68];\n let recipient_bytes = owner.to_field().to_be_bytes(32);\n let amount_bytes = amount.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i + 4] = recipient_bytes[i];\n hash_bytes[i + 36] = amount_bytes[i];\n }\n\n // Function selector: 0x3e87b9be keccak256('mint_public(bytes32,uint256)')\n hash_bytes[0] = 0x3e;\n hash_bytes[1] = 0x87;\n hash_bytes[2] = 0xb9;\n hash_bytes[3] = 0xbe;\n\n let content_hash = sha256_to_field(hash_bytes);\n content_hash\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr" } } }