@aztec/protocol-contracts 0.60.0 → 0.62.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
- {"transpiled":true,"noir_version":"0.36.0+1094f036be7b102252a3a5c0d4b8c621779cf4bd-x8664","name":"ContractInstanceDeployer","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"14336010898202591232":{"error_kind":"fmtstring","item_types":[],"length":16}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"},"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":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9VYzXLaMBAWYDB2AiEmKemNXtuLnRCgN8/0J733CRp+Lj2knckDuDNtn7uoaO2PZctQWB3YGY9krfztt7uS11bNrKW9umqu33Rty2wLzcldmx4nmSJW6pNn7UR41k+EZ+NEeAaKPGsCT9sGrm/3nd1zoVnvxy0lPmwT3QC92QFUY0at/IR+17Wfn7/Mvg6fn56G88XiWzn9t2sj19YBTjGPWWS2Y6OFP01Hs8hsijL/u8hhhn7w7wm/7Qc/Jd7vigoffSG7Ddc+FFUsH+AZKx3XxyVHuKSrg+490zVA94HpcMl/ZDrcJsSJ4tYCXxTX1dR3Xsi3EHyr/aM1poodjlGsY+N1jWaU84jx4fyJT4fmFBWfFtMFoIuYrgk6ir9thzCP5z6EeW9gnK/Jhtlew6SnnGOsfaypwAP+SkZS3HlOgmLTNuow7gHEc+j6/dX1yc0JIGZWwsKLT2V9bTv8JvAmm8i9zubzfpONvTYV77/+wFyy04Axsnnh7lugo2d3YQUCVk+Y32JYoYCFY+S33ROvXP/MrPP3g/DN9ntC7xt4/FZ6Z+rhT8paHPnhvyD82Av+qMQ/A3zNvUL4537iMyb8jh/88luo6wX/tozPBeAbvfhnVJdoP6MNsn3pJfdZts83A9qPGVdf3wyXjA+PD9Ynq0sErj1Bx/doIthJBDuUhz57Plfxe7yUuPYP5CphdRWxIkWsQ32kfFyx53N3nx4lk5HE9UrR744iVlsR69B1Qvm4Zs/n7j49SsZiPq4V/dbMx7kiVqiIpblvNeNFeZRqnZXctemRwrni/xTapDrfZPO/u5ZqzgtTCa/XAxhXrNe3+9brAeOKfIh3LOiOOeOcjZd3j/PlaP44WUwh3gPGlY/hGaK9boT5Uu2nWL80XmKdSv/FNxBXKwHoBkzXBB1xxP/iiGFq898n/mi/J+jwn+N/cpmYzbWWMJ/x/CdX8bc6G2sDNt+XkZdYp/f77kuyHzOuynx2nr1hfPh3dCxw7Qk6XpdiwU4s2DlFLH5+jTG0+4PiFBSVXiuXk2l1lkXvITzLQglAj/N/ufvEyGJ9+ANQAijv/B0AAA==","debug_symbols":"tdnBaoNAEIDhd9mzBze6OzN5lVKCJhoWRIOaQhHfvZs2lEDO/0V2dPxv32k3d+na+/WUxn5a3PFjc8N0btY0jXna9sK1cxqGdD29vnbl41HXv/vLrRkf47I28+qOVV24brzkg+W/+zR0+ai6F2+bcnhuivxvBts/C1cHrByxsmBlxcpGlUOJlT1WPmDlCitjBgNmMGAGA2YwYAYDZjBiBiNmMGIGI2YwYgYjZjBiBiNmMGIGI2ZQMIOCGRTMoGAGBTMomEHBDApmUDCDghlUzKBiBhUzqJhBxQwqZlAxg4oZVMygYgYNM2iYQcMMGmbQMIOGGTTMoGEGDTNomEFfllzac+kDl664dM2lA5eOXFq4tHJpTqPnNHpOo4c07nn6aubUtEP3vHno7+P55SJi/b79fcnLPw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"deploy","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"salt","type":{"kind":"field"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"initialization_hash","type":{"kind":"field"},"visibility":"private"},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"},"visibility":"private"},{"name":"universal_deploy","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","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}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"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":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["debug_log_oracle_wrapper","build_msg_block","attach_len_to_msg_block","emit_unencrypted_log_private_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{},"structs":{"events":[{"fields":[{"name":"DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE","type":{"kind":"field"}},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"version","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"deployer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}}],"kind":"struct","path":"ContractInstanceDeployer::ContractInstanceDeployed"}],"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"universal_deploy","type":{"kind":"boolean"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_parameters"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_abi"}]}},"file_map":{"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/to_bytes.nr","source":"pub fn arr_to_be_bytes_arr<let L: u32>(fields: [Field; L]) -> [u8; L * 32] {\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n // Note that bytes.append() results in bound error\n let to_add: [u8; 32] = fields[i].to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n\n// each character of a string is converted into a byte\n// then an ACVM field via the oracle => we recreate here\npub fn str_to_be_bytes_arr<let L: u32>(string: str<L>) -> [u8; L * 32] {\n let chars_bytes: [u8; L] = string.as_bytes();\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n let to_add: [u8; 32] = (chars_bytes[i] as Field).to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__FUNCTION_ARGS,\n }, point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice},\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\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 poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER,\n )\n}\n\npub struct 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<let N: u32>(&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<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"186":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash},\n }, address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR,\n }, header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests: BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\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.contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.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_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.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 note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\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_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(\n &mut self,\n note_hash_counter: u32,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n let call_request = PublicCallRequest { call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.public_teardown_call_request = PublicCallRequest { call_context, args_hash, counter };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"308":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"309":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"312":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils,\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n ))\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys_hash: PublicKeysHash,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys_hash, partial_address)\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_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\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"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"325":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash}, note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n }, address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX,\n }, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256(\n [log_hash.contract_address.to_field(), log_hash.log_hash.value],\n )\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0,\n ))\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(\n _vk: VerificationKey<N>,\n) -> 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 recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\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 // 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: [u8; 32] = input[offset].to_be_bytes();\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\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 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 = std::hash::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 =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"327":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n GENERATOR_INDEX__PUBLIC_KEYS_HASH, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_IVPK_M_X,\n DEFAULT_IVPK_M_Y, DEFAULT_OVPK_M_X, DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y,\n }, hash::poseidon2_hash_with_separator, point::POINT_LENGTH,\n traits::{Deserialize, Serialize, Hash},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse dep::std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE = 16;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeroes.\ntype MSG_BLOCK = [u8; BLOCK_SIZE];\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; BLOCK_SIZE];\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !crate::runtime::is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: MSG_BLOCK) -> INT_BLOCK {\n let mut msg32: INT_BLOCK = [0; INT_BLOCK_SIZE];\n\n for i in 0..INT_BLOCK_SIZE {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4 * (i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeroes.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeroes by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n for i in 0..BLOCK_SIZE {\n if i >= msg_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n for i in msg_byte_ptr..MSG_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[MSG_SIZE_PTR + i] = len_bytes[i];\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n for i in 0..MSG_SIZE_PTR {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in MSG_SIZE_PTR..BLOCK_SIZE {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4 * j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"388":{"path":"/usr/src/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"use dep::aztec::macros::aztec;\n\n#[aztec]\ncontract ContractInstanceDeployer {\n use dep::aztec::protocol_types::{\n address::{AztecAddress, PublicKeysHash, PartialAddress}, public_keys::PublicKeys,\n contract_class_id::ContractClassId,\n constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE, abis::log_hash::LogHash,\n traits::Serialize,\n };\n use dep::aztec::{\n hash::compute_unencrypted_log_hash, oracle::logs::emit_unencrypted_log_private,\n macros::{events::event, functions::private}, utils::to_bytes::arr_to_be_bytes_arr,\n };\n use std::meta::derive;\n\n #[event]\n struct ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE: Field,\n address: AztecAddress,\n version: u8,\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n deployer: AztecAddress,\n }\n\n // We need to impl this separately because ts deserializes a point as two fields only.\n // We had issues that:\n // Notice how the 'is_infinite' field is deserialized as the next point.\n // {\n // masterNullifierPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000012>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000034>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterIncomingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000056>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterOutgoingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000078>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterTaggingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000910>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000001112>,\n // isInfinite: false,\n // kind: 'point'\n // }\n impl Serialize<15> for ContractInstanceDeployed {\n fn serialize(self) -> [Field; 15] {\n [\n self.DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n self.address.to_field(),\n self.version.to_field(),\n self.salt,\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys.npk_m.serialize()[0],\n self.public_keys.npk_m.serialize()[1],\n self.public_keys.ivpk_m.serialize()[0],\n self.public_keys.ivpk_m.serialize()[1],\n self.public_keys.ovpk_m.serialize()[0],\n self.public_keys.ovpk_m.serialize()[1],\n self.public_keys.tpk_m.serialize()[0],\n self.public_keys.tpk_m.serialize()[1],\n self.deployer.to_field(),\n ]\n }\n }\n\n #[private]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n universal_deploy: bool,\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address =\n PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys.hash(), partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_nullifier(address.to_field());\n\n // Broadcast the event\n let event = ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id,\n address,\n public_keys,\n initialization_hash,\n salt,\n deployer,\n version: 1,\n };\n\n let payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", payload);\n\n let contract_address = context.this_address();\n let counter = context.next_counter();\n\n // @todo This is very inefficient, we are doing a lot of back and forth conversions.\n let serialized_log = arr_to_be_bytes_arr(payload);\n let log_hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n // 40 = addr (32) + raw log len (4) + processed log len (4)\n let len = 40 + serialized_log.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n\n // We manually push the unencrypted log to the context and inform the execution environment about this because\n // PrivateContext does not expose an `emit_unencrypted_log` method - this mechanism is considered error-prone\n // and only some canonical contracts use it.\n context.unencrypted_logs_hashes.push(side_effect);\n emit_unencrypted_log_private(contract_address, payload, counter);\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"98":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(\n contract_address,\n randomness,\n encrypted_event,\n counter,\n )\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32,\n) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32,\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.36.0+b0cbf84eaf69f77628939184c9b869cfb3e15846-x8664","name":"ContractInstanceDeployer","functions":[{"name":"deploy","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"salt","type":{"kind":"field"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"initialization_hash","type":{"kind":"field"},"visibility":"private"},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"},"visibility":"private"},{"name":"universal_deploy","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","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}}],"kind":"struct","path":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"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":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"7b3djixLcp35Ln2ti3D7czO9ymAwoDQagQBBCiI1wEDQu483u6v2Pqcqd/JEOzO+UJouhG52eaXVytjmtrLsq/U///R//5f/9D/+6//19//4//zTP//pP/4f//NP//BP//nv/uXv/+kf13/7n38a+a//t3/+b3/3j3/+r//8L3/33//lT/9xRB3/4U//5R//7/Uf53H8r//wp//n7//hv/zpP2rp//oPX75aUu2vXy3p8fnVI8Y3X60+/K9frZ755KvHOOb8KGUc9VMtkt99vYl8fLnZ+PHV9u03l/r83jN//uL/8z/8aVRL80AaOVqaR9KMluaRNNLSPJJGW5pH0lhL80gab2keSRMtzSNpZkvzSJqehh9K09PwI2m0p+GH0vQ0/FCanoYfStPT8ENprKV5JE1Pww+l6Wn4oTT4aXgM+yx/SD6TJjM+vrwO/5ukwU/D10mDn4Yvk8Y2TMN2yMcPa0f8+Pc9Mv71Jca//0t8O51p1IdMOqc/eYkh8vkeSNmPrx7+zVeHf3TA/PkNGPHddz5CP9+vI6xe1y9NW5jvhbEW5nthHC7M1B/C5Hxhp4wW5nth5gZhxg9h9Dc/7HfCDP/xuEeNZ199oTTZ0jyS5tuZTPP4mAo0fTybyerzX4jU1J9+2PpuJhsjP7632E//+PRgtWA/WppH0oyW5pE00tI8kkZbmkfSWEvzSBpvaR5JEy3NI2lmS/NImmxpHknT0/AjaaKn4YfS9DT8UJqehh9K09PwQ2kML81Vn9cEfxq+TJoN07Aex8enfOsDXn8izZU/7HynH3bDxKry+btdFc8nP+x60D/qEfvpRxV7+pP++Pck/q/FF7v4cv8s/ifl5bsPqi0+GofVTz/nv/7ydx7on1OOY3x88SH2N/ycg/1zjvHxr1SG1u8exins4tdXf3yxpP76TRqan+tP9lOD+etPqm/zk9r/Rj+p6+cd4z+t9/zxf6XeonwVJf53EmV+3ltef8u9NVuUr6LsmLjGj9+vi9cTUZZl/LCPZj/ZjG9F0flZu+bQn7/4z8UXu/isj0lE60vxedy5+HHn4uXOxeudi7c7F+93Lj7uXPy8c/HwG/bXxe++YePZp5DjsM899WOOXxfvoz5mJl+T2e+Kr+POxY87Fy93Ll7ZxYvFZ/ERvy/e7ly837n4uHPxk118zI9Lyud4cqPNH7/OnJG/v9Eq3+Ynhd/dOT5/0nT5W37SccBv+j/2o9bHRx5zjvHlR4XPBTt/VPgU8fhH/dfq4WPEk+oN7lpMfxQyv1RPt+q/rv77SaLicz2j6hnA6z9+Ve0//6r6zwDvd589HxKfHz4f7r/5+n+taQJr+vYqtx+/QzN7SnvN/PiEPn/6XbHK8ZdX+PYKNf/8Tbr501d4/nOM4yWv8u3FYfP4fG6nPoXyf7yG/Xhsh323FmLyuXxkMn/ze4dvHg07Ph8N+/mX9n+tXW5cu964drtx7X7j2uPGtc8b1543rr3uW/v3fzH7JrXf+F6VG9+rcuN7VW58r8qN71W58b0qN75X5cb3qtz4XtUb36t643tVb3yv6o3vVb3xvao3vlf1xveq3vhe1Rvfq3rje9VufK/aje9Vu/G9aje+V+3G96rd+F61G9+r9up7NT4hZws5vpSTrHIKVY4frHJefUfFj9+1xvxajrDKUVY5xirHWeUE618Wqys7qys7qyvHgXqUg9WVg9WVg9WVg9WVg9WVI1jlTFY5ySqnUOVMVleerK48WV15srryNNSAMZ1VDmtWnqxZebK68mR15WR15WR15WR15WR15WTNysmalZM1KydrVk5WV05WVy5WVy5WVy5BDRilrHJYs3KxZuVideVideVideVCdWU5UF1ZDlRXlgM1K8uBmpXlQM3KcqBmZTlQXVkOVFeWA9WV5WB15YHawZCX8+JPykHNyjJQs7IMVlcerK48WF15sLryYHXlwerKwpqVhTUrC2tWFtasLKyuLKyuLKyuLKyuLKjNOBHUZpwoa1ZW1qysrK6srK6srK6srK6srK6srK6srFlZWbOysWZlY83KxurKxurKxurKxurKhtqMExbbJyy2T1hsnzirK7PYPmGxfcJi+4TF9gmL7RNnzcrOmpWdNSs7a1ZmsX3CYvuExfYJi+2T17N9vxwwArUZJ8GalYM1K7PYPmGxfcJi+4TF9gmL7RMW2yevZ/t+XQ5rVp6sWXmyZmUW2ycstk9YbJ+w2D5J1mZcsjbjXs/2/boc1qzMYvuExfYJi+0TFtsnLLZPWGyfFGtWLtas/Hq279flsGZlFtsnLLZPWGyfsNg+PVCbcXqgNuP0QM3KeqBmZT1QXVlZbJ+y2D5lsX3KYvuUxfbpQM3KOlCzsg7UrKwDNSsri+1TFtunLLZPWWyfDtRmnA7UZpwKa1YW1qzMYvuUxfYpi+1TFtunLLZPWWyfCmtWFtasrKxZWVmzMovtUxbbpyy2T1lsnypqM04VtRmnypqVlTUrs9g+ZbF9ymL7lMX2KYvtUxbbp8aalY01KxtrVjbWrMxi+5TF9imL7VMW26evZ/t+OWA4ajNOWbl9ysrtUxbbpyy2T1lsn7LYPmWxfcpi+5SV26es3D5l5fYpK7dPWWyfstg+ZbF9ymL7dLI24yZrM46V26es3D5lsX3KYvuUxfYpi+1TFtunLLZPWbl9ysrtU1Zun7Jy+5TF9imL7VMW26cstk+LtRlXrM04Vm6fsnL7lMX2KYvtUxbbpyy2T1lsn7LYPmPl9hkrt89YuX3Gyu2zA9WVjcX2GYvtMxbbZwdqM84O1GacsXL7jJXbZyy2z1hsn7HYPmOxfcZi+4zF9hkrt89YuX3Gyu0zVm6fsdg+Y7F9xmL7jMX2maA240xQm3HGyu0zVm6fsdg+Y7F9xmL7jMX2GYvtMxbbZ6zcPmPl9hkrt89YuX3GYvuMxfYZi+0zFttnr2f7fjlgGGozzli5fcbK7TMW22csts9YbJ+x2D5jsX3GYvuMldtnrNw+Y+X2GSu3z1hsn7HYPmOxfcZi+yxQm3EWqM04Y+X2GSu3z1hsn7HYPmOxfcZi+4zF9hmL7TNWbp+xcvuMldtnrNw+Y7F9xmL7jMX2GYvts2RtxiVrM46V22es3D5jsX3GYvuMxfYZi+0zFttnLLbPWLl9xsrtM1Zun7Fy+4zF9hmL7TMW22csts+KtRlXqM04Z+X2OSu3z1lsn7PYPj9QXdlZbJ+z2D5nsX3Oyu1zVm6fs3L7nJXb5yy2z1lsn7PYPmexfT5Qm3E+UJtxzsrtc1Zun7PYPmexfc5i+5zF9jmL7XMW2+es3D5n5fY5K7fPWbl9zmL7nMX2OYvtcxbb569n+345YChqM85ZuX3Oyu1zFtvnLLbPWWyfs9g+Z7F9zmL7nJXb56zcPmfl9jkrt89ZbJ+z2D5nsX3OYvvcUZtx7qjNOGfl9jkrt89ZbJ+z2D5nsX3OYvucxfY5i+1zVm6fs3L7nJXb56zcPmexfc5i+5zF9jmL7fPJ2oybrM04Vm6fs3L7nMX2OYvtcxbb5yy2z1lsn7PYPmfl9jkrt89ZuX3Oyu1zFtvnLLbPWWyfs9g+T9ZmXLI241i5fc7K7XMW2+csts9ZbJ+z2D5nsX3OYvucldvnrNy+YOX2BSu3L1hsX7DYvnWhscpBdeU4UJtxcaA244KV2xes3L5gsX3BYvuCxfYFi+0LFtsXLLYvWLl9wcrtC1ZuX7By+4LF9gWL7QsW2xcsti9ez/b9csAQ1GZcsHL7gpXbFyy2L1hsX7DYvmCxfcFi+4LF9gUrty9YuX3Byu0LVm5fsNi+YLF9wWL7gsX2haE248JQm3HByu0LVm5fsNi+YLF9wWL7gsX2BYvtCxbbF6zcvmDl9gUrty9YuX3BYvuCxfYFi+0LFtsXgdqMi0BtxgUrty9YbF+w2L5gsX3BYvuCxfYFi+2LYO1gsNi+YLF9wcrtC1ZuX7DYvmCxfcFi+4LF9sVkbcZNVldm5fYFK7cvWGxfsNi+YLF9wWL7gsX2BYvtC1ZuX7By+4KV2xes3L54Ods3c3x+59Qv5by6K4vPj+8s8zflfP1it+PjO7uJfandbly737j2uHHt88a1541rr9vWPl+ORe6sfdy4drlx7fe9V+dx33t1Hve9V+dx33t1Hve9V+dx33t1Hje+V8eN79Vx43t13PheHTe+V18O4+6s/cb36rjxvTpufK+OG9+r48b3qtz4XpUb36ty43tVbnyvvhyn3ln7je9VufG9yqK6p6D2PKag9jymovY8Jovqniyqe7Ko7smiuieL6p6sxNbJSmydyurKyurKLKp7sqjuyUpsnazE1slKbJ2sxNbJoroni+qeLKp7sqjuyaK6J4vqniyqe7Ko7slKbJ2sxNbprFnZWbMyi+qeLKp7shJbJyuxdbISWyeL6p4sqnuyqO7Joroni+qeLKp7shJb52R15cnqyqzE1slKbJ2vp7p/XQ5rVmZR3ZNFdU9WYutkJbZOVmLrZCW2ThbVPVlU92RR3ZNFdU8W1T1ZVPdkUd2TRXVPVmLrZCW2zmLNysWalVmJrZOV2DpZia2Tldg6WYmtk5XYmqzE1mQltiYrsTVZia15oLpyshJb80B15TxQXTlZia3JSmzNgZqVc6Bm5WQltiYrsTVZia3JSmxNVmJrshJbk5XYmqzE1mQltiYrsTVZia3JSmxNYXVlYXVlVmJrsti+ZLF9yWL7kpXYmiy2L1lsX7LYvmSxfcli+5KV2JqsxNZkJbYmK7E1WWxfsti+ZLF9yWL7kpXYmqzE1jTWrGysWZnF9iWL7UsW25csti9ZbF+y2L5kJbYmK7E1WYmtyUpsTRbblyy2L1lsX7LYvmQltmagNuPy9Wzfr8thzcosti9ZbF+y2L5ksX3JYvuSxfYlK7E1WYmtyUpsTVZia7LYvmSxfcli+5LF9iUrsTVZia2ZrFk5WbMyi+1LFtuXLLYvWWxfsti+ZLF9yUpsTVZiaxZrVi7WrMxi+5LF9iWL7UsW25fF2owr1GZcHahZuQ7UrFwstq9YbF8dqK5cLLavWGxfsdi+OlCzch2oWbkGalaugZqVi8X2FYvtKxbbVyy2rwZqM64GajOuBmpWrsGalVlsX7HYvmKxfcVi+4rF9hWL7SthzcrCmpWFNSsLa1ZmsX3FYvuKxfYVi+2r17N9vxwwFLUZV6zcvmLl9hWL7SsW21cstq9YbF+x2L5isX3Fyu0rVm5fsXL7ipXbVyy2r1hsX7HYvmKxfeWozbhy1GZcsXL7ipXbVyy2r1hsX7HYvmKxfcVi+4rF9hUrt69YuX3Fyu0rVm5fsdi+YrF9xWL7isX21WRtxk3WZhwrt69YuX3FYvuKxfYVi+0rFttXLLavWGxfsXL7ipXbV6zcvmLl9hWL7SsW21cstq9YbF8lazMuWZtxrNy+YuX2FYvtKxbbVyy2r1hsX7HYvmKxfcXK7StWbt84WMF9qx7UtLzqQTXmVQ+qM696UK151YPqzase1ILcqge1IbfqQQ3Nqx7U1DwOFua36oH1Zxbot+qB9WcW6rfqgfVnVpDfqgc1Pa96UOPzqgc2P7OAv1UPrD+zkL9VD6w/vx76+/W8IaiduVUPbH5mZfqtemD9mUX+jYOF/q16YP2ZBf+temD9mRXtt+qBzc+scL9VD2x+ZiGAqx5Yf2ZBgKseWH821BLdqge1Rbfqgc3PrJS/VQ+sP7NYwFUPrD+zaMBxsHDAVQ+sP7PC/lY9sPmZFfe36oHNzywocNUD688sLHDVA+vPgVqrW/Wg9upWPbD5mZX7t+qB9WcWHbjqgfVnFh+46oH1ZxYhOA5W/N+qBzY/swIAVz2w+ZmFCa56YP2ZBQquemD9ecL26yZsv44VBLjqgc3PLFxw1QPrzyxgcNUD688sZHDVA+vPrEDAVQ9sfmZFAq56YPMzCxxc9cD6MwsdXPXA+nPB9usKtl/HigZc9bDm5wHjBweMHxwwfnDA+MH1C29YPaz+PFgRgase1vw8WCGBqx7W/Dxg/OCA8YMDxg8OGD84Xs8P/nreGKz9usEKC1z1sObnAeMHB4wfHDB+cMD4wQHjBweMHxys0MBVD2x+ZsUGrnpg8zOMHxwwfnDA+MEB4weHsvbrhrL26wYrPnDVA5ufYfzggPGDA8YPDhg/OGD84IDxg4MVI7jqgc3PrCDBVQ9sfobxgwPGDw4YPzhg/OBw1n7dcNZ+3WAFCq56YPMzjB8cMH5wwPjBAeMHB4wfHDB+cLCCBVc9sPmZFS246oHNzzB+cMD4wQHjBweMHxzB2q8bAduvY0UMrnpg8zOMHxwwfnDA+MEB4wcHjB8cMH5wsKIGVz2w+ZkVNrjqgc3PMH5wwPjBAeMHB4wfHAnbr0vYfh0rdHDVA5ufYfzggPGDA8YPDhg/OGD84IDxg4MVPrjqgc3PrPjBVQ9rfhYYPygwflBg/KDA+EE5DDVvyMHarxNY/qDA8gcFxg8KjB8UGD8oMH5QYPygwPhBgeUPCix/UGD5gwLLHxQYPygwflBg/KDA+EER1n6dCGu/TmD5gwLLHxQYPygwflBg/KDA+EGB8YMC4wcFlj8osPxBgeUPCix/UGD8oMD4QYHxgwLjB8VY+3VirP06geUPCowfFBg/KDB+UGD8oMD4QYHxg2Ks/Q2B8YMC4wcFlj8osPxBgfGDAuMHBcYPCowfFGft14nD+jMsf1Bg+YMC4wcFxg8KjB8UGD8oMH5QYPygwPIHBZY/KLD8QYHlD8rL+cGZ4/M7p36t59X9eU1cH995vfjP9Xz9Yrfj4zu7iX0t3u5cvN+5+Lhz8fPOxeedi68bF/9y9HJr8ePOxcudi7/zDftyXHRr8Xe+YfPON2ze+YbNO9+weecbtu58w9adb9i68w1bd75hXw78bi3+zjds3fmGrTvfsHXnG7ZufMPqceMbVo8b37B63PiG1ePGN6weN75h9bjxDavHjW9YhZHjerA2Q/RgbYboYG2GKIwcVxg5rjByXGHkuMLIcYUlzyoseVYHrD8PWH+GkeMKI8cVljyrsORZhSXPKix5VmHkuMLIcYWR4wojxxVGjiuMHFcYOa4wclxhybMKS55Vhc3PCpufYeS4wshxhSXPKix5VmHJswojxxVGjiuMHFcYOa4wclxh5LjCkmfVYf3ZYf0ZljyrsORZfT05/qQe2PwMI8cVRo4rLHlWYcmzCkueVVjyrMLIcYWR4wojxxVGjiuMHFcYOa4wclxh5LjCkmcVljyrEzY/T9j8DEueVVjyrMKSZxWWPKuw5FmFJc8qLHlWYcmzCkueVVjyrMKSZxWWPKsJ688J68+w5FmFJc9qwebngs3PsORZhSXPKix5VmHJswpLnlVY8qzCkmcVljxrsORZgyXPGix51mDJs3aw+rMdrP5ssORZg/GDBuMHDcYPGix51mD8oMH4QYPxgwbjBw3GDxosedZgybMGS541WPKswfhBg/GDBuMHDcYPGix51mDJsyaw+Vlg8zOMHzQYP2gwftBg/KDB+EGD8YMGS541WPKswZJnDZY8azB+0GD8oMH4QYPxgwZLnjVj7dfZ6/nBJ/XA5mcYP2gwftBg/KDB+EGD8YMG4wcNljxrsORZgyXPGix51mD8oMH4QYPxgwbjBw2WPGuw5FkL2PwcsPkZxg8ajB80GD9oMH7QYPygwfhBgyXPGix51iZsfp6w+RnGDxqMHzQYP2gwftAmbL9uwvbrEjY/J2x+hvGDBuMHDcYPGowfNBg/aDB+0BI2Pydsfi7Y/Fyw+RnGDxqMHzQYP2gwftAKtl9XsP26gs3PxZqfHcYPOowfdBg/6DB+0A9Wf3YYP+gHa372gzU/+8Gan/1gzc8O4wcdxg86jB90GD/or+cHfz1vDNZ+ncPyBx2WP+gwftBh/KDD+EGH8YMO4wcdxg86LH/QYfmDDssfdFj+oMP4QYfxgw7jBx3GD7qy9utcWft1DssfdFj+oMP4QYfxgw7jBx3GDzqMH3QYP+iw/EGH5Q86LH/QYfmDDuMHHcYPOowfdBg/6M7ar3Nn7dc5LH/QYfmDDuMHHcYPOowfdBg/6DB+0GH8oMPyBx2WP+iw/EGH5Q86jB90GD/oMH7QYfygB2u/zgO2XwfLH3RY/qDD+EGH8YMO4wcdxg86jB90GD/osPxBh+UPOix/0GH5gw7jBx3GDzqMH3QYP+gJ269L2H4dLH/QYfmDDuMHHcYPOowfdBg/6DB+0GH8oMPyBx2WP+iw/EGH5Q8GjB8MGD8YMH4wYPzguv1R80YcrP26gOUPBix/MGD8YMD4wYDxgwHjBwPGDwaMHwxY/mDA8gcDlj8YsPzBgPGDAeMHA8YPBowfDGHt14Ww9usClj8YsPzBgPGDAeMHA8YPBowfDBg/GDB+MGD5gwHLHwxY/mDA8gcDxg8GjB8MGD8YMH4wjLVfF8barwtY/mDA8gcDxg8GjB8MGD8YMH4wYPxgwPjBgOUPBix/MGD5gwHLHwwYPxgwfjBg/GDA+MFw1n5dOGu/LmD5gwHLHwwYPxgwfjBg/GDA+MGA8YMB4wcDlj8YsPzBgOUPBix/MGD8YMD4wYDxgwHjB2PC9usmbL8Olj8YsPzBgPGDAeMHA8YPBowfDBg/GDB+MGD5gwHLHwxY/mDA8gcDxg8GjB8MGD8YMH4wXs8P/nreKNh+HSx/MGD5gwHjBwPGD04YPzhh/OCE8YMTxg/OgzU/T1j+4ITlD05Y/uCE8YMTxg9OGD84YfzgHKz9ujlY+3UTlj84YfmDE8YPThg/OGH84ITxgxPGD04YPzhh+YMTlj84YfmDE5Y/OGH84ITxgxPGD04YPziVtV83lbVfN2H5gxOWPzhh/OCE8YMTxg9OGD84YfzghPGDE5Y/OGH5gxOWPzhh+YMTxg9OGD84YfzghPGD01j7ddNY+3UTlj84YfmDE8YPThg/OGH84ITxgxPGD04YPzhh+YMTlj84YfmDE5Y/OGH84ITxgxPGD04YPziDtV83g7VfN2H5gxOWPzhh/OCE8YMTxg9OGD84YfzghPGDE5Y/OGH5gxOWPzhh+YMTxg9OGD84YfzghPGD8/X84K/njYTt18HyBycsf3DC+MEJ4wcnjB+cMH5wwvjBCeMHJyx/cMLyBycsf3DC8gcnjB+cMH4wYfxgwvjBPFj7dXmw9uvyYM3PCcsfTBg/mDB+MGH8YML4wYTxgwnjBxOWP5iw/MGE5Q8mLH8wYfxgwvjBhPGDCeMHU1j7dSms/bqE5Q8mjB9MGD+YMH4wYfxgwvjBhPGDKaz9jYTxgwnjBxOWP5iw/MGE8YMJ4wcTxg8mjB9MZe3XpcL6Myx/MGH5gwnjBxPGDyaMH0wYP5gwfjBh/GDC8gcTlj+YsPzBhOUP5sv5wZnj8zunfq3n1f1ZfH58Z5m/qefrF7sdH9/ZTexr8Xbn4v3Oxcedi593Lj7vXHzduPiXo5dbix93Ll7uXPydb9iX46Jbi7/zDRt3vmHjzjds3PmGjTvfsPPON+y88w0773zDzjvfsC8HfrcWf+cbdt75hp13vmHnnW/YeecbNu98w+adb9i88w2bd75hX45sby3+zjds3vmGhZHjmbDNkIRthhRsMwRGjieMHE8YOZ4wcjxh5HjCkmcTljybBevPxerPBSPHC0aOFyx5tmDJs3Ww+nPBkmcLRo4XjBwvGDleMHK8YOR4wcjxgpHjBSPHC5Y8W7Dk2Rqs+bkGa34uGDleMHK8YMmzBUueLVjybMHI8YKR4wUjxwtGjheMHC8YOV6w5NlSWH9WWH+GJc8WLHm2Xk+OP6kHNj/DyPGCkeMFS54tWPJswZJnC5Y8WzByvGDkeMHI8YKR4wUjxwtGjheMHC8YOV6w5NmCJc+Ww+Znh83PsOTZgiXPFix5tmDJswVLni1Y8mzBkmcLljxbsOTZgiXPFix5tmDJsxWw/hyw/gxLni1Y8mxN2Pw8YfMzLHm2YMmzBUueLVjybMGSZwuWPFuw5NmCJc8WLHm2YMmzBUueLVjybCWsPyesP8OSZwvGDxaMHywYP1iw5NmC8YMF4wcLxg8WjB8sGD9YsOTZgiXPFix5tljJs3Kw+MFVD6o/r3pQ/XnVg+rPqx4jzRurHtR+3aoHNT+velDz86oH1Z9XPbD+zOIHVz2w/sziB1c9sP7MSp5d9aDm51UPan5e9aDm51UPrD+z+EE5WPzgqgfWn1nJs6se1H7dqgc2Pwtsfmbxg6seWH9m8YOrHlh/ZvGDqx5Yf2Ylz656YPMzK3l21QObn1n84KoH1p9Z/OCqB9afWcmzqx7Uft2qBzY/G2x+ZvGDqx5Yf2bxg6seWH9m8YOrHlh/ZiXPrnpg87PD5meHzc8sfnDVA+vPLH5w1QPrz47ar1v1oPbr5AjY/Byw+ZnFD656YP2ZxQ+uemD9mcUPrnpg/Tlg83PA5ucJm58nbH5m8YOrHlh/ZvGDqx5Yf56w/boJ26+bsPl5wuZnFj+46oH1ZxY/uOqB9WcWP7jqgfXnhM3PCZufEzY/J2x+ZvGDqx5Yf2bxg6seWH9+PT/463mjYPt1rPzBVQ9sfmbxg6seVn8eMH5wwPjBAeMHB4wfHAdrfh6s/MFVD2t+Hqz8wVUPqz8PGD84YPzggPGDY7D268Zg7dcNVv7gqoc1Pw8YPzhg/OCA8YMDxg8OGD84YPzgYOUPrnpg8zMrf3DVA5ufYfzggPGDA8YPDhg/OJS1XzeUtV83WPmDqx7Y/AzjBweMHxwwfnDA+MEB4wcHjB8crPzBVQ9sfmblD656YPMzjB8cMH5wwPjBAeMHh7H264ax9usGK39w1QObn2H84IDxgwPGDw4YPzhg/OCA8YODlT+46oHNz6z8wVUPbH6G8YMDxg8OGD84YPzgCNZ+3QjWft1g5Q+uemDzM4wfHDB+cMD4wQHjBweMHxwwfnCw8gdXPbD5mZU/uOqBzc8wfnDA+MEB4wcHjB8cr+cHfz1vJGy/jpU/uOqBzc8wfnDA+MEB4wcHjB8cMH5wwPjBwcofXPXA5mdW/uCqBzY/w/jBAeMHBcYPCowflIO1XycHa79ODtb8LLD8QYHxgwLjBwXGDwqMHxQYPygwflBg+YMCyx8UWP6gwPIHBcYPCowfFBg/KDB+UIS1XyfC2q8TWP6gwPIHBcYPCowfFBg/KDB+UGD8oMD4QYHlDwosf1Bg+YMCyx8UGD8oMH5QYPygwPhBUdZ+nShrv05g+YMCyx8UGD8oMH5QYPygwPhBgfGDAuMHBZY/KLD8QYHlDwosf1Bg/KDA+EGB8YMC4wfFWft14qz9OoHlDwosf1Bg/KDA+EGB8YMC4wcFxg8KjB8UWP6gwPIHBZY/KLD8QYHxgwLjBwXGDwqMH5TX84O/njcmbL8Olj8osPxBgfGDAuMHBcYPCowfFBg/KDB+UGD5gwLLHxRY/qDA8gcFxg8KjB8UGD8oMH5QCrZfV7D9Olj+oMDyBwXGDwqMHxQYPygwflBh/KDC+EGF5Q8qLH9QD9b8rLD8QYXxgwrjBxXGDyqMH9TB2q/TwdqvU1j+oMLyBxXGDyqMH1QYP6gwflBh/KDC+EGF5Q8qLH9QYfmDCssfVBg/qDB+UGH8oML4QRXWfp0Ka79OYfmDCssfVBg/qDB+UGH8oML4QYXxgwrjBxWWP6iw/EGF5Q8qLH9QYfygwvhBhfGDCuMH1Vj7dWqs/TqF5Q8qLH9QYfygwvhBhfGDCuMHFcYPKowfVFj+oMLyBxWWP6iw/EGF8YMK4wcVxg8qjB/U1/ODv543grVfp7D8QYXlDyqMH1QYP6gwflBh/KDC+EGF8YMKyx9UWP6gwvIHFZY/qDB+UGH8oML4QYXxg5qw/bqE7dfB8gcVlj+oMH5QYfygwvhBhfGDCuMHFcYPKix/UGH5gwrLH1RY/qDC+EGF8YMK4wcVxg/awdqvs4O1X2ew/EGD8YN2sPqzwfhBg/GDBuMHDcYP2sHa3zAYP2gwftBg+YMGyx80GD9oMH7QYPygwfhBG6z9Ohuw/gzLHzRY/qDB+EGD8YMG4wcNxg8ajB80GD9osPxBg+UPGix/0GD5g/ZyfnDm+PzOqV/reXV/Fp8f31nmb+r5+sW+7Pxfv9hX5/5avN25eL9z8XHn4uedi887F183Lv7l6OXW4sedi5c7F3/nG/bluOjW4u98w9qdb1i78w1rd75h7c43rN/5hvU737B+5xvW73zDvhz43Vr8nW9Yv/MN63e+Yf3ON6zf+YaNO9+wcecbNu58w8adb9iXI9tbi7/zDRt3vmFh5LgFbDMkYJshE7YZAiPHDUaOG4wcNxg5bjBy3GDJswZLnrUJ688T1p9h5LjByHGDJc8aLHnWYMmzBkueNRg5bjBy3GDkuMHIcYOR4wYjxw1GjhuMHDdY8qzBkmetYPNzweZnGDluMHLcYcmzDkuedVjyrMPIcT9Y87PDyHGHkeMOI8cdRo47LHnWB6w/D1h/hiXPOix51l9Pjj+phzU/O4wcdxg57rDkWYclzzosedZhybMOI8cdRo47jBx3GDnuMHLcYeS4w8hxh5HjDkuedVjyrCtsflbY/AxLnnVY8qzDkmcdljzrsORZhyXPOix51mHJsw5LnnVY8qzDkmcdljzrBuvPBuvPsORZhyXPusPmZ4fNz7DkWYclzzosedZhybMOS551WPKsw5JnHZY867DkWYclzzosedZhybMesP4csP4MS551GD/oMH7QYfygw5JnHcYPOowfdBg/6DB+0GH8oMOSZx2WPOuw5FmHJc86jB90GD/oMH7QYfygw5JnHZY86wmbnxM2P8P4QYfxgw7jBx3GDzqMH3QYP+iw5FmHJc86LHnWYcmzDuMHHcYPBowfDBg/GLDk2ThY+3Xrf4XVw5qfA8YPBowfDBg/GDB+MGD8YMD4wYAlzwYseTZgybMBS54NGD8YMH4wYPxgwPjBgCXPBix5NgQ2PwtsfobxgwHjBwPGDwaMHwwYPxgwfjBgybMBS54Nhc3PCpufYfxgwPjBgPGDAeMHQ1n7daGs/bow2PxssPkZxg8GjB8MGD8YMH4wYPxgwPjBMNj8bLD52WHzs8PmZxg/GDB+MGD8YMD4wXDWfl04a78uHDY/O2x+hvGDAeMHA8YPBowfDBg/GDB+MAI2Pwdsfg7Y/Byw+RnGDwaMHwwYPxgwfjBezw/+et6YsP06WP5gwPIHA8YPBowfDBg/GDB+MGD8YMD4wYDlDwYsfzBg+YMByx8MGD8YMH4wYPxgwPjBKNh+XcH262D5gwHLHwwYPxgwfjBg/GDA+MEJ4wcnjB+csPzBCcsfnAdrfp6w/MEJ4wcnjB+cMH5wwvjBOVj7dXOw9usmLH9wwvIHJ4wfnDB+cML4wQnjByeMH5wwfnDC8gcnLH9wwvIHJyx/cML4wQnjByeMH5wwfnAKa79uCmu/bsLyBycsf3DC+MEJ4wcnjB+cMH5wwvjBCeMHJyx/cMLyBycsf3DC8gcnjB+cMH5wwvjBCeMHp7H266ax9usmLH9wwvIHJ4wfnDB+cML4wQnjByeMH5wwfnDC8gcnLH9wwvIHJyx/cML4wQnjByeMH5wwfnC+nh/89bwRrP26CcsfnLD8wQnjByeMH5wwfnDC+MEJ4wcnjB+csPzBCcsfnLD8wQnLH5wwfnDC+MEJ4wcnjB+cCduvS9h+HSx/cMLyByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvIHJyx/cMLyBycsf3DC+MEJ4wcnjB+cMH4wD9Z+XR6s/bqE5Q8mLH8wD1Z/Thg/mDB+MGH8YML4wYTxgwnLH0xY/mDC8gcTlj+YMH4wYfxgwvjBhPGDOVj7dTlY+3UJyx9MWP5gwvjBhPGDCeMHE8YPJowfTBg/mLD8wYTlDyYsfzBh+YMJ4wcTxg8mjB9MGD+YytqvS2Xt1yUsfzBh+YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvIHE5Y/mLD8wYTlDyaMH0wYP5gwfjBh/GC+nh/89bzhrP26hOUPJix/MGH8YML4wYTxgwnjBxPGDyaMH0xY/mDC8gcTlj+YsPzBhPGDCeMHE8YPJowfzAnbr5uw/TpY/mDC8gcTxg8mjB9MGD+YMH4wYfxgwvjBhOUPJix/MGH5gwnLH0wYP5gwfjBh/GDC+MEs2H5dwfbrYPmDCcsfTBg/mDB+MGH8YML4wYTxgwnjBwuWP1iw/MGC5Q8WLH+wDlZ/Lhg/WDB+sGD8YB2s/bo6WPt1BcsfLFj+YMH4wYLxgwXjBwvGDxaMHywYP1iw/MGC5Q8WLH+wYPmDBeMHC8YPFowfLBg/WMLaryth7dcVLH+wYPmDBeMHC8YPFowfLBg/WDB+sGD8YMHyBwuWP1iw/MGC5Q8WjB8sGD9YMH6wYPxgvZ4f/PW8Yaz9uoLlDxYsf7Bg/GDB+MGC8YMF4wcLxg8WjB8sWP5gwfIHC5Y/WLD8wYLxgwXjBwvGDxaMH6xg7ddVsPbrCpY/WLD8wYLxgwXjBwvGDxaMHywYP1gwfrBg+YMFyx8sWP5gwfIHC8YPFowfLBg/WDB+sBK2X5ew/TpY/mDB+MGC8YMF4wcLxg8WjB8sGD9YCdvfgPGDBeMHC5Y/WLD8wYLxgwXjBwvGDxaMH6yC7dcVqj/rwcofXPWg+vOqB9WfVz2o/rzqQfXnVQ+qP696UP151YPqz6se1Py86kF9vqEHK39w1YP6/HnV8+r+PHN8fufUr/W8uj+Lz4/vLPM39Xz9Yrfj4zu7iX0t3u5cvN+5+Lhz8fPOxeedi68bF/9y9HJr8ePOxcudi7/zDftyXHRr8Xe+YeXON6zc+YaVO9+wcucbVu98w+qdb1i98w2rd75hXw78bi3+zjes3vmG1TvfsHrnG1bvfMPanW9Yu/MNa3e+Ye3ON+zLke2txd/5hrU737AscnzVg9oMWfXANkMcthnCIsdXPbDNEBY5vuoxWD2wzRBW8uyqB9afHdafHdafWeT4qgfWn1nJs6seWH9mJc+uemD9mUWOr3pgm3sscnzVA9vcY5Hjqx5Yf2aR46seWH9mJc+uelB/2WPVA5ufJ2x+ZpHjqx5Yf2Ylz656YP2ZlTy76oH1ZxY5vuqBzc8scnzVA5ufWeT4qgfWnwvWnwvWn1nJs6se1F/GW/XA5ueCzc8scnzVA+vPrOTZVQ+rPw9W8uyqh9WfB4wcHzByfBys+XnAyPEBI8cHjBwfMHJ8wMjxwUqeXfWw/rLHGKz5eQzW/DxYybOrHlh/ZiXPrnpg/ZmVPLvqgfVnVvLsqgc2P7OSZ1c9sPmZlTy76oH1Z4H1Z4H1Z1by7KqHtV83FDY/K2x+ZiXPrnpg/ZmVPLvqgfVnVvLsqgfWn1nJs6se2PzMSp5d9cDmZ1by7KoH1p8N1p8N1p9ZybOrHtZ+3YDxgwPGDw5W8uyqB9afYfzggPGDA8YPDhg/OFjJs6se2PzMSp5d9cDmZxg/OGD84IDxgwPGDw5W8uyqh7VfNwI2PwdsfobxgwPGDw4YPzhg/OCA8YMDxg8OVvLsqgc2P7OSZ1c9sPkZxg8OGD84YPzggPGDg5U8u+qB7de9nh98Ug9sfobxgwPGDw4YPzhg/OCA8YMDxg8OVvLsqgc2P7OSZ1c9sPkZxg8OGD84YPzggPGDAkueFVjyrBys+VkO1vwsB6s/C4wfFBg/KDB+UGD8oMD4QYElzwoseVYGa36WwZqfBcYPCowfFBg/KDB+UAZrv04Ga79OBDY/C2x+hvGDAuMHBcYPCowfFBg/KDB+UAQ2PwtsflbY/Kyw+RnGDwqMHxQYPygwflCUtV8nytqvE4XNzwqbn2H8oMD4QYHxgwLjBwXGDwqMHxSDzc8Gm58NNj8bbH6G8YMC4wcFxg8KjB+U1/ODv543nLVfJ7D8QYHlDwqMHxQYPygwflBg/KDA+EGB8YMCyx8UWP6gwPIHBZY/KDB+UGD8oMD4QYHxgzJh+3UTtl8Hyx8UWP6gwPhBgfGDAuMHBcYPCowfFBg/KLD8QYHlDwosf1Bg+YMC4wcFxg8KjB8UGD8oBduvK9h+HSx/UGD5gwLjBwXGDwqMHxQYPygwflBg/KDC8gcVlj+osPxBheUP6sHqzwrjBxXGDyqMH9SDtV+nB2u/TmH5gwrLH1QYP6gwflBh/KDC+EGF8YMK4wcVlj+osPxBheUPKix/UGH8oML4QYXxgwrjB1VY+3UqrP06heUPKix/UGH8oML4QYXxgwrjBxXGDyqMH1RY/qDC8gcVlj+osPxBhfGDCuMHFcYPKowf1Nfzg7+eN4y1X6ew/EGF5Q8qjB9UGD+oMH5QYfygwvhBhfGDCssfVFj+oMLyBxWWP6gwflBh/KDC+EGF8YMarP06DdZ+ncLyBxWWP6gwflBh/KDC+EGF8YMK4wcVxg8qLH9QYfmDCssfVFj+oML4QYXxgwrjBxXGD2rC9usStl8Hyx9UWP6gwvhBhfGDCuMHFcYPKowfVBg/qLD8QYXlDyosf1Bh+YMK4wcVxg8qjB9UGD+oBduvK9Z+ncHyBw2WP2gwftBg/KAdrP5sMH7QYPygwfhBg+UPGix/0GD5gwbLHzQYP2gwftBg/KDB+EEbrP06G6z9OoPlDxosf9Bg/KDB+EGD8YMG4wcNxg8ajB80WP6gwfIHDZY/aLD8QYPxgwbjBw3GDxqMH7TX84O/njeUtV9nsPxBg+UPGowfNBg/aDB+0GD8oMH4QYPxgwbLHzRY/qDB8gcNlj9oMH7QYPygwfhBg/GD5qz9OnPWfp3B8gcNlj9oMH7QYPygwfhBg/GDBuMHDcYPGix/0GD5gwbLHzRY/qDB+EGD8YMG4wcNxg/ahO3XTdh+HSx/0GD5gwbjBw3GDxqMHzQYP2gwftBg/KDB8gcNlj9osPxBg+UPGowfNBg/aDB+0GD8oCVsvy5h+3Ww/EGD5Q8ajB80GD9oMH7QYPygwfhBg/GDBssfNFj+oMPyBx2WP+gwftBh/KAfrP7sMH7QD9Z+nR+s/TqH5Q86LH/QYfygw/hBh/GDDuMHHcYPOowfdFj+oMPyBx2WP+iw/EGH8YMO4wcdxg86jB/01/ODv543hLVf57D8QYflDzqMH3QYP+gwftBh/KDD+EGH8YMOyx90WP6gw/IHHZY/6DB+0GH8oMP4QYfxg26s/To31n6dw/IHHZY/6DB+0GH8oMP4QYfxgw7jBx3GDzosf9Bh+YMOyx90WP6gw/hBh/GDDuMHHcYPerD26zxY+3UOyx90GD/oMH7QYfygw/hBh/GDDuMHPWD7GzB+0GH8oMPyBx2WP+gwftBh/KDD+EGH8YM+Yft1E9afYfmDDssfdBg/6DB+0GH8oMP4QYfxgw7jBx2WP+iw/EGH5Q86LH/QX84Pzhyf3zn1az2v7s/i8+M7y/xNPV+/eP22+eM7r1+s2tfi7c7F+52LjzsXP+9cfN65+Lpv8fFy9HJr8ePOxcudi7/xDbvM5p2Lv/ENG8eNb9g4bnzDxnHjGzaOO9+w48437LjzDTvufMOOO9+wLwd+txZ/5xt23PmGHXe+Ycedb9hx5xtW7nzDyp1vWLnzDSt3vmFfjmxvLf7ON6zc+YaFkeMhrM2QENZmSChrMyRg5HjAyPGAkeMBI8cDRo4HLHk2YMmzobD+rLD+DCPHA0aOByx5NmDJswFLng1Y8mzAyPGAkeMBI8cDRo4HjBwPGDkeMHI8YOR4wJJnA5Y8Gw6bnx02P8PI8YCR4wFLng1Y8mzAkmcDRo4HjBwPGDkeMHI8YOR4wMjxgCXPxoT15wnrz7Dk2YAlz8bryfEn9cDmZxg5HjByPGDJswFLng1Y8mzAkmcDRo4HjBwPGDkeMHI8YOR4wMjxgJHjASPHA5Y8G7Dk2SjY/Fyw+RmWPBuw5NmAJc8GLHk2YMmzAUuenbDk2QlLnp2w5NkJS56dB6s/T1jy7DxY/XkerP48YcmzE5Y8Owdrfp6DNT9PWPLshCXPTljy7IQlz05Y8uyEJc9OWPLshCXPTljy7IQlz05Y8uyEJc9OgfVngfVnWPLshPGDE8YPThg/OGHJsxPGD04YPzhh/OCE8YMTxg9OWPLshCXPTljy7IQlz04YPzhh/OCE8YMTxg9OWPLshCXPToPNzwabn2H84ITxgxPGD04YPzhh/OCE8YMTljw7YcmzE5Y8O2HJsxPGD04YPzhh/OCE8YMTljw7g7VfN1/PDz6pBzY/w/jBCeMHJ4wfnDB+cML4wQnjBycseXbCkmcnLHl2wpJnJ4wfnDB+cML4wQnjBycseXbCkmdnwubnhM3PMH5wwvjBCeMHJ4wfnDB+cML4wQlLnp2w5NlZsPm5YPMzjB+cMH5wwvjBCeMHZ8H264q1X5cHa37OgzU/J4wfTBg/mAerPyeMH0wYP5gwfjAP1vycB2t+zsGan3Ow5ueE8YMJ4wcTxg8mjB/Mwdqvy8Har8vBmp9zwOZnGD+YMH4wYfxgwvjBhPGDCeMHU2Dzs8DmZ4HNzwKbn2H8YML4wYTxgwnjB/P1/OCv5w1l7dclLH8wYfmDCeMHE8YPJowfTBg/mDB+MGH8YMLyBxOWP5iw/MGE5Q8mjB9MGD+YMH4wYfxgOmu/Lp21X5ew/MGE5Q8mjB9MGD+YMH4wYfxgwvjBhPGDCcsfTFj+YMLyBxOWP5gwfjBh/GDC+MGE8YM5Yft1E7ZfB8sfTFj+YML4wYTxgwnjBxPGDyaMH0wYP5iw/MGE5Q8mLH8wYfmDCeMHE8YPJowfTBg/mAnbr0vYfh0sfzBh+YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvIHE5Y/WLD8wYLlDxaMHywYP1gHqz8XjB+sg7VfVwdrv65g+YMFyx8sGD9YMH6wYPxgwfjBgvGDBeMHC5Y/WLD8wYLlDxYsf7Bg/GDB+MGC8YMF4wfr9fzgr+cNYe3XFSx/sGD5gwXjBwvGDxaMHywYP1gwfrBg/GDB8gcLlj9YsPzBguUPFowfLBg/WDB+sGD8YBlrv66MtV9XsPzBguUPFowfLBg/WDB+sGD8YMH4wYLxgwXLHyxY/mDB8gcLlj9YMH6wYPxgwfjBgvGDFaz9ugrWfl3B8gcLlj9YMH6wYPxgwfjBgvGDBeMHC8YPFix/sGD5gwXLHyxY/mDB+MGC8YMF4wcLxg/WhO3XTdh+HSx/sGD5gwXjBwvGDxaMHywYP1gwfrBg/GDB8gcLlj9YsPzBguUPFowfLBg/WDB+sGD8YBVsv65g+3Ww/MFi5Q/aweIHVz2o/rzqQfXnVQ+qP696UP151YPqz6se1Py86kHNz6se1Py86kHNz3aw+MFVD6w/s/jBVQ+sP7+eH/z1vDFQ+3WrHtT8vOpBzc+rHlh/ZvGDdrD4wVUPrD+z+MFVD6w/s/IHVz2w+ZmVP7jqgc3PLH5w1QPrzyx+cNUD68+K2q9b9aD261Y9sPmZlT+46oH1ZxY/uOqB9WcWP2gHix9c9cD6Myt/cNUDm59Z+YOrHtj8zOIHVz2w/sziB1c9sP7sqP26VQ9qv27VA5ufWfmDqx5Yf2bxg6seWH9m8YOrHlh/ZvGDdrDyB1c9sPmZlT+46oHNzyx+cNUD688sfnDVA+vPgdqvW/XA9utY+YOrHtj8zOIHVz2w/sziB1c9sP7M4gdXPbD+zMofXPXA5mdW/uCqBzY/s/jBVQ+sP7P4wVUPrD8nbL8uYft1rPzBVQ9sfmbxg6seWH9m8YOrHlh/ZvGDqx5Yf2blD656YPMzK39w1cOanweMHxwwfnDA+MEB4wfHYah5Yxys/brByh9c9bDm5wHjBweMHxwwfnDA+MEB4wcHjB8crPzBVQ9rfh6s/MFVD2t+HjB+cMD4wQHjBweMHxzC2q8bwtqvG6z8wVUPbH6G8YMDxg8OGD84YPzggPGDA8YPDlb+4KoHNj+z8gdXPbD5GcYPDhg/OGD84IDxg8NY+3XDWPt1g5U/uOqB9WcYPzhg/OCA8YMDxg8OGD84jLW/MWD84IDxg4OVP7jqgfVnGD84YPzggPGDA8YPDmft1w2H9WdW/uCqB9afYfzggPGDA8YPDhg/OGD84IDxg4OVP7jqgX2+wcofXPXAPn9+OT84c3x+59Sv9by6P4vPj+8s8zf1fP1it+PjO7uJfS3e7ly837n4uHPx887F552LrxsX/3L0cmvx487Fy52Lv/MN+3JcdGvxd75h8843bN75hs0737B55xu27nzD1p1v2LrzDVt3vmFfDvxuLf7ON2zd+YatO9+wdecbtm58w8px4xtWjhvfsHLc+IaV48Y3rBw3vmHluPENK8eNb1iBkeNysDZD5GBthshgbYYIjBwXGDkuMHJcYOS4wMhxgSXPCix5VgasPw9Yf4aR4wIjxwWWPCuw5FmBJc8KLHlWYOS4wMhxgZHjAiPHBUaOC4wcFxg5LjByXGDJswJLnhWFzc8Km59h5LjAyHGBJc8KLHlWYMmzAiPHBUaOC4wcFxg5LjByXGDkuMCSZ8Vh/dlh/RmWPCuw5Fl5PTn+pB7Y/AwjxwVGjgsseVZgybMCS54VWPKswMhxgZHjAiPHBUaOC4wcFxg5LjByXGDkuMCSZwWWPCsTNj9P2PwMS54VWPKswJJnBZY8K7DkWYElzwoseVZgybMCS54VWPKswJJnBZY8Kwnrzwnrz7DkWYElz0rB5ueCzc+w5FmBJc8KLHlWYMmzAkueFVjyrMCSZwWWPKuw5FmFJc8qLHlWYcmzerD6sx6s/qyw5FmF8YMK4wcVxg8qLHlWYfygwvhBhfGDCuMHFcYPKix5VmHJswpLnlVY8qzC+EGF8YMK4wcVxg8qLHlWYcmzKrD5WWDzM4wfVBg/qDB+UGH8oML4QYXxgwpLnlVY8qzCkmcVljyrMH5QYfygwvhBhfGDCkueVWPt1+nr+cEn9cDmZxg/qDB+UGH8oML4QYXxgwrjBxWWPKuw5FmFJc8qLHlWYfygwvhBhfGDCuMHFZY8q7DkWQ3Y/Byw+RnGDyqMH1QYP6gwflBh/KDC+EGFJc8qLHlWJ2x+nrD5GcYPKowfVBg/qDB+UCdsv27C9usSNj8nbH6G8YMK4wcVxg8qjB9UGD+oMH5QEzY/J2x+Ltj8XLD5GcYPKowfVBg/qDB+UAu2X1ew/bqCzc/Fmp8Nxg8ajB80GD9oMH7QDlZ/Nhg/aAdrfraDNT/bwZqf7WDNzwbjBw3GDxqMHzQYP2iv5wd/PW8M1n6dwfIHDZY/aDB+0GD8oMH4QYPxgwbjBw3GDxosf9Bg+YMGyx80WP6gwfhBg/GDBuMHDcYPmrL260xZ+3UGyx80WP6gwfhBg/GDBuMHDcYPGowfNBg/aLD8QYPlDxosf9Bg+YMG4wcNxg8ajB80GD9oztqvM2ft1xksf9Bg+YMG4wcNxg8ajB80GD9oMH7QYPygwfIHDZY/aLD8QYPlDxqMHzQYP2gwftBg/KAFa7/OArZfB8sfNFj+oMH4QYPxgwbjBw3GDxqMHzQYP2iw/EGD5Q8aLH/QYPmDBuMHDcYPGowfNBg/aAnbr0vYfh0sf9Bg+YMG4wcNxg8ajB80GD9oMH7QYPygwfIHDZY/aLD8QYPlDzqMH3QYP+gwftBh/KAfhpo3/GDt1zksf9Bh+YMO4wcdxg86jB90GD/oMH7QYfygw/IHHZY/6LD8QYflDzqMH3QYP+gwftBh/KALa7/OhbVf57D8QYflDzqMH3QYP+gwftBh/KDD+EGH8YMOyx90WP6gw/IHHZY/6DB+0GH8oMP4QYfxg26s/To31n6dw/IHHZY/6DB+0GH8oMP4QYfxgw7jBx3GDzosf9Bh+YMOyx90WP6gw/hBh/GDDuMHHcYPurP269xZ+3UOyx90WP6gw/hBh/GDDuMHHcYPOowfdBg/6LD8QYflDzosf9Bh+YMO4wcdxg86jB90GD/oE7ZfN2H7dbD8QYflDzqMH3QYP+gwftBh/KDD+EGH8YMOyx90WP6gw/IHHZY/6DB+0GH8oMP4QYfxg/56fvDX80bB9utg+YMOyx90GD/oMH4wYPxgwPjBgPGDAeMH178+WD2s+Tlg+YMByx8MGD8YMH4wYPxgwPjBGKz9uhis/bqA5Q8GLH8wYPxgwPjBgPGDAeMHA8YPBowfDFj+YMDyBwOWPxiw/MGA8YMB4wcDxg8GjB8MZe3XhbL26wKWPxiw/MGA8YMB4wcDxg8GjB8MGD8YMH4wYPmDAcsfDFj+YMDyBwPGDwaMHwwYPxgwfjCMtV8XxtqvC1j+YMDyBwPGDwaMHwwYPxgwfjBg/GDA+MGA5Q8GLH8wYPmDAcsfDBg/GDB+MGD8YMD4wQjWfl0Ea78uYPmDAcsfDBg/GDB+MGD8YMD4wYDxgwHjBwOWPxiw/MGA5Q8GLH8wYPxgwPjBgPGDAeMH4/X84K/njYTt18HyBwOWPxgwfjBg/GDA+MGA8YMB4wcDxg8GLH8wYPmDAcsfDFj+YMD4wYDxgxPGD04YPzgP1n7dPFj7dfNgzc8Tlj84YfzghPGDE8YPThg/OGH84ITxgxOWPzhh+YMTlj84YfmDE8YPThg/OGH84ITxg1NY+3VTWPt1E5Y/OGH84ITxgxPGD04YPzhh/OCE8YNTWPsbE8YPThg/OGH5gxOWPzhh/OCE8YMTxg9OGD84lbVfNxXWn2H5gxOWPzhh/OCE8YMTxg9OGD84YfzghPGDE5Y/OGH5gxOWPzhh+YPz5fzgzPH5nVO/1vPq/iw+P76zzN/U8/WL3Y6P7+wm9rV4u3Pxfufi487FzzsXn3cuvm5c/MvRy63FjzsXL3cu/s437Mtx0a3F3/mGjTvfsHHnGzbufMPGnW/Yeecbdt75hp13vmHnnW/YlwO/W4u/8w0773zDzjvfsPPON+y88w2bd75h8843bN75hs0737AvR7a3Fn/nGzbvfMPCyPGZsM2QhG2GFGwzBEaOTxg5PmHk+ISR4xNGjk9Y8uyEJc/OgvXnYvXnhJHjCSPHE5Y8m7Dk2TxY/TlhybMJI8cTRo4njBxPGDmeMHI8YeR4wsjxhJHjCUueTVjybA7W/JyDNT8njBxPGDmesOTZhCXPJix5NmHkeMLI8YSR4wkjxxNGjieMHE9Y8mwqrD8rrD/DkmcTljybryfHn9QDm59h5HjCyPGEJc8mLHk2YcmzCUueTRg5njByPGHkeMLI8YSR4wkjxxNGjieMHE9Y8mzCkmfTYfOzw+ZnWPJswpJnE5Y8m7Dk2YQlzyYseTZhybMJS55NWPJswpJnE5Y8m7Dk2QxYfw5Yf4YlzyYseTYnbH6esPkZljybsOTZhCXPJix5NmHJswlLnk1Y8mzCkmcTljybsOTZhCXPJix5NhPWnxPWn2HJswnjBxPGDyaMH0xY8mzC+MGE8YMJ4wcTxg8mjB9MWPJswpJnE5Y8m7Dk2YLxgwXjBwvGDxaMH6zDUPNGwZJn62DNz3Ww5ueC8YMF4wcLxg8WjB8sGD9YMH6wYMmzBUueLVjybMGSZwvGDxaMHywYP1gwfrBgybMlrP26ej0/+KQe2PwM4wcLxg8WjB8sGD9YMH6wYPxgwZJnC5Y8W7Dk2YIlzxaMHywYP1gwfrBg/GDBkmcLljxbBpufDTY/w/jBgvGDBeMHC8YPFowfLBg/WLDk2YIlz5bD5meHzc8wfrBg/GDB+MGC8YPlrP26ctZ+XQVsfg7Y/AzjBwvGDxaMHywYP1gwfrBg/GAFbH4O2Pw8YfPzhM3PMH6wYPxgwfjBgvGDNWH7dRO2Xzdh8/OEzc8wfrBg/GDB+MGC8YMF4wcLxg9WwubnhM3PCZufEzY/w/jBgvGDBeMHC8YP1uv5wV/PGwXbr4PlDxYsf7Bg/GCx+EE/WPzgqgfVn1c9qP686kH151UPan5e9aDm51UPan5e9aDm51UPqj+vemD9mcUPrnpg/Xmg9utWPaj9ulUPan5e9aDm51UPrD+z+MFVD6w/s/hBP1j84KoH1p9Z+YOrHtj8zMofXPXA5mcWP7jqgfVnFj+46oH1Z0Xt1616UPt1qx7Y/MzKH1z1wPozix9c9cD6M4sfXPXA+jOLH/SDlT+46oHNz6z8wVUPbH5m8YOrHlh/ZvGDqx5YfzbUft2qB7Vf5wcrf3DVA5ufWfzgqgfWn1n84KoH1p9Z/OCqB9afWfmDqx7Y/MzKH1z1wOZnFj+46oH1ZxY/uOqB9edA7detelD7dase2PzMyh/0g8UPrnpg/ZnFD656YP2ZxQ+uemD9mZU/uOqBzc+s/MFVD2x+ZvGDqx5Yf2bxg6seWH9+PT/463kjYft1rPzBVQ9sfmbxg6seWH9m8YOrHlh/ZvGDqx5Yf2blD656YPMzK39w1QObn1n84KqH1Z8HjB8cMH5wHKz9unGw9uvGwZqfByt/cNXD6s8Dxg8OGD84YPzggPGDA8YPDlb+4KqHNT8PVv7gqoc1Pw8YPzhg/OCA8YMDxg8OYe3XDWHt1w1W/uCqBzY/w/jBAeMHB4wfHDB+cMD4wQHjBwcrf3DVA5ufWfmDqx7Y/AzjBweMHxwwfnDA+MGhrP26oaz9usHKH1z1wOZnGD84YPzggPGDA8YPDhg/OGD84GDlD656YPMzK39w1QObn2H84IDxgwPGDw4YPzictV83nLVfN1j5g6se2PwM4wcHjB8cMH5wwPjBAeMHB4wfHKz8wVUPbH5m5Q+uemDzM4wfHDB+cMD4wQHjB8fr+cFfzxsTtl/Hyh9c9cDmZxg/OGD84IDxgwPGDw4YPzhg/OBg5Q+uemDzMyt/cNUDm59h/OCA8YMDxg8OGD84CrZfV7D9Olb+4KoHNj/D+MEB4wcHjB8cMH5QYPygwPhBgeUPCix/UA7W/Cyw/EGB8YMC4wcFxg8KjB+Uwdqvk8HarxNY/qDA8gcFxg8KjB8UGD8oMH5QYPygwPhBgeUPCix/UGD5gwLLHxQYPygwflBg/KDA+EER1n6dCGu/TmD5gwLLHxQYPygwflBg/KDA+EGB8YMC4wcFlj8osPxBgeUPCix/UGD8oMD4QYHxgwLjB8VY+3VirP06geUPCix/UGD8oMD4QYHxgwLjBwXGDwqMHxRY/qDA8gcFlj8osPxBgfGDAuMHBcYPCowflNfzg7+eN4K1Xyew/EGB5Q8KjB8UGD8oMH5QYPygwPhBgfGDAssfFFj+oMDyBwWWPygwflBg/KDA+EGB8YOSsP26hO3XwfIHBZY/KDB+UGD8oMD4QYHxgwLjBwXGDwosf1Bg+YMCyx8UWP6gwPhBgfGDAuMHBcYP6sHar9ODtV+nsPxBhfGDerD6s8L4QYXxgwrjBxXGD+rB2t9QGD+oMH5QYfmDCssfVBg/qDB+UGH8oML4QR2s/TodsP4Myx9UWP6gwvhBhfGDCuMHFcYPKowfVBg/qLD8QYXlDyosf1Bh+YP6cn5w5vj8zqlf63l1fxafH99Z5m/q+frFbsfHd3YT+1q83bl4v3Pxcefi552LzzsXXzcu/uXo5dbix52LlzsXf+cb9uW46Nbi73zD2p1vWLvzDWt3vmHtzjes3/mG9TvfsH7nG9bvfMO+HPjdWvydb1i/8w3rd75h/c43rN/5ho0737Bx5xs27nzDxp1v2Jcj21uLv/MNG3e+YWHkuAZsMyRgmyETthkCI8cVRo4rjBxXGDmuMHJcYcmzCkue1QnrzxPWn2HkuMLIcYUlzyoseVZhybMKS55VGDmuMHJcYeS4wshxhZHjCiPHFUaOK4wcV1jyrMKSZ7Vg83PB5mcYOa4wctxgybMGS541WPKswchxO1jzs8HIcYOR4wYjxw1GjhssedYGrD8PWH+GJc8aLHnWXk+OP6mHNT8bjBw3GDlusORZgyXPGix51mDJswYjxw1GjhuMHDcYOW4wctxg5LjByHGDkeMGS541WPKsKWx+Vtj8DEueNVjyrMGSZw2WPGuw5FmDJc8aLHnWYMmzBkueNVjyrMGSZw2WPGsG688G68+w5FmDJc+aw+Znh83PsORZgyXPGix51mDJswZLnjVY8qzBkmcNljxrsORZgyXPGix51mDJsxaw/hyw/gxLnjUYP2gwftBg/KDBkmcNxg8ajB80GD9oMH7QYPygwZJnDZY8a7DkWYMlzxqMHzQYP2gwftBg/KDBkmcNljxrCZufEzY/w/hBg/GDBuMHDcYPGowfNBg/aLDkWYMlzxosedZgybMG4wcNxg86jB90GD/osORZP1j7dX6w5mc/WPOzw/hBh/GDDuMHHcYPOowfdBg/6LDkWYclzzosedZhybMO4wcdxg86jB90GD/osORZhyXPusDmZ4HNzzB+0GH8oMP4QYfxgw7jBx3GDzosedZhybOusPlZYfMzjB90GD/oMH7QYfygK2u/zpW1X+cGm58NNj/D+EGH8YMO4wcdxg86jB90GD/oBpufDTY/O2x+dtj8DOMHHcYPOowfdBg/6M7ar3Nn7de5w+Znh83PMH7QYfygw/hBh/GDDuMHHcYPesDm54DNzwGbnwM2P8P4QYfxgw7jBx3GD/rr+cFfzxsTtl8Hyx90WP6gw/hBh/GDDuMHHcYPOowfdBg/6LD8QYflDzosf9Bh+YMO4wcdxg86jB90GD/oBduvK9h+HSx/0GH5gw7jBx3GDzqMH3QYPxgwfjBg/GDA8gcDlj+4uhOsHtb8HDB+MGD8YMD4wYDxgzFY+3UxWPt1AcsfDFj+YMD4wYDxgwHjBwPGDwaMHwwYPxiw/MGA5Q8GLH8wYPmDAeMHA8YPBowfDBg/GMLarwth7dcFLH8wYPmDAeMHA8YPBowfDBg/GDB+MGD8YMDyBwOWPxiw/MGA5Q8GjB8MGD8YMH4wYPxgGGu/Loy1Xxew/MGA5Q8GjB8MGD8YMH4wYPxgwPjBgPGDAcsfDFj+YMDyBwOWPxgwfjBg/GDA+MGA8YPxen7w1/NGsPbrApY/GLD8wYDxgwHjBwPGDwaMHwwYPxgwfjBg+YMByx8MWP5gwPIHA8YPBowfDBg/GDB+MBK2X5ew/TpY/mDA8gcDxg8GjB8MGD8YMH4wYPxgwPjBgOUPBix/MGD5gwHLHwwYPxgwfjBg/GDA+MF5sPbr5sHar5uw/MEJyx+cB6s/Txg/OGH84ITxgxPGD04YPzhh+YMTlj84YfmDE5Y/OGH84ITxgxPGD04YPzgHa79uDtZ+3YTlD05Y/uCE8YMTxg9OGD84YfzghPGDE8YPTlj+4ITlD05Y/uCE5Q9OGD84YfzghPGDE8YPTmXt101l7ddNWP7ghOUPThg/OGH84ITxgxPGD04YPzhh/OCE5Q9OWP7ghOUPTlj+4ITxgxPGD04YPzhh/OB8PT/463nDWft1E5Y/OGH5gxPGD04YPzhh/OCE8YMTxg9OGD84YfmDE5Y/OGH5gxOWPzhh/OCE8YMTxg9OGD84J2y/bsL262D5gxOWPzhh/OCE8YMTxg9OGD84YfzghPGDE5Y/OGH5gxOWPzhh+YMTxg9OGD84YfzghPGDs2D7dQXbr4PlD05Y/uCE8YMTxg9OGD84YfzghPGDE8YPJix/MGH5gwnLH0xY/mAerP6cMH4wYfxgwvjBPFj7dXmw9usSlj+YsPzBhPGDCeMHE8YPJowfTBg/mDB+MGH5gwnLH0xY/mDC8gcTxg8mjB9MGD+YMH4whbVfl8Lar0tY/mDC8gcTxg8mjB9MGD+YMH4wYfxgwvjBhOUPJix/MGH5gwnLH0wYP5gwfjBh/GDC+MF8PT/463nDWPt1CcsfTFj+YML4wYTxgwnjBxPGDyaMH0wYP5iw/MGE5Q8mLH8wYfmDCeMHE8YPJowfTBg/mMHar8tg7dclLH8wYfmDCeMHE8YPJowfTBg/mDB+MGH8YMLyBxOWP5iw/MGE5Q8mjB9MGD+YMH4wYfxgJmy/LmH7dbD8wYTxgwnjBxPGDyaMH0wYP5gwfjATtr8B4wcTxg8mLH8wYfmDCeMHE8YPJowfTBg/mAXbrytWfy5Y/mDB8gcLxg8WjB+sg9WfC8YPFowfLBg/WLD8wYLlDxYsf7Bg+YP1cn5w5vj8zqlf63l1fxafH99Z5m/q+frFbsfHd3YT+1q83bl4v3Pxcefi552LzzsXXzcu/uXo5dbix52LlzsXf+cb9uW46Nbi73zDyp1vWLnzDSt3vmHlzjes3vmG1TvfsHrnG1bvfMO+HPjdWvydb1i98w2rd75h9c43rN75hrU737B25xvW7nzD2p1v2Jcj21uLv/MNa3e+YWHkeBlrM6QMthnisM0QGDleMHK8YOR4wcjxgpHjBUueLVjybDmsPzusP8PI8YKR4wVLni1Y8mzBkmcLljxbMHK8YOR4wcjxgpHjBSPHC0aOF4wcLxg5XrDk2YIlz9aEzc8TNj/DyPGCkeMFS54tWPJswZJnC0aOF4wcLxg5XjByvGDkeMHI8YIlz1bB+nPB+jMsebZgybP1enL8ST2w+RlGjheMHC9Y8myxkmfjYCXPrnpQ/XnVg5qfVz2o+XnVg5qfVz2o+XnVg+rPqx5Uf171oPrzqgfWn1nJs6se1F/2WPWg5udVD2p+XvXA+jMreXbVA+vPrOTZVQ+sP7OSZ+NgJc+uemDzMyt5dtUDm59ZybOrHlh/Flh/Flh/ZiXPrnpQ+3VxKGx+Vtj8zEqeXfXA+jMreXbVA+vPrOTZVQ+sP7OSZ1c9sPmZlTy76oHNz6zk2VUPrD8brD8brD+zkmfX/4jar1v/I2x+ZvGDcbCSZ1c9sP7M4gdXPbD+zOIHVz2w/sxKnl31wOZnVvLsqgc2P7P4wVUPrD+z+MFVD6w/s5JnVz2o/bpVD2x+Dtj8zOIHVz2w/sziB1c9sP7M4gdXPbD+zEqeXfXA5mdW8uyqBzY/s/jBVQ+sP7P4wVUPrD+zkmdXPbD9utfzg0/qgc3PLH5w1QPrzyx+cNUD688sfnDVA+vPrOTZVQ9sfmYlz656YPMzix9c9cD6M4sfXPWw+vNgJc+uelj7deNgzc/jYM3P42D15wHjBweMHxwwfnDA+MEB4wcHK3l21cOan8dgzc9jsObnAeMHB4wfHDB+cMD4wTFY+3VjsPbrhsDmZ4HNzzB+cMD4wQHjBweMHxwwfnDA+MEhsPlZYPOzwuZnhc3PMH5wwPjBAeMHB4wfHMrarxvK2q8bCpufFTY/w/jBAeMHB4wfHDB+cMD4wQHjB4fB5meDzc8Gm58NNj/D+MEB4wcHjB8cMH5wvJ4f/PW84az9usHKH1z1wOZnGD84YPzggPGDA8YPDhg/OGD84GDlD656YPMzK39w1QObn2H84IDxgwPGDw4YPzgmbL9uwvbrWPmDqx7Y/AzjBweMHxwwfnDA+MEB4wcHjB8crPzBVQ9sfmblD656YPMzjB8cMH5wwPjBAeMHR8H26wq2X8fKH1z1wOZnGD84YPzggPGDA8YPDhg/OGD8oMDyBwWWPyiw/EGB5Q/KwerPAuMHBcYPCowflIO1XycHa79OYPmDAssfFBg/KDB+UGD8oMD4QYHxgwLjBwWWPyiw/EGB5Q8KLH9QYPygwPhBgfGDAuMHRVj7dSKs/TqB5Q8KLH9QYPygwPhBgfGDAuMHBcYPCowfFFj+oMDyBwWWPyiw/EGB8YMC4wcFxg8KjB+U1/ODv543jLVfJ7D8QYHlDwqMHxQYPygwflBg/KDA+EGB8YMCyx8UWP6gwPIHBZY/KDB+UGD8oMD4QYHxgxKs/ToJ1n6dwPIHBZY/KDB+UGD8oMD4QYHxgwLjBwXGDwosf1Bg+YMCyx8UWP6gwPhBgfGDAuMHBcYPSsL26xK2XwfLHxRY/qDA+EGB8YMC4wcFxg8KjB8UGD8osPxBgeUPCix/UGD5gwLjBwXGDwqMHxQYPygF268r1n6dwvIHFZY/qDB+UGH8oB6s/qwwflBh/KDC+EGF5Q8qLH9QYfmDCssfVBg/qDB+UGH8oML4QR2s/TodrP06heUPKix/UGH8oML4QYXxgwrjBxXGDyqMH1RY/qDC8gcVlj+osPxBhfGDCuMHFcYPKowf1Nfzg7+eN5S1X6ew/EGF5Q8qjB9UGD+oMH5QYfygwvhBhfGDCssfVFj+oMLyBxWWP6gwflBh/KDC+EGF8YPqrP06ddZ+ncLyBxWWP6gwflBh/KDC+EGF8YMK4wcVxg8qLH9QYfmDCssfVFj+oML4QYXxgwrjBxXGD+qE7ddN2H4dLH9QYfmDCuMHFcYPKowfVBg/qDB+UGH8oMLyBxWWP6iw/EGF5Q8qjB9UGD+oMH5QYfygJmy/LmH7dbD8QYXlDyqMH1QYP6gwflBh/KDC+EGF8YMKyx9UWP6gwfIHDZY/aDB+0GD8oB2s/mwwftAO1n6dHaz9OoPlDxosf9Bg/KDB+EGD8YMG4wcNxg8ajB80WP6gwfIHDZY/aLD8QYPxgwbjBw3GDxqMH7TX84O/njeEtV9nsPxBg+UPGowfNBg/aDB+0GD8oMH4QYPxgwbLHzRY/qDB8gcNlj9oMH7QYPygwfhBg/GDZqz9OjPWfp3B8gcNlj9oMH7QYPygwfhBg/GDBuMHDcYPGix/0GD5gwbLHzRY/qDB+EGD8YMG4wcNxg9asPbrLFj7dQbLHzQYP2gwftBg/KDB+EGD8YMG4wctYPsbMH7QYPygwfIHDZY/aDB+0GD8oMH4QYPxgzZh+3UT1p9h+YMGyx80GD9oMH7QYPygwfhBg/GDBuMHDZY/aLD8QYPlDxosf9Bezg/OHJ/fOfVrPa/uz+Lz4zvL/E09X7/Y7fj4zm5iX4u3Oxfvdy4+7lz8vHPxeefi677F+8vRy63FjzsXL3cu/sY3rB83vmH9uPEN68eNb1g/bnzD+nHjG9aPO9+w48437LjzDTvufMOOO9+wLwd+txZ/5xt23PmGHXe+Ycedb9hx5xtW7nzDyp1vWLnzDSt3vmFfjmxvLf7ON6zc+YaFkeMurM0QF9ZmiCtrM8Rh5LjDyHGHkeMOI8cdRo47LHnWYcmzrrD+rLD+DCPHHUaOOyx51mHJsw5LnnVY8qzDyHGHkeMOI8cdRo47jBx3GDnuMHLcYeS4w5JnHZY86w6bnx02P8PIcYeR4w5LnnVY8qzDkmcdRo47jBx3GDnuMHLcYeS4w8hxhyXP+oT15wnrz7DkWYclz/rryfEn9cDmZxg57jBy3GHJsw5LnnVY8qzDkmcdRo47jBx3GDnuMHLcYeS4w8hxh5HjDiPHHZY867DkWS/Y/Fyw+RmWPOuw5FmHJc86LHnWYcmzDkueDVjybMCSZwOWPBuw5NnVvWH1sPpzHKz+HAerPwcseTZgybMxWPNzDNb8HLDk2YAlzwYseTZgybMBS54NWPJswJJnA5Y8G7Dk2YAlzwYseTZgybMhsP4ssP4MS54NGD8YMH4wYPxgwJJnA8YPBowfDBg/GDB+MGD8YMCSZwOWPBuw5NmAJc8GjB8MGD8YMH4wYPxgwJJnA5Y8Gwabnw02P8P4wYDxgwHjBwPGDwaMHwwYPxiw5NmAJc8GLHk2YMmzAeMHA8YPBowfDBg/GLDk2QjWfl28nh98Ug9sfobxgwHjBwPGDwaMHwwYPxgwfjBgybMBS54NWPJswJJnA8YPBowfDBg/GDB+MGDJswFLno2Ezc8Jm59h/GDA+MGA8YMB4wcDxg8GjB8MWPJswJJno2Dzc8HmZxg/GDB+MGD8YMD4wSjYfl2x9uvmwZqf58GanyeMH5wwfnAerP48YfzghPGDE8YPzoM1P8+DNT/PwZqf52DNzxPGD04YPzhh/OCE8YNzsPbr5mDt183Bmp/ngM3PMH5wwvjBCeMHJ4wfnDB+cML4wSmw+Vlg87PA5meBzc8wfnDC+MEJ4wcnjB+cr+cHfz1vKGu/bsLyBycsf3DC+MEJ4wcnjB+cMH5wwvjBCeMHJyx/cMLyBycsf3DC8gcnjB+cMH5wwvjBCeMHp7P266az9usmLH9wwvIHJ4wfnDB+cML4wQnjByeMH5wwfnDC8gcnLH9wwvIHJyx/cML4wQnjByeMH5wwfnBO2H7dhO3XwfIHJyx/cML4wQnjByeMH5wwfnDC+MEJ4wcnLH9wwvIHJyx/cMLyByeMH5wwfnDC+MEJ4wdnwvbrErZfB8sfnLD8wQnjByeMH5wwfnDC+MEJ4wcnjB+csPzBCcsfTFj+YMLyBxPGDyaMH8yD1Z8Txg/mwdqvy4O1X5ew/MGE5Q8mjB9MGD+YMH4wYfxgwvjBhPGDCcsfTFj+YMLyBxOWP5gwfjBh/GDC+MGE8YP5en7w1/OGsPbrEpY/mLD8wYTxgwnjBxPGDyaMH0wYP5gwfjBh+YMJyx9MWP5gwvIHE8YPJowfTBg/mDB+MI21X5fG2q9LWP5gwvIHE8YPJowfTBg/mDB+MGH8YML4wYTlDyYsfzBh+YMJyx9MGD+YMH4wYfxgwvjBDNZ+XQZrvy5h+YMJyx9MGD+YMH4wYfxgwvjBhPGDCeMHE5Y/mLD8wYTlDyYsfzBh/GDC+MGE8YMJ4wdzwvbrJmy/DpY/mLD8wYTxgwnjBxPGDyaMH0wYP5gwfjBh+YMJyx9MWP5gwvIHE8YPJowfTBg/mDB+MAu2X1ew/TpY/mDC8gcLxg8WjB8sGD9YMH6wDlZ/Lhg/WLD8wYLlDxYsf7Bg+YMF4wcLxg8WjB8sGD9Yr+cHfz1vDNZ+XcHyBwuWP1gwfrBg/GDB+MGC8YMF4wcLxg8WLH+wYPmDBcsfLFj+YMH4wYLxgwXjBwvGD5ay9utKWft1BcsfLFj+YMH4wYLxgwXjBwvGDxaMHywYP1iw/MGC5Q8WLH+wYPmDBeMHC8YPFowfLBg/WM7arytn7dcVLH+wYPmDBeMHC8YPFowfLBg/WDB+sGD8YMHyBwuWP1iw/MGC5Q8WjB8sGD9YMH6wYPxgBWu/rgK2XwfLHyxY/mDB+MGC8YMF4wcLxg8WjB8sGD9YsPzBguUPFix/sGD5gwXjBwvGDxaMHywYP1gJ269L2H4dLH+wYPmDBeMHC8YPFowfLBg/WDB+sGD8YMHyBwuWP1iw/MFi5Q/Og8UPrnpQ/XnVg+rPqx5Uf171GGneWPWg9utWPaj5edWDmp9XPaj+vOqB9WcWP7jqgfVnFj+46oH1Z1b+4KoHNT+velDz86oHNT+vemD9mcUPrpeF9WcWP7heFrVft14WtV+3XhY2P7PyB9fLwvozix9cLwvrzyx+cB4sfnDVA+vPrPzBVQ9sfmblD656YPMzix9c9cD6M4sfXPXA+rOh9utWPaj9ulUPbH5m8YOrHlh/ZvGDqx5Yf2bxg6seWH821P7GPFj84KoH1p9Z+YOrHlh/ZvGDqx5Yf2bxg6seWH921H7dqgfWn1n5g6seWH9m8YOrHlh/ZvGDqx5Yf2bxg6seWH9m5Q+uemCfb7DyB1c9sM+fX84Pzhyf3zn1az2v7s/i8+M7y/xNPV+/2O34+M5uYl+LtzsX73cuPu5c/Lxz8Xnn4uvGxb8cvdxa/Lhz8XLn4u98w74cF91a/J1v2LzzDZt3vmHzzjds3vmGrTvfsHXnG7bufMPWnW/YlwO/W4u/8w1bd75h6843bN35hq0b37DjuPENO44b37DjuPENO44b37DjuPENO44b37DjuPENO2Dk+DhYmyHjYG2GjMHaDBkwcnzAyPEBI8cHjBwfMHJ8sJJnVz2w/jxg/XnA+jOMHB8wcnywkmdXPbD+zEqeXfXA+jOMHB8wcnzAyPEBI8cHjBwfMHJ8wMjxASPHByt5dtXD+sseQ2Hzs8LmZxg5PmDk+GAlz656YP2ZlTy76oH1Zxg5PmDk+ICR4wNGjg8YOT5YybNzOKw/O6w/s5JnVz2sv4w3Xk+OP6kHNj/DyPEBI8cHK3l21QPrz6zk2VUPrD/DyPEBI8cHjBwfMHJ8wMjxASPHB4wcHzByfLCSZ1c9rL/sMSZsfp6w+ZmVPLvqgfVnVvLsqgfWn1nJs6seWH9mJc+uemDzMyt5dtUDm59ZybOrHlh/Tlh/Tlh/ZiXPrnpg+3UFm58LNj+zkmdXPbD+zEqeXfXA+jMreXbVA+vPrOTZVQ9rfhZY8qzAkmcFljwrsORZOVj9WQ5WfxZY8qzA+EGB8YMC4wcFljwrMH5QYPygwPhBgfGDAuMHBZY8K7DkWYElzwoseVZg/KDA+EGB8YMC4wcFljwrsORZEdj8LLD5GcYPCowfFBg/KDB+UGD8oMD4QYElzwoseVZgybMCS54VGD8oMH5QYPygwPhBgSXPirH26+T1/OCTemDzM4wfFBg/KDB+UGD8oMD4QYHxgwJLnhVY8qzAkmcFljwrMH5QYPygwPhBgfGDAkueFVjyrARsfg7Y/AzjBwXGDwqMHxQYPygwflBg/KDAkmcFljwrEzY/T9j8DOMHBcYPCowfFBg/KBO2Xzdh+3UJm58TNj/D+EGB8YMC4wcFxg8KjB8UGD8oCZufEzY/F2x+Ltj8DOMHBcYPCowfFBg/KAXbryvYfl3B5udizc8K4wcVxg8qjB9UGD+oB6s/K4wf1IM1P+vBmp/1YM3PerDmZ4XxgwrjBxXGDyqMH9TX84O/njcGa79OYfmDCssfVBg/qDB+UGH8oML4QYXxgwrjBxWWP6iw/EGF5Q8qLH9QYfygwvhBhfGDCuMHVVn7daqs/TqF5Q8qLH9QYfygwvhBhfGDCuMHFcYPKowfVFj+oMLyBxWWP6iw/EGF8YMK4wcVxg8qjB9UZ+3XqbP26xSWP6iw/EGF8YMK4wcVxg8qjB9UGD+oMH5QYfmDCssfVFj+oMLyBxXGDyqMH1QYP6gwflCDtV+nAduvg+UPKix/UGH8oML4QYXxgwrjBxXGDyqMH1RY/qDC8gcVlj+osPxBhfGDCuMHFcYPKowf1ITt1yVsvw6WP6iw/EGF8YMK4wcVxg8qjB9UGD+oMH5QYfmDCssfVFj+oMLyBw3GDxqMHzQYP2gwftAOQ80bdrD26wyWP2iw/EGD8YMG4wcNxg8ajB80GD9oMH7QYPmDBssfNFj+oMHyBw3GDxqMHzQYP2gwftCEtV9nwtqvM1j+oMHyBw3GDxqMHzQYP2gwftBg/KDB+EGD5Q8aLH/QYPmDBssfNBg/aDB+0GD8oMH4QTPWfp0Za7/OYPmDBssfNBg/aDB+0GD8oMH4QYPxgwbjBw2WP2iw/EGD5Q8aLH/QYPygwfhBg/GDBuMHzVn7deas/TqD5Q8aLH/QYPygwfhBg/GDBuMHDcYPGowfNFj+oMHyBw2WP2iw/EGD8YMG4wcNxg8ajB+0Cduvm7D9Olj+oMHyBw3GDxqMHzQYP2gwftBg/KDB+EGD5Q8aLH/QYPmDBssfNBg/aDB+0GD8oMH4QXs9P/jreaNg+3Ww/EGD5Q8ajB80GD/oMH7QYfygw/hBh/GDfrDmZ4flDzosf9Bh+YMO4wcdxg86jB90GD/og7Vf54O1X+ew/EGH5Q86jB90GD/oMH7QYfygw/hBh/GDDssfdFj+oMPyBx2WP+gwftBh/KDD+EGH8YOurP06V9Z+ncPyBx2WP+gwftBh/KDD+EGH8YMO4wcdxg86LH/QYfmDDssfdFj+oMP4QYfxgw7jBx3GD7qx9uvcWPt1DssfdFj+oMP4QYfxgw7jBx3GDzqMH3QYP+iw/EGH5Q86LH/QYfmDDuMHHcYPOowfdBg/6MHar/Ng7dc5LH/QYfmDDuMHHcYPOowfdBg/6DB+0GH8oMPyBx2WP+iw/EGH5Q86jB90GD/oMH7QYfygv54f/PW8kbD9Olj+oMPyBx3GDzqMH3QYP+gwftBh/KDD+EGH5Q86LH/QYfmDDssfdBg/6DB+MGD8YMD4wThY+3VxsPbr1v8Kq4c1PweMHwwYPxgwfjBg/GDA+MGA8YMByx8MWP5gwPIHA5Y/GDB+MGD8YMD4wYDxgyGs/boQ1n5dwPIHA8YPBowfDBg/GDB+MGD8YMD4wRDW/kbA+MGA8YMByx8MWP5gwPjBgPGDAeMHA8YPhrL260Jh/RmWPxiw/MGA8YMB4wcDxg8GjB8MGD8YMH4wYPmDAcsfDFj+YMDyB+Pl/ODM8fmdU7/W86A///gpcswn9Yxj5F+/ehz+U0UxvqtIfH58b5m/qejrF7sdHz+rm9jX8u3e5fu9y497lz/vXX7eu/y6dfmPQMy7lD/uXb7cu/x737px71s37n3rxr1v3bj3rRv3vnXj3rfuvPetO+99685737rz3rfuvPetO+99685737rz3rfuvPetO+996+a9b928962b97518963bt771s1737p571s3X3/rPtkPyMRVVLSK6sBV9Pob7MnvMUtwFSmuIsNV5LiKAvdvDdezC9ezi9az53HAnux50Hr2PGg9ex60nj0PWs+eB61nzyNwFU1cRYmrqGgVDVzPHriePXA9e+B69jDaNDIcVxFtzp6DNmfPgevZA9ezBdezBdezBdezBdezBTdnC27OFtycLbg5W3A9W3A9W3E9W3E9W4U2jajiKsLN2YqbsxXXsxXXsxXXsxXXsw3Xsw3Xsw03ZxtuzjbcnG24OdtwPdtwPdtwPdtwPdtpeyPTB64i3JztuDnbcT3bcT3bcT3bcT3bcT3bcT07cHN24ObswM3ZgZuzA9ezA9ezA9ezA9ezg7brNwO36zdxc/bEzdkT17MnrmdPXM+euJ49cT174nr2xM3ZEzdnJ27OTtycnbienbienbienbienbhdPxwHOXEc5MRxkLNwPRvHQU4cBzlxHOTEcZATx0HOKzjIJxXh5uzCzdlFm7MTx0EmjoNMHAeZOA4yD4NNI3nQdv3yoM3ZedDm7MRxkInjIBPHQSaOg0wcB5k4DjKv4CCfVESbs3PQ5uwctDk7cRxk4jjIxHGQieMgU2i7fim0Xb+8goN8UhFuzsZxkInjIBPHQSaOg0wcB5k4DjIVN2crbs6+goN8UhFuzsZxkInjIBPHQSaOg0yj7fql0Xb90nBztuHmbBwHmTgOMnEcZOI4yMRxkInjINNxc7bj5mzHzdmOm7NxHGTiOMjEcZCJ4yDTabt+6bRdvwzcnB24ORvHQSaOg0wcB5k4DjJxHGTiOMgM3JwduDl74ubsiZuzcRxk4jjIxHGQieMgc+J2/SZu12/i5uyJm7NxHGTiOMjEcZCJ4yATx0EmjoPMxM3ZiZuzEzdnJ27OxnGQieMgE8dBJo6DzCs4yF9PI4Xb9cPlQSYuDzJxHGTiOMjCcZCF4yALx0EWjoOsgzZnFy4PsnB5kIXLgywcB1k4DrJwHGThOMgatF2/GrRdv8LlQRYuD7JwHGThOMjCcZCF4yALx0EWjoMsXB5k4fIgC5cHWbg8yMJxkIXjIAvHQRaOgyyl7fqV0nb9CpcHWbg8yMJxkIXjIAvHQRaOgywcB1k4DrJweZCFy4MsXB5k4fIgC8dBFo6DLBwHWTgOsoy261dG2/UrXB5k4fIgC8dBFo6DLBwHWTgOsnAcZOE4yMLlQRYuD7JweZCFy4MsHAdZOA6ycBxk4TjICtquXwVt169weZCFy4MsHAdZOA6ycBxk4TjIwnGQheMgC5cHWbg8yMLlQRYuD7JwHGThOMjCcZCF4yDrCg7y19NI4nb9cHmQhcuDLBwHWTgOsnAcZOE4yMJxkIXjIAuXB1m4PMjC5UEWLg+ycBxk0TjIPGgc5KoI1rNXRbBdv1URbNdvVWS4imBz9qoI1rNXRbCevSqC9exVEa5n0zjIVRGuZ9PyIFdFsDl7VWS4imBz9qoI17NpHOSqCNezaRxkHgLb9VsVwXb9VkW4OZuWB7kqwvVsGge5KsL1bBoHuSrC9WwaB5kHLQ9yVYSbs2l5kKsi3JxN4yBXRbieTeMgV0W4nq2wXb9VEWzXLw9aHuSqCDdn0zjIVRGuZ9M4yFURrmfTOMhVEa5n0/IgV0W4OZuWB7kqws3ZNA5yVYTr2TQOclWE69kO2/VbFcF2/VZFuDmblgeZB42DXBXhejaNg1wV4Xo2jYNcFeF6Ni0PclWEm7NpeZCrItycTeMgV0W4nk3jIFdFuJ59BQf562lk4nb9aHmQqyLcnE3jIFdFuJ5N4yBXRbieTeMgV0W4nk3Lg1wV4eZsWh7kqgg3Z9M4yFURrmfTOMhVEa5nF27Xr3C7frQ8yFURbs6mcZCrIlzPpnGQqyJazx44DnLgOMhBy4NcFdHm7HHQ5uxBy4NcFdF69sBxkAPHQQ4cBzkGbddvDNqu36DlQa6KaHP2wHGQA8dBDhwHOXAc5MBxkAPHQQ5aHuSqCDdn0/IgV0W4ORvHQQ4cBzlwHOTAcZBDaLt+Q2i7foOWB7kqws3ZOA5y4DjIgeMgB46DHDgOcuA4yEHLg1wV4eZsWh7kqgg3Z+M4yIHjIAeOgxw4DnIYbddvGG3Xb9DyIFdFuDkbx0EOHAc5cBzkwHGQA8dBDhwHOWh5kKsi3JxNy4NcFeHmbBwHOXAc5MBxkAPHQY4rOMhfTyNB2/UbtDzIVRFuzsZxkAPHQQ4cBzlwHOTAcZADx0EOWh7kejXcnE3Lg1yvhpuzcRzkwHGQA8dBDhwHORK365e4XT9aHuSqCDdn4zjIgeMgB46DHDgOcuA4yIHjIActD3JVhJuzaXmQqyLcnI3jIAeOgxw4DnLgOEg5aLt+ctB2/QSXByk4DlIOWs8WHAcpOA5ScByk4DhIOWh7I4LjIAXHQQouD1JweZCC4yAFx0EKjoMUHAcpg7brJwPXs3F5kILLgxQcByk4DlJwHKTgOEjBcZCC4yAFlwcpuDxIweVBCi4PUi7gIGeOj+89U79WtKNnq3zcVEN9PKlo1X981m/y43tLfvfV8eOrQ37Ur/7dF6fMjy9Ol19/sfhn1eJRP3/xX5SxVuaBMt7KPFAmWpkHysxW5oEy2co8UKZame+V2cIv/++pzGhlHigjrcwDZd53Bs7x4Q4kI3/9xTnt40fM+dsv/ouM1jLukPF9p+s/JKN/GtuMYzwpwyz0ow6z+U0PeN/J/UrV39cVbG0Z72shtsr4vn7jwh7g7+tlrlT9fX3Szpbh72uqtsrYDuzfJKON+JDRzL/KaC3jjqexHdgWGdtSXXGxt6W6QvV2YFtaRjuwHTJGW6oLekC0pbpC9XZgW1pGO7AtMlrLuMHIRjuwLU9jO7AtMraluuJib0t1hertwHa0jNkObIuMbaku6AGzLdUVqrcD29IyrGXcIWM7sB1GdrYD2/I0tgPbImNbqisu9rZUF6ie7cB2tIxsB7ZFxrZUV/SAtlRXqG6t+o6W0Q5si4ztwHYY2WwHtuVpbAe2Rca2VBdc7NWW6grV24HtaBnVDmyLjG2prugB1qpfoHo7sC0tox3YFhnbge0wstUObMvT2A5sg4x6tKV6/cWuR1uqK1RvB7alZbQD2yKjtYwX9IC2VFeo3g5sS8toB7ZFxnZgG4ysHu3AdjyNox3YFhnbUl1wsY+2VFeo3g5sS8uwlnGHjG2prugBbamuUL0d2JaW0Q5si4ztwHYYWWkHtuNplHZgW2RsS3XBxS5tqa5Q3Vr1HS2jHdgWGdtSXdED2lJdoXo7sC0tox3YDhm1HdgOI6vtwLbI2A5si4xtqbbIaC3jDhnbI22RsT3SFhnb9GyRsV3MFhnf1sWsz3zqr1+8TMj4ooy9rTF5qszbeo2nyrytfXiqzNs6gqfKWCvzQJm3ndufKvO2o/hTZd52un6qzNsOzE+V6Rn4gTLeM/AjZXoGfqRMz8CPlOkZ+JEy1so8UKZn4EfKvO/H0f5ZtXh8XfDw9/2E+Zky7/uh8TNl3neb5Yky8b4LKs+Ued+dk2fKvO8ayTNl3ncz5Jky1so8UOZ99zeeKdMrGTt+CR69krFjlTd6JWOLjL1YfgEVMXsP/QrVe219R8uYvba+RcZeW7+iB1irfoHqvRS/pWW0A9siYzuwHUZ2tgPb8jS2A9shY7aluuBiz7ZUV6jeDmxLy2gHtkVGaxkv6AFtqa5QvR3YlpbRDmyLjO3AdhjZbAe242msdmBbZGxLdcHFXm2prlC9HdiWlmEt4w4Z21Jd0QPaUl2hejuwLS2jHdgWGduBbTCydrQD2/A02tEObIuMbalef7Hb0ZbqCtWtVd/RMtqBbZGxLdUVPaAt1RWqtwPb0jLage2QcbQD22FkRzuwLU9jO7AtMraluuBiH9aqX6B6O7AtLaMd2BYZ21Jd0QPaUl2hejuwHS1D2oFtkbEd2A4jK+3AtjyN7cC2yGgt4+svdmlLdYXq7cC2tIx2YFtkbEt1RQ9oS3WB6toObEfL0HZgW2RsB7bDyGo7sC1Po7WMO2RsS3XFxd6W6grV24FtaRntwLbI2Jbqgh5gbamuUL0d2I6WYe3AtsjYDmyHkTVrGXc8je3AtsjYluqKi70t1RWqtwPb0jLage2Q0dtSXdADvC3VFaq3A9vSMtqBbZHRWsYNRtbbgW2RsR3YFhnbUm2RsT3SFhnbI+2QMdojbZGxTc8WGd/WxahE/fWLVX9rB/+izNsak6fK2Nv+0/PPqsXj62cC8b724Zky7+sIninzvkP+M2Xed25/psz7juJPlJnvO10/U+Z9B+ZnyrzvJ/nPlHnfD+efKWOtzANlegZ+pEzPwI+U6Rn4kTI9Az9SpmfgB8pkz8CPlOkPjXd8aJy9+rJjZyN79WWLjNYyvn79LXtT5grVe7FmS8voxZotMvZizRU9oPdwLlC9em1nR8uodmBbZGwHtsPIVjuwLU+jtYw7ZGxLdcXF3pbqCtXbgW1pGe3AtsjYlur1PcCPtlRXqN4ObEPL8KMd2BYZ24FtMLJ+WMu442lsB7ZFxrZUV1zsbamuUL0d2JaW0Q5sh4yjLdUFPWC0pbpC9XZgW1pGO7AtMlrLuMHIjnZgW57GdmBbZGxLdcXF3pbqCtXbge1oGdIObIuMbaku6AHSluoK1duBbWkZ1jLukLEd2A4jK+3AtjyN7cC2yNiW6oqLvS3VBaprO7AdLUPbgW2RsS3VFT2gLdUVqlurvqNltAPbImM7sB1GVtuBbXka24FtkbEt1QUXu7WlukL1dmA7Woa1A9siY1uqK3qAteoXqN4ObEvLaAe2RcZ2YDuMrLUD2/I0tgPbIaO3pbrgYve2VFeo3g5sS8toB7ZFRmsZL+gBbamuUL0d2JaW0Q5si4ztwHYYWW8HtuNpjHZgW2RsS3XBxR5tqa5QvR3YlpZhLeMOGdtSXdED2lJdoXo7sC0tox3YFhnbge0wsrMd2I6ncbYD2yJjW6oLLvbZluoK1a1V39Ey2oFtkbEt1RU9oC3VFaq3A9vSMtqB7ZAx24HtMLLZDmzL09gObIuMbakuuNjTWvULVG8HtqVltAPbImNbqit6QFuqK1RvB7ajZVQ7sC0ytgPbYWSrHdiWp7Ed2BYZrWV8/cVebamuUL0d2JaW0Q5si4xtqa7oAW2pXq96HO3ANrSM9Ua0jDtkbAe2wcjG0Q5sy9NoLeMOGdtSXXGxt6W6QvV2YFtaRjuwLTK2pbqgB4y2VFeo3g5sR8sY7cC2yNgObIeRHdYy7nga24FtkbEt1RUXe1uqK1RvB7alZbQD2yGjtKW6oAdIW6orVG8HtqVltAPbIqO1jBuMrLQD2/I0tgPbImNbqisu9rZUV6jeDmxHy9B2YFtkbEt1QQ/QtlRXqN4ObEvLsJZxh4ztwHYYWW0HtuVpbAe2Rca2VFdc7G2pLlDd2oHtaBnWDmyLjG2prugBbamuUN1a9R0tox3YFhnbge0wsva2Dkwl6q9frPrb7vgXZd7WVD1V5n2Nj39WLR5fr0h/X3PyTJn39RvPlHlfC/FMmfcd858pY63MA2Xed7p+psz7DszPlHnf30I8U+Z9f7HwTJmegR8oEz0DP1KmZ+BHyvQM/EiZnoEfKWOtzANlegZ+pEzPwI+U6U2cHb+ViN7E2SJjr9Zc8Ave2as1V6jemzg7WsbsTZwtMvZqzRU9wFr1C1TvTZwtLaM3cbbI2A5sx0LTbAe25WlsB7ZDxmxLdcHFnm2prlC9HdiWltEObIuM1jJe0APaUl2hejuwLS2jHdgWGduB7TCy2Q5sx9NY7cC2yNiW6oKLvdpSXaF6O7AtLcNaxh0ytqW6oge0pbpC9XZgW1pGO7AtMrYD22Bk59EObMPTOI92YFtkbEv1+ot9Hm2prlDdWvUdLaMd2BYZ21Jd0QPaUl2hejuwLS2jHdgOGUc7sB1GdrQD2/I0tgPbImNbqgsu9mGt+gWqtwPb0jLagW2RsS3VFT2gLdUVqrcD29EypB3YFhnbge0wstIObMvT2A5si4zWMr7+Ype2VFeo3g5sS8toB7ZFxrZUV/SAtlQXqK7twHa0DG0HtkXGdmA7jKy2A9vyNFrLuEPGtlRXXOxtqa5QvR3YlpbRDmyLjG2pLugB1pbqCtXbge1oGdYObIuM7cB2GFmzlnHH09gObIuMbamuuNjbUl2hejuwLS2jHdgOGb0t1QU9wNtSXaF6O7AtLaMd2BYZrWXcYGS9HdiWp7Ed2BYZ21JdcbG3pbpC9XZgO1pGtAPbImNbqgt6QLSlukL1dmBbWoa1jDtkbAe2w8hGO7AtT2M7sC0ytqW64mJvS3WB6rMd2I6WMduBbZGxLdUVPaAt1RWqW6u+o2W0A9siYzuwHUZ2tgPb8jS2A9siY1uqCy72bEt1hertwHa0jGwHtkXGtlRX9ABr1S9QvR3YlpbRDmyLjO3AdhjZbAe25WlsB7ZDxmpLdcHFXm2prlC9HdiWltEObIuM1jJe0APaUl2hejuwLS2jHdgWGduB7TCy1Q5sw9OYRzuwLTK2pXr9xZ5HW6orVG8HtqVlWMu4Q8a2VFf0gLZUV6jeDmxLy2gHtkXGdmAbjGyOdmA7nsbRDmyLjG2pLrjYR1uqK1S3Vn1Hy2gHtkXGtlRX9IC2VFeo3g5sS8toB7ZDRmkHtsPISjuwLU9jO7AtMraluuBiF2vVL1C9HdiWltEObIuMbamu6AFtqa5QvR3Yjpah7cC2yNgObIeR1XZgW57GdmBbZLSW8fUXu7alukL1dmBbWkY7sC0ytqW6oge0pbpAdWsHtqNlWDuwLTK2A9thZO1tHZhK1F+/WPW33fEvytjbPmD+WbV4fHMRvK/xeabM+5qTZ8q8r994psz7WohnyrzvmP9EGX/fUfyZMu87XT9T5n0H5mfKvO9vIZ4pY63MA2V6Bn6kTM/Aj5TpGfiRMj0DP1KmZ+AHykTPwI+U6Rn4kTL9ofGOz96j13a2yGgt4+t/jRm9tnOF6r22s6Vl9NrOFhl7beeKHtBrOxeoPnttZ0fLmL22s0XGdmA71nZmO7AtT6O1jDtkbEt1xcXeluoK1duBbWkZ7cC2yNiW6oIekG2prlC9HdiOlpHtwLbI2A5sh5FNaxl3PI3twLbI2Jbqiou9LdUVqrcD29Iy2oHtkLHaUl3QA6ot1RWqtwPb0jLagW2R0VrGDUa22oFteRrbgW2RsS3VFRd7W6orVG8HtqFl1NEObIuMbale3wPqaEt1hertwLa0DGsZd8jYDmyDka2jHdiWp7Ed2BYZ21JdcbG3pbpA9dEObEfLGO3AtsjYluqKHtCW6grVrVXf0TLagW2RsR3YDiM72oFteRrbgW2RsS3VBRe7tKW6QvV2YDtahrQD2yJjW6oreoC16heo3g5sS8toB7ZFxnZgO4ystAPb8jS2A9sho7aluuBi17ZUV6jeDmxLy2gHtkVGaxkv6AFtqa5QvR3YlpbRDmyLjO3AdhhZbQe242m0dmBbZGxLdcHFbm2prlC9HdiWlmEt4w4Z21Jd0QPaUl2hejuwLS2jHdgWGduB7TCy3g5sx9Po7cC2yNiW6oKL3dtSXaG6teo7WkY7sC0ytqW6oge0pbpC9XZgW1pGO7AdMkY7sB1GNtqBbXka24FtkbEt1QUXe1irfoHq7cC2tIx2YFtkbEt1RQ9oS3WF6u3AdrSM2Q5si4ztwHYY2dkObMvT2A5si4zWMr7+Yp9tqa5QvR3YlpbRDmyLjG2prugBbakuUD3bge1oGdkObIuM7cB2GNlsB7blabSWcYeMbamuuNjbUl2hejuwLS2jHdgWGdtSXdADqi3VFaq3A9vRMqod2BYZ24HtMLJlLeOOp7Ed2BYZ21JdcbG3pbpC9XZgW1pGO7C/XcY6jrZUL+8BS/W2VFeo3g5sS8toB7ZFRmsZ/2Yju2RsB7blaWwHtkXGtlRXXOxtqa5QvR3YjpYx2oFtkbEt1QU9YLSlukL1dmBbWoa1jDtkbAe2w8iOdmBbnsZ2YFtkbEt1xcXeluoC1aUd2I6WIe3AtsjYluqKHtCW6grVrVXf0TLagW2RsR3YDiMr7cC2PI3twLbI2Jbqgotd21JdoXo7sB0tQ9uBbZGxLdUVPcBa9QtUbwe2pWW0A9siYzuwHUZW39aBqUT99YtVf9sd/6LM+5oq/6xaPL5eBPa+xueZMu9rTp4p875+45ky72shniljrcwDZd53FH+mzPtO18+Ued+B+Zky7/tbiGfK9Az8QBnvGfiRMj0DP1KmZ+BHyvQM/EgZa2UeKNMz8CNlegZ+pEx/aLzjs3fvtZ0tMvbazgW/xoxe27lC9V7b2dEyotd2tsjYaztX9ABr1S9Qvdd2trSMXtvZImM7sB1rO9EObMvT2A5sh4yzLdUFF/tsS3WF6u3AtrSMdmBbZLSW8YIe0JbqCtXbgW1pGe3AtsjYDmyHkZ3twHY8jdkObIuMbakuuNizLdUVqrcD29IyrGXcIWNbqit6QFuqK1RvB7alZbQD2yJjO7AdRrbage14Gqsd2BYZ21JdcLFXW6orVLdWfUfLaAe2Rca2VFf0gLZUV6jeDmxLy2gHtkHGcbQD22Bk18/UMu54GtuBbZGxLdXrL/b1c7fqF6jeDmxLy2gHtkXGtlRX9IC2VFeo3g5sR8sY7cC2yNgObIeRHe3AtjyN7cC2yGgt4+sv9tGW6grV24FtaRntwLbI2Jbqih7QluoC1aUd2I6WIe3AtsjYDmyHkZV2YFueRmsZd8jYluqKi70t1RWqtwPb0jLagW2RsS3VBT1A21JdoXo7sB0tQ9uBbZGxHdgOI6vWMu54GtuBbZGxLdUVF3tbqitUbwe2pWW0A9sho7WluqAHWFuqK1RvB7alZbQD2yKjtYwbjKy1A9vyNLYD2yJjW6orLva2VFeo3g5sR8vwdmBbZGxLdUEP8LZUV6jeDmxLy7CWcYeM7cB2GFlvB7blaWwHtkXGtlRXXOxtqS5QPdqB7WgZ0Q5si4xtqa7oAW2prlDdWvUdLaMd2BYZ24HtMLLRDmzL09gObIuMbakuuNhnW6orVG8HtqNlzHZgW2RsS3VFD7BW/QLV24FtaRntwLbI2A5sh5Gd7cC2PI3twHbImG2pLrjYsy3VFaq3A9vSMtqBbZHRWsYLekBbqitUbwe2pWW0A9siYzuwHUY224HteBqrHdgWGdtSXXCxV1uqK1RvB7alZVjLuEPGtlRX9IC2VFeo3g5sS8toB7ZFxnZgG4ysHO3ANjyNcrQD2yJjW6rXX+xytKW6QnVr1Xe0jHZgW2RsS3VFD2hLdYXq7cC2tIx2YDtkHO3AdhjZ0Q5sy9PYDmyLjG2pLrjYh7XqF6jeDmxLy2gHtkXGtlRX9IC2VFeo3g5sR8uQdmBbZGwHtsPISjuwLU9jO7AtMlrL+PqLXdpSXaF6O7AtLaMd2BYZ21Jd0QPaUl2gurYD29EytB3YFhnbge0wsvq2Dkwl6q9frPrb7vgXZextHzD/rFo8vrkI3tf4PFPmfc3JM2Xe1288U+Z9LcQzZd53zH+ijL3vKP5Mmfedrp8p874D8zNl3ve3EM+UsVbmgTI9Az9SpmfgR8r0DPxImZ6BHynTM/ADZbxn4EfK9Az8SJn+0HjHZ+/eaztbZLSW8fW/xvRe27lC9V7b2dIyem1ni4y9tnNFD+i1nQtUj17b2dEyotd2tsjYDmzH2k60A9vyNFrLuEPGtlRXXOxtqa5QvR3YlpbRDmyLjG2pLugBsy3VFaq3A9vRMmY7sC0ytgPbYWSntYw7nsZ2YFtkbEt1xcXeluoK1duBbWkZ7cB2yJhtqS7oAdmW6grV24FtaRntwLbIaC3jBiOb7cC2PI3twLbI2Jbqiou9LdUVqrcD29Eyqh3YFhnbUl3QA6ot1RWqtwPb0jKsZdwhYzuwHUa22oFteRrbgW2RsS3VFRd7W6rXq65HO7ANLUOPdmBbZGxLdUUPaEt1herWqu9oGe3AtsjYDmyDkdWjHdiWp7Ed2BYZ21JdcLGPtlRXqN4ObEfLGO3AtsjYluqKHmCt+gWqtwPb0jLagW2RsR3YDiM72oFteRrbge2QUdpSXXCxS1uqK1RvB7alZbQD2yKjtYwX9IC2VFeo3g5sS8toB7ZFxnZgO4ystAPb8TRqO7AtMraluuBi17ZUV6jeDmxLy7CWcYeMbamu6AFtqa5QvR3YlpbRDmyLjO3AdhhZawe242m0dmBbZGxLdcHFbm2prlDdWvUdLaMd2BYZ21Jd0QPaUl2hejuwLS2jHdgOGb0d2A4j6+3AtjyN7cC2yNiW6oKL3a1Vv0D1dmBbWkY7sC0ytqW6oge0pbpC9XZgO1pGtAPbImM7sB1GNtqBbXka24FtkdFaxtdf7NGW6grV24FtaRntwLbI2Jbqih7QluoC1Wc7sB0tY7YD2yJjO7AdRna2A9vyNFrLuEPGtlRXXOxtqa5QvR3YlpbRDmyLjG2pLugB2ZbqCtXbge1oGdkObIuM7cB2GNm0lnHH09gObIuMbamuuNjbUl2hejuwLS2jHdgOGast1QU9oNpSXaF6O7AtLaMd2BYZrWXcYGSrHdiWp7Ed2BYZ21JdcbG3pbpC9XZgG1qGHe3AtsjYlur1PcCOtlRXqN4ObEvLsJZxh4ztwDYYWTvagW15GtuBbZGxLdUVF3tbqgtUH+3AdrSM0Q5si4xtqa7oAW2prlDdWvUdLaMd2BYZ24HtMLKjHdiWp7Ed2BYZ21JdcLFLW6orVG8HtqNlSDuwLTK2pbqiB1irfoHq7cC2tIx2YFtkbAe2w8jK2zowlai/frHqb7vjX5R5X1Pln1WLx9eLQN/X+DxT5n3NyTNl3tdvPFPmfS3EM2WslXmgzPuO4s+Ued/p+pky7zswP1PmfX8L8UyZnoEfKGM9Az9SpmfgR8r0DPxImZ6BHyljrcwDZXoGfqRMz8CPlOkPjXd89m69trNFxl7bueDXmN5rO1eo3ms7O1qG99rOFhl7beeKHmCt+gWq99rOlpbRaztbZGwHtmNtx9uBbXka24HtkDHaUl1wsUdbqitUbwe2pWW0A9sio7WMF/SAtlRXqN4ObEvLaAe2RcZ2YDuMbLQD2/E0znZgW2RsS3XBxT7bUl2hejuwLS3DWsYdMraluqIHtKW6QvV2YFtaRjuwLTK2A9thZLMd2I6nMduBbZGxLdUFF3u2pbpCdWvVd7SMdmBbZGxLdUUPaEt1hertwLa0jHZgO2SsdmA7jGy1A9vyNLYD2yJjW6oLLvayVv0C1duBbWkZ7cD+tEPGtlR/uqAHtKW6QvV2YBtahh/twLbI2A7sT3+7kfWjHdiWp7Ed2BYZrWV8+cXuR1uqK1RvB7alZbQD2yJjW6orekBbqgtUH+3AdrSM0Q5si4ztwHYY2dEObMvTaC3jDhnbUl1xsbelukL1dmBbWkY7sC0ytqW6oAdIW6orVG8HtqNlSDuwLTK2A9thZMVaxh1PYzuwLTK2pbriYm9LdYXq7cC2tIx2YDtk1LZUF/QAbUt1hertwLa0jHZgW2S0lnGDkdV2YFuexnZgW2RsS3XFxd6W6grV24HtaBnWDmyLjG2pLugB1pbqCtXbgW1pGdYy7pCxHdgOI2vtwLY8je3AtsjYluqKi70t1QWqezuwHS3D24FtkbEt1RU9oC3VFapbq76jZbQD2yJjO7AdRtbbgW15GtuBbZGxLdUFF3u0pbpC9XZgO1pGtAPbImNbqit6gLXqF6jeDmxLy2gHtkXGdmA7jGy0A9vyNLYD2yHjbEt1wcU+21JdoXo7sC0tox3YFhmtZbygB7SlukL1dmBbWkY7sC0ytgPbYWRnO7AdT2O2A9siY1uqCy72bEt1hertwLa0DGsZd8jYluqKHtCW6grV24FtaRntwLbI2A5sh5GtdmA7nsZqB7ZFxrZUF1zs1ZbqCtWtVd/RMtqBbZGxLdUVPaAt1RWqtwPb0jLagW2QMY52YBuM7GoLLeOOp7Ed2BYZ21K9/mKPw1r1C1RvB7alZbQD2yJjW6orekBbqitUbwe2o2WMdmBbZGwHtsPIjnZgW57GdmBbZLSW8fUX+2hLdYXq7cC2tIx2YFtkbEt1RQ9oS3WB6tIObEfLkHZgW2RsB7bDyMrbOjCVqL9+sepvu+NflLG3VSY+bwKdxzf/9N7W+DxV5m3NyVNl3tZvaP7oMyXxN956b+s39sr4tgbij8m410Do2xqIS1V/W7+xtWXo2/qNvTK+r9+4sgdYq36B6u/rk7a2jPc1VVtlbAf2b5LxyQdm+rYOzA79/BmPtF9/cY34KKPkaRmHZXz+iH7YV9Xf1rBdqbq9rWG7VPW3NWyXqv62/u5S1d/WDl6qurXqF6j+tnbwUtXf1j1eqvrbms1LVW9veoXq7U0vUN3bm16henvTK1Rvb3qF6m/rTV3k4/dgLqlflbFW5oEyb+vxnirztj7sqTJv65Vc5eNndK3jyXeekvLxrafa0/4u0z9/SD2+/ibP39YtXaz72/qlF+o+vgIN8baO6d9X92dzZLytZ7pY97d1TRfr/r6+6VrdrXW/RPf39XzX6v6+jvJa3duvXqN7+9VrdG+/eonus/3qNbq3X71G9/ar/zbd7fPvn6z/PJ/wHOPPtX58+Vi/hviqe/vVfxfdp9Wn7nN+o7u17v8m3SM/v/WcP0vyIWQb0E1CtqP8twmZ9kPIjK/k63xfi2jHx23jpk+/85D8/NYjvpkJ3tfzbRbyfU3cHxNS/Me3lnzy1+Xsx1ebzB/f+8+Q7XeFxGchYj9/8b++Rfm+fu82b9H7WsPbvEXv6yJv8xa9r+G8zVtk/RbR36L3db23eYve10/f5i1qp45/i/ozAPxb1J8u0N+i6k8X8G9Rf7qAf4v60wX8W9SfLuDfIuu3iP4W9acL+LeoP13Av0X96QL+LepPF/BvUX+6AH+L5tGfLuDfov50Af8W9acL+LeoP13Av0XWbxH9LepPF/BvUX+6gH+L+tMF/FvUny7g36L+dIH+Fo3+dAH/FvWnC/i3qD9dwL9F/ekC/i2yfovob1F/uoB/i/rTBfxb1J8u4N+i/nQB/xb1pwv0t0j60wX8W9SfLuDfov50Af8W9acL+LfI+i2iv0X96QL+LepPF/Bv0befLrjO/Dz1s4zfv0VWn+X7T39gtfJ//Z/rv/yn//73//APf/9f/69/+Kf//Hf/8vf/9I///Oejx5//v+9/E7Lew8+/73r8WYGPkr8TYx4fT8f6vcrPX7p+uu8/xd/37e1v//b68ZRMq99/e9/w7T/+MPQM/f23j3/fbz//9m+fH3+3d9b8/bfPf99vX3/zt0/5+HeX9vsn53un+we//UcPzZ/+lPRfv/3427/9/Hhr84s4Ihu/ff3un9X6L+MXrWEcn3/qfBz5b/sXM+wzj25EPCns8I8bIY/f9tY/lyZ//tLv/z76+ojp40f6OR9Yjj9X9v2f9v71EfvjR/yPH4k/fmT+8SP5x4/UHz7y/d/t/PWR8ceP/PF3P//4u59//N3PP/7u5x9/9/OPv/v5x9/9/OPv/vd/V6U+//Z75fxyZPzxI/LHj+gfP2J//Ij/8SPxB4+s/6Z//kr/PsHT5/wcNef8/V819+/jJ58dkjOH9MwhO3PIzxyKM4fmmUN55lCdODTPPBHzzBMxzzwR88wTMc88EfPMEzHPPBHzzBMxzzwR88wTkWeeiO/vY8/6mPq8hn05JGcO6ZlDduaQnzkUZw7Np4fk9xkJ/v2N5mWfn19UfHmfvr9tQj4TbkLs66E4c2ieOZRnDtUfPxTf0zlh9eEiwod8OTTPHMozh+rEoe+3vJ8d+vZfbriMz0O/Tab610Ny5pCeOWRnDvnzQ/nlUJw49P0HAuHzx6G0L4fGmUNy5pCeOWRnDvmZQ9//e/rx4e76j7/ve6Fy5tC35c1DPz7/XJ8Xfj30/b/c9Rx8vpL7l0N14pAdZw59/+bO+SnEnF8eWPv+Ka/5+Zna8SXXKGyeOZQnJLc6cciPM4fGmUNy5pCeOWRnDp15yj3OHJpnDp15IvzMExFnnog480TEmScizjwRceaJiDNPxPfuM/L47OU5vty537vPJ4e+d5/PDo0zh+TMIT1zyM4c8jOH4syh+fzQl14+88yhOnEojzOHxplDD56Iz4/RIr/EgD34a/eRn7mAUcfx5VCeOVQnDtVx5tA4c+iBeqk/Do0vh/TMITtzyM8cijOH5plDeeZQ/fFDD/4i0nonPp/ysuPLIX0y761a6sshO3PIzxyKM4fmmUN55lCdOPTAuz859GBi+fxd6zdz+QOK9dfD/AOu8tkhO3PIzxyKM4fmmUN55lCdOCTHmUPjzKEzT8T3rmbY+NwRW//5ywU6v/c1z499v5Vikp97YCb1pZF97zieH6tTx753Hc+PjXPH5NwxPXfMzh3zc8fi3LFHT8nnp1B/Pvbljow8d6xOHZvHuWPj3DE5d0z/+LH1X+zPX/zgX89h+fEbpHH48WW0Pk6dGqdOyalTeuqUnTrlp07FqVPz1Knv/9Gs3zB9Lnqt3wF9+dCyzpx68E/m2alx6pQ8OJX241R9OaWnTtmpU98rv35n9LnMu35B86U5fq/8+gWL/Djlvx8xv7fjT0+NU6fk1Ck9dcpOnfJTp+LUqfngVNXnKRm/b9yZp07VmVN1nDo1Tp2SU6f01Ck7derBsyFDf5yS33fRilOn5qlTj56NH91mnfpNt/kGGRD5BCTWf37KXvgPM7r+85dfP1fxahrHQSxqEIsSYlFKLMqIRTmxqCAWNYlFXdHQrUp/Kkq/FLWno4/yH0Xp7y/bMY6XvMp4yavIS15FX/Iq9pJX8Ze8SrzkVR51lvgxbY78eizPHatTx+Q4d2ycOybnjum5Y3bumJ87FueOPZr4/ScOeh5fjuW5Y3XqmB7njo1zx+TcsQdvt/qPf9X6ZcF9qJ86Zg8k0R8fZIfWl5vdHjzKrj8Mnn9Z3Blm5475uWNx7tg8dyzPHatTx/w4d2ycOybnjj16SnL8OFZfJjR/9JT89EzGEb++1zb+LYPhTisoaAVNWkFJK6hgBcVBK+jBQx0//jrK+s+/XxgfD35jE+v//Tj2tck8+JXN02Pj3DE5d+xB4wn/0UDD48uxOHdsnjuW547VqWOPfuHz7Ng4d0zOHdNzx+zcsUdPyfz54foywz36tc+zY/PcsTx3rE4de/Srnzl+uJip/uXYOHdMzh3Tc8fs3DE/dyzOHZvnjj14Sqb/dCy+3AGPfkvz62Py6Pcoz46Nc8fk3LFHT4n9fKy+HLNzx/zcsTh3bJ47lueO1aljjz7KfXbs0VPy4+PpyEO+HJNzx/TcMTt3zM8de/SU5M/H9Muxee5YnjtWp449+gTy2bFx7picO6bnjj14Sn76u4WRGl+O+bljce7YPHcszx178JTk+PnY7z9uk0efQD47Ns4dk3PH9NwxO3fMzx2Lc8ceTa/1Y55Me/J3ModO+5zIdfrx5VVyz6uE/niV+eWG0XrFqzz6hHjzq4yXvIq85FX0Ja9iL3kVf8mrxJ5XSfnxKl92xsXm/p/lm1fJl7xKveJV/HjJq4yXvMqef/t5/Pij0flliVlcX/Iq9pJX8Ze8SrzkVeZLXiVf8ir1ileJPf/2U378q0z9Yglj7P9ZvnkVecmr6EtexV7yKv6SV9n0b//H32HWjC+dP+ZLXiVf8ir1ileZx0teZbzkVeQlr6IveZVN//bjp3+V88vHPdP3/yzfvEq85FXmS14lX/Iq9YpXyVO/GJcc547JuWN67pidO+bnjsW5Y/PcsTx37NT6hNS5p6TOPSV17impc09JnXtK6txTUueekjr1lOhxat9TH/3K80cY0frPw78ck3PH9NwxO3fMzx2Lc8fmuWN57lidOvboV57Pjp17Ssa5p2Sce0rGuadknHtKxrmnZJx7Ssa5p+TB78Ce/M0bffA7sGfH9NTfhVHVc8fs3DE/dyzOHZvnjuW5Y6f+epDace7YOHfs1N+FUdNzx+zcMT93LM4dm+eOnfjrQeu/+J+/+Pt/BiKff8N//Wr6xz/wP8fyrReMP3rmf63/9v/+3X//+7/7T//wX/55nfnz//g//vE/f0T6rf/6L//ff/vL/7K++P8H","brillig_names":["decompose_hint","lte_hint","debug_log_oracle_wrapper","build_msg_block","attach_len_to_msg_block","emit_unencrypted_log_private_oracle_wrapper","directive_integer_quotient","directive_invert"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"14336010898202591232":{"error_kind":"fmtstring","item_types":[],"length":16}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"},"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":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9VZzXLaMBCWsY2xEwiBpCU9MdNbe7ETAvTGTH/Se5+g4efSQzqdPADTQ9vHLhq0+GPZMhSvDuwMI1m7+vbTrmRJJjBraax+gavHrqybXSGbiSvzalIoYuU+eQYnwrN2IjzDE+EZKfIMBJ62jFzdrju75hKzXo87SuxsEx2C3uwBCphTK7+g3nLll+ev02/956en/mw+/74x/+PK1JU1gFPMY5Ga3dho4Y/zwTQ126LM/y51mIkf/HvCb/jBz4n3+2WJj2Mhv6ErH5ZlLB+gj5Wmq+OUI1zS1UD3gelC0H1kOpzyn5gOlwlxorjVYSyK82rsOy80tgTGFvyjNKaMHbZRrDPjdY4WlPOU8eH8iU+TbJYlnzrTRaBLmS4GHcXfln2w47lPwO4ttPM5GZrdOUx6yjnG2secijzgr2QgxZ3nJFpu+0Ydxj2CePZdvbv6fXY2OAYriWs3gBtCG2GTrwbaM10KOuRrJQP/oYBFPGJm/8Y9X7iyDn2of1vwX2f+t3gLbbiPcqxQaCN7O5dfu/qZWcf9J9mb3fWtd3YdvpPedXr4o80emvrhPyf8zAv+YIN/BviaewHhn/uJz5Dwm37wN2eYlhf82018LgDf6MW/oP2E1j/6IN+XXnJfFIfs9eg/Y1x97fWXjA+PD+4rVtcRuLYFHV+jHcFPR/BDeeiy/hOVcQ8XEtfukVwlrJYiVqqIdewYKR9XrP/EPeeVZDSQuF4pjrupiNVQxDp2nlA+rln/iXvOK8lQzMe14rg183GuiJUoYmmuW814UR6lvc7KxJV5ReFc8Q6BPmmfj5n9D8bzBfRR3JNvaU97aUrh54GeJ9+HngfIf1PgQ7wzQVfl2+d0uLh7nC0Gs8fRfJyX+ewxrrwN70T2dyPYS2cLivUr4yXWuXRfvoG4WolA12O6GHTEEe/LKcPU5n9I/NF/W9DhneZ/ctkx23MN1yO/rxqj9w6h+d4AbL42Uy/xzu8PXZvkP2Nclfns/S6H8eFn9Uzg2hZ0fO/LBD+Z4OcUsfi3bYyhXSMUp2hZ6rVyORqX/yPRuyg229/LDfMfM/vf7tknTyudPZxsnP4C4AOlGXweAAA=","debug_symbols":"tdnBaoNAEIDhd9mzB1fdnZm8SilBEw0LokFNoYjvXm1DCeT8X2RHx//2nXZ117Z53M5p6MbZnT5W14+XeknjsE/rlrlmSn2fbufX1y4/HlX1uz/f6+EY56WeFncqq8y1w3U/2P53l/r2OJZb9rYpxXNT5H8z2PaZuSpg5YiVBSsrVjaqHHKs7LFygZVLrIwZDJjBgBkMmMGAGQyYwYgZjJjBiBmMmMGIGYyYwYgZjJjBiBmMmEHBDApmUDCDghkUzKBgBgUzKJhBwQwKZlAxg4oZVMygYgYVM6iYQcUMKmZQMYOKGTTMoGEGDTNomEHDDBpm0DCDhhk0zKBhBn2ec2nPpQsuXXLpiksHLh25tHBp5dKcRs9p9JxGz2n0kMZtn77qKdVN3z4vNbrHcHm541i+739f9uUf","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{},"structs":{"events":[{"fields":[{"name":"DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE","type":{"kind":"field"}},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"version","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"deployer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}}],"kind":"struct","path":"ContractInstanceDeployer::ContractInstanceDeployed"}],"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"universal_deploy","type":{"kind":"boolean"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_parameters"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_abi"}]}},"file_map":{"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/to_bytes.nr","source":"pub fn arr_to_be_bytes_arr<let L: u32>(fields: [Field; L]) -> [u8; L * 32] {\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n // Note that bytes.append() results in bound error\n let to_add: [u8; 32] = fields[i].to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n\n// each character of a string is converted into a byte\n// then an ACVM field via the oracle => we recreate here\npub fn str_to_be_bytes_arr<let L: u32>(string: str<L>) -> [u8; L * 32] {\n let chars_bytes: [u8; L] = string.as_bytes();\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n let to_add: [u8; 32] = (chars_bytes[i] as Field).to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\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 hash_bytes[i + 192] = leaf_index_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\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct 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<let N: u32>(&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<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"186":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n logs::{emit_encrypted_event_log, emit_encrypted_note_log},\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log_hash::{EncryptedLogHash, LogHash, NoteLogHash},\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests: BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\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.contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.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_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.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 note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(\n &mut self,\n note_hash_counter: u32,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n let call_request = PublicCallRequest { call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.public_teardown_call_request = PublicCallRequest { call_context, args_hash, counter };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::cmp::Eq;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: x_coordinates_match,\n };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(unsafe { field_less_than(b, a) });\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse crate::runtime::is_unconstrained;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\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 if is_unconstrained() {\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"},"315":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"316":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH, MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n utils,\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n ec::{pow, sqrt},\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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 to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\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_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\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"},"320":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"328":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedEncryptedLogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__VK,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n proof::verification_key::VerificationKey,\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256(\n [log_hash.contract_address.to_field(), log_hash.log_hash.value],\n )\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0,\n ))\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(\n _vk: VerificationKey<N>,\n) -> 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 recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\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 // 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: [u8; 32] = input[offset].to_be_bytes();\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\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 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 = std::hash::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 =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"330":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse dep::std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\nuse std::default::Default;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::default::Default;\nuse crate::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8 = 256;\nglobal TWO_POW_16 = TWO_POW_8 * 256;\nglobal TWO_POW_24 = TWO_POW_16 * 256;\nglobal TWO_POW_32 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"},"393":{"path":"/usr/src/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"use dep::aztec::macros::aztec;\n\n#[aztec]\ncontract ContractInstanceDeployer {\n use dep::aztec::{\n hash::compute_unencrypted_log_hash,\n macros::{events::event, functions::private},\n oracle::logs::emit_unencrypted_log_private,\n utils::to_bytes::arr_to_be_bytes_arr,\n };\n use dep::aztec::protocol_types::{\n abis::log_hash::LogHash,\n address::{AztecAddress, PartialAddress, PublicKeysHash},\n constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::Serialize,\n };\n use std::meta::derive;\n\n #[event]\n #[derive(Serialize)]\n struct ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE: Field,\n address: AztecAddress,\n version: u8,\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n deployer: AztecAddress,\n }\n\n // We need to impl this separately because ts deserializes a point as two fields only.\n // We had issues that:\n // Notice how the 'is_infinite' field is deserialized as the next point.\n // {\n // masterNullifierPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000012>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000034>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterIncomingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000056>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterOutgoingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000078>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterTaggingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000910>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000001112>,\n // isInfinite: false,\n // kind: 'point'\n // }\n impl Serialize<15> for ContractInstanceDeployed {\n fn serialize(self) -> [Field; 15] {\n [\n self.DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n self.address.to_field(),\n self.version.to_field(),\n self.salt,\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys.npk_m.serialize()[0],\n self.public_keys.npk_m.serialize()[1],\n self.public_keys.ivpk_m.serialize()[0],\n self.public_keys.ivpk_m.serialize()[1],\n self.public_keys.ovpk_m.serialize()[0],\n self.public_keys.ovpk_m.serialize()[1],\n self.public_keys.tpk_m.serialize()[0],\n self.public_keys.tpk_m.serialize()[1],\n self.deployer.to_field(),\n ]\n }\n }\n\n #[private]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n universal_deploy: bool,\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address =\n PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_nullifier(address.to_field());\n\n // Broadcast the event\n let event = ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id,\n address,\n public_keys,\n initialization_hash,\n salt,\n deployer,\n version: 1,\n };\n\n let payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", payload);\n\n let contract_address = context.this_address();\n let counter = context.next_counter();\n\n // @todo This is very inefficient, we are doing a lot of back and forth conversions.\n let serialized_log = arr_to_be_bytes_arr(payload);\n let log_hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n // 40 = addr (32) + raw log len (4) + processed log len (4)\n let len = 40 + serialized_log.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n\n // We manually push the unencrypted log to the context and inform the execution environment about this because\n // PrivateContext does not expose an `emit_unencrypted_log` method - this mechanism is considered error-prone\n // and only some canonical contracts use it.\n context.unencrypted_logs_hashes.push(side_effect);\n emit_unencrypted_log_private(contract_address, payload, counter);\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"98":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(\n contract_address,\n randomness,\n encrypted_event,\n counter,\n )\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32,\n) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32,\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"}}}