From 326297a6fe5290e29e5baa0bcd72b6d212dd8da8 Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Fri, 25 Oct 2024 12:03:28 +0530 Subject: [PATCH 1/9] initial nft commit --- phantom-gate/.gitignore | 28 + phantom-gate/LICENSE | 21 + phantom-gate/README.md | 74 + phantom-gate/bun.lockb | Bin 0 -> 207425 bytes phantom-gate/contracts/account/Nargo.toml | 9 + .../contracts/account/codegenCache.json | 6 + .../account/src/artifacts/SchnorrAccount.ts | 137 + phantom-gate/contracts/account/src/main.nr | 116 + .../contracts/account/src/public_key_note.nr | 47 + .../target/account-SchnorrAccount.json | 1 + .../target/account-SchnorrAccount.json.bak | 1 + phantom-gate/contracts/counter/Nargo.toml | 14 + phantom-gate/contracts/counter/src/main.nr | 88 + .../contracts/nft-contract/Nargo.toml | 10 + .../contracts/nft-contract/src/main.nr | 310 ++ phantom-gate/index.html | 15 + phantom-gate/package.json | 40 + .../patches/@aztec+circuits.js+0.48.0.patch | 21 + phantom-gate/postcss.config.js | 6 + phantom-gate/src/App.tsx | 34 + phantom-gate/src/artifacts/Counter.ts | 154 + phantom-gate/src/artifacts/SchnorrAccount.ts | 140 + .../src/components/WalletInformation.tsx | 33 + .../src/components/WalletInteractions.tsx | 455 ++ phantom-gate/src/components/spinner.tsx | 12 + .../src/components/walletSelection.tsx | 77 + phantom-gate/src/constants.tsx | 6 + phantom-gate/src/helpers/AccountContract.ts | 32 + phantom-gate/src/helpers/setup.tsx | 132 + phantom-gate/src/hooks/useAccounts.ts | 75 + phantom-gate/src/main.tsx | 13 + phantom-gate/src/style.css | 117 + phantom-gate/src/vite-env.d.ts | 1 + phantom-gate/tailwind.config.js | 11 + phantom-gate/tsconfig.json | 20 + phantom-gate/vite.config.ts | 26 + phantom-gate/yarn.lock | 3822 +++++++++++++++++ 37 files changed, 6104 insertions(+) create mode 100644 phantom-gate/.gitignore create mode 100644 phantom-gate/LICENSE create mode 100644 phantom-gate/README.md create mode 100755 phantom-gate/bun.lockb create mode 100644 phantom-gate/contracts/account/Nargo.toml create mode 100644 phantom-gate/contracts/account/codegenCache.json create mode 100644 phantom-gate/contracts/account/src/artifacts/SchnorrAccount.ts create mode 100644 phantom-gate/contracts/account/src/main.nr create mode 100644 phantom-gate/contracts/account/src/public_key_note.nr create mode 100644 phantom-gate/contracts/account/target/account-SchnorrAccount.json create mode 100644 phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak create mode 100644 phantom-gate/contracts/counter/Nargo.toml create mode 100644 phantom-gate/contracts/counter/src/main.nr create mode 100644 phantom-gate/contracts/nft-contract/Nargo.toml create mode 100644 phantom-gate/contracts/nft-contract/src/main.nr create mode 100644 phantom-gate/index.html create mode 100644 phantom-gate/package.json create mode 100644 phantom-gate/patches/@aztec+circuits.js+0.48.0.patch create mode 100644 phantom-gate/postcss.config.js create mode 100644 phantom-gate/src/App.tsx create mode 100644 phantom-gate/src/artifacts/Counter.ts create mode 100644 phantom-gate/src/artifacts/SchnorrAccount.ts create mode 100644 phantom-gate/src/components/WalletInformation.tsx create mode 100644 phantom-gate/src/components/WalletInteractions.tsx create mode 100644 phantom-gate/src/components/spinner.tsx create mode 100644 phantom-gate/src/components/walletSelection.tsx create mode 100644 phantom-gate/src/constants.tsx create mode 100644 phantom-gate/src/helpers/AccountContract.ts create mode 100644 phantom-gate/src/helpers/setup.tsx create mode 100644 phantom-gate/src/hooks/useAccounts.ts create mode 100644 phantom-gate/src/main.tsx create mode 100644 phantom-gate/src/style.css create mode 100644 phantom-gate/src/vite-env.d.ts create mode 100644 phantom-gate/tailwind.config.js create mode 100644 phantom-gate/tsconfig.json create mode 100644 phantom-gate/vite.config.ts create mode 100644 phantom-gate/yarn.lock diff --git a/phantom-gate/.gitignore b/phantom-gate/.gitignore new file mode 100644 index 000000000..832ee9ac2 --- /dev/null +++ b/phantom-gate/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +node_modules +.env + +contracts/counter/target \ No newline at end of file diff --git a/phantom-gate/LICENSE b/phantom-gate/LICENSE new file mode 100644 index 000000000..c61d46581 --- /dev/null +++ b/phantom-gate/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Ankit Agrawal + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/phantom-gate/README.md b/phantom-gate/README.md new file mode 100644 index 000000000..141333395 --- /dev/null +++ b/phantom-gate/README.md @@ -0,0 +1,74 @@ +# Private NFT-Gated Event Check-in System on Aztec + +## Overview + +`PhantomGate` implements a private NFT-gated event check-in system on Aztec Network, allowing users to prove their NFT ownership without revealing their identity or specific NFT details. The system verifies NFT ownership at specific block heights while maintaining privacy through zero-knowledge proofs. We will also provide minting the nft. + +## System Architecture + +### Components + +#### 1. Client-Side (PXE) +- Aztec.js integration for client interactions +- Private execution environment for NFT ownership verification +- Zero-knowledge proof generation for NFT ownership +- User interface for check-in process + + +#### 2. Smart Contracts +- Event management contract (public state) +- NFT verification contract (private state) +- Portal contract for Ethereum NFT communication + +#### 3. Public VM +- Processes rollups of private check-ins +- Maintains public event statistics +- Handles state transitions + +### Flow Diagram + +``` +User (with NFT) -> PXE (Private Verification) -> Aztec Contract + -> Portal Contract + -> Ethereum NFT Contract +``` + +### Local Installation +```bash +# Clone the repository +git clone https://github.com/ankit875/alpha-build2/phantom-gate + +cd phantom-gate + +# Install dependencies +yarn install + + +# Start development server +yarn run dev +``` + +```bash +# Go to contract Directory +cd contracts/nft_contracts + +# Compile contracts +aztec-nargo compile + +# Generate Artifacts +aztec codegen target --outdir ../../src/artifacts +``` + + +## License +MIT License + +## Contact +- Discord Server: ankitagrwal +- Twitter: @ankitagrwal +- Email: ankitagrawal620@gmail.com + +## Acknowledgments +- Aztec Network Team +- Discord API Documentation +- Community Contributors diff --git a/phantom-gate/bun.lockb b/phantom-gate/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..f364e40db6bf71b99bc56e528cb559841be84b95 GIT binary patch literal 207425 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 + } + + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy(wallet: Wallet, + // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike + ) { + return new DeployMethod(Fr.ZERO, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeysHash(publicKeysHash: Fr, wallet: Wallet, + // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike + ) { + return new DeployMethod(publicKeysHash, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeysHash?: Fr; method?: M; wallet: Wallet }, + // ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeysHash ?? Fr.ZERO, + opts.wallet, + SchnorrAccountContractArtifact, + SchnorrAccountContract.at, + Array.from(arguments).slice(1), + opts.method ?? 'constructor', + ); + } + + + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return SchnorrAccountContractArtifact; + } + + + public static get storage(): ContractStorageLayout<'signing_public_key'> { + return { + signing_public_key: { + slot: new Fr(1n), + } + } as ContractStorageLayout<'signing_public_key'>; + } + + + public static get notes(): ContractNotes<'PublicKeyNote'> { + return { + PublicKeyNote: { + id: new NoteSelector(2866150763), + } + } as ContractNotes<'PublicKeyNote'>; + } + + + /** Type-safe wrappers for the public methods exposed by the contract. */ + public override methods!: { + + /** constructor(signing_pub_key_x: field, signing_pub_key_y: field) */ + constructor: ((signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike) => ContractFunctionInteraction) & Pick; + + /** lookup_validity(consumer: struct, inner_hash: field) */ + lookup_validity: ((consumer: AztecAddressLike, inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; + + /** entrypoint(app_payload: struct, fee_payload: struct) */ + entrypoint: ((app_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike }, fee_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike, is_fee_payer: boolean }) => ContractFunctionInteraction) & Pick; + + /** verify_private_authwit(inner_hash: field) */ + verify_private_authwit: ((inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; + + /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ + compute_note_hash_and_optionally_a_nullifier: ((contract_address: AztecAddressLike, nonce: FieldLike, storage_slot: FieldLike, note_type_id: FieldLike, compute_nullifier: boolean, serialized_note: FieldLike[]) => ContractFunctionInteraction) & Pick; + }; + + +} diff --git a/phantom-gate/contracts/account/src/main.nr b/phantom-gate/contracts/account/src/main.nr new file mode 100644 index 000000000..77b54c751 --- /dev/null +++ b/phantom-gate/contracts/account/src/main.nr @@ -0,0 +1,116 @@ +mod public_key_note; + +// Account contract that uses Schnorr signatures for authentication. +// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key. +use dep::aztec::macros::aztec; + +#[aztec] +contract SchnorrAccount { + use dep::std; + + use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable}; + use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note; + use dep::authwit::{ + entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions, + auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash} + }; + use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys}; + use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness; + use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}}; + + use crate::public_key_note::PublicKeyNote; + + #[storage] + struct Storage { + signing_public_key: PrivateImmutable, + } + + // Constructs the contract + #[private] + #[initializer] + fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) { + let this = context.this_address(); + let this_keys = get_public_keys(this); + // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we + // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that + // important. + + let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash()); + storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this)); + } + + // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file + #[private] + #[noinitcheck] + fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) { + let actions = AccountActions::init(&mut context, is_valid_impl); + actions.entrypoint(app_payload, fee_payload, cancellable); + } + + #[private] + #[noinitcheck] + #[view] + fn verify_private_authwit(inner_hash: Field) -> Field { + let actions = AccountActions::init(&mut context, is_valid_impl); + actions.verify_private_authwit(inner_hash) + } + + #[contract_library_method] + fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool { + // docs:start:is_valid_impl + // Load public key from storage + let storage = Storage::init(context); + let public_key = storage.signing_public_key.get_note(); + // Load auth witness + let witness: [Field; 64] = unsafe { + get_auth_witness(outer_hash) + }; + let mut signature: [u8; 64] = [0; 64]; + for i in 0..64 { + signature[i] = witness[i] as u8; + } + + // Verify signature of the payload bytes + std::schnorr::verify_signature( + public_key.x, + public_key.y, + signature, + outer_hash.to_be_bytes::<32>() + ) + // docs:end:is_valid_impl + } + + /** + * @notice Helper function to check validity of private authwitnesses + * @param consumer The address of the consumer of the message + * @param message_hash The message hash of the message to check the validity + * @return True if the message_hash can be consumed, false otherwise + */ + unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool { + let public_key = storage.signing_public_key.view_note(); + + let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash); + + let witness: [Field; 64] = get_auth_witness(message_hash); + let mut signature: [u8; 64] = [0; 64]; + for i in 0..64 { + signature[i] = witness[i] as u8; + } + let valid_in_private = std::schnorr::verify_signature( + public_key.x, + public_key.y, + signature, + message_hash.to_be_bytes::<32>() + ); + + // Compute the nullifier and check if it is spent + // This will BLINDLY TRUST the oracle, but the oracle is us, and + // it is not as part of execution of the contract, so we are good. + let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash); + let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier); + let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier); + let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier; + + !is_spent & valid_in_private + } +} \ No newline at end of file diff --git a/phantom-gate/contracts/account/src/public_key_note.nr b/phantom-gate/contracts/account/src/public_key_note.nr new file mode 100644 index 000000000..fee5ed34e --- /dev/null +++ b/phantom-gate/contracts/account/src/public_key_note.nr @@ -0,0 +1,47 @@ +use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext}; +use dep::aztec::{ + note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app, + protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator}, + macros::notes::note +}; + +// Stores a public key composed of two fields +// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value? +#[note] +pub struct PublicKeyNote { + x: Field, + y: Field, + // We store the npk_m_hash only to get the secret key to compute the nullifier + npk_m_hash: Field, +} + +impl NullifiableNote for PublicKeyNote { + fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { + let secret = context.request_nsk_app(self.npk_m_hash); + poseidon2_hash_with_separator( + [ + note_hash_for_nullify, + secret + ], + GENERATOR_INDEX__NOTE_NULLIFIER as Field + ) + } + + unconstrained fn compute_nullifier_without_context(self) -> Field { + let note_hash_for_nullify = compute_note_hash_for_nullify(self); + let secret = get_nsk_app(self.npk_m_hash); + poseidon2_hash_with_separator( + [ + note_hash_for_nullify, + secret + ], + GENERATOR_INDEX__NOTE_NULLIFIER as Field + ) + } +} + +impl PublicKeyNote { + pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self { + PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() } + } +} \ No newline at end of file diff --git a/phantom-gate/contracts/account/target/account-SchnorrAccount.json b/phantom-gate/contracts/account/target/account-SchnorrAccount.json new file mode 100644 index 000000000..a81944555 --- /dev/null +++ b/phantom-gate/contracts/account/target/account-SchnorrAccount.json @@ -0,0 +1 @@ +{"transpiled":true,"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-aarch64","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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oqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"7N3briRLsp3nd1nXvMiD54mvIggCJVECAYEUROqK4Lureq/OWdXtnpldMls+LTy+u90bgbly/sMqw8YfVeH//Y///T/+r//v//m//Kf//H/8l//6x7//n/77H//Xf/nf/sN/+0//5T//+F///Y9j+7f/33/9v//Df/7b//yv/+0//D//7Y9/f7yd2r/74z/+5//9b//nuf2Pf/fH//Gf/q//+Me/vx3/x7/rLj7dLs+LT7fb9evi46kNrj638+XvV58vh/uHq4+H2+3w/CSH2/3nRzkdD6Pr77fT8/L74/h19Xn4w4/H50c5Hq/t14v/53/3x/GCzAsyV2RekLmFyZzv5/vzd73ffl58vF/+7b9w/8v/C494usfDk+jpeD79/C+06zCv4/krrsuvV9//9nlOh9mf53R58jn+GM5/+Dyj6Tl+fZDHL9NzOpyHP/vn1adfJ/NwGlx9/Zrj++3yy7XDKT6cHtcvjOfD49PUt8PXb9lOt8jUn44SKp7QSULFEzpL6F9K6Hz+ebM4t9u8e/upSah4QpeVEjr+ktDjU0LHy+n885e8fbr6GzO61s7o1r56yeHwMaPz19XHy/H882c/HsWo31D/Bur376R+v3dNKqPZff0XTqfz4cPnOV0e56+Wf7x/7IHfltT5gMwLMgnd7tS+ftd/nMrrv/0XErrJDyv0/C+cf9lQXtC83H5+f9wf//D98bfPcy72eVqxz5OwZZ3vX99q7XT+8Hna6dnJ2vXYfZprqU9zK/Vp7qU+TcLd59wePz9N++dvkjb+Fj+3Lxt8/uVjDf8LP4zy8ecd9Jc/KT9+97/9F45/+X/h9Jf/F85/+X+hxf8LP25yXxffD//wXxjdYe5f++Pp8evzgeHP/nFP/LrhPX4+eziPb4+Py+Nna7t++tn345dAup9+8Uf/djNtF2DGYK7AjMHcdgzm/HVnuP+68v4J5g7MGMwDmCGYy2G/YG63208w938Gc1wIzOnnw+TTPzxM/v/x5Xs5ATMGcwZmDKbtGMzbL9+VNt9UMCttvqlgVtp8fxPM+9v1Ypvv/SeY8z/87L/9rosts+9+1+tK++npcP0ydcfDx5/99qZ6XWs/TQSz1n6aCGat/fT3wLy7qV4bMGMwa+2niWDW2k9/C8zbNey6mJm9/wTz6FaTVVfO0e+60sp5Op4uX7/rNeY2bkvtp5lgltpPM8EstZ/+Jph3N9XbUvtpJpgGzBjMUvvp74F5u4bdFvubAz9Xk2tniG7LrpyD33X6yvnzb5Wf2vny6Xf9vn8pdnsgMyZzPyDzgswRmRdkTsi8IHNG5gWZhswLMhdkXpC5IvOCzA2ZF2TswK/I2IFfkHnYgV+RsQO/ImMHfkWm+g78bf8u+NGQeUGm0g78t8+TsXl+Cdsff7g+fZ7NvJ/hcUPmBZmMzfPno8F/JvO3/8KLfw18+Br82y9f3cP/wv38/HV/fV4y/j44P563hPbLuxlOQ+6P2xeax+0XMz2mfv6S3r/+5PFzj9v967nH7fH4EFDiWykPL15v8TPO2+0D7NOlff1D8Mv1l781cR5d/eOK5+Rebsdfwv/bPxYefIFd7l/PAn4M1u0frv+3X+C49V/glPALPJ7/6Pp0bccPv8Dt8fWH4/hzHh6jt++0r1extsvPZzy30bC3w+n557Mdbr/+Qfrztzyv8Vsez19/po+/vqjr779l20WWl11ked1FlrddZHlf4rc8375ernG+3f/5L4IcD4/Jv+X9fvy5hJ7f/5rX2zOg2+2Xvy5w+TOg42HyR//xVf3zReC//EWT4We/XL7+DF0urYVv+cfjrn7bjwvO/fChMZyvt59z//PTj1b00+n482Vrv/SE43VYpE4/XzB+On36ayz7rgrH89Qcjz9fg3c6fsrxcXk8f/Ljerx+mNnH/fr8w/N4HA79xLbd/KaX3fym1938prdVftMf3fjafm4Yx1P/u9539Ls+1vldr5efj22ut/OH6/d93z0dFs391xe+/n3GT8cd/a6nHf2uy+yOfzs26usZ8uF+7r+nT8tsj//C77rM/vgv/K7LbJD/wu+60A758XddaIf8+LsutEN++l3PC+1NH3/Xhfamj7/rQnvTx991R3vTeUd703lHe9N5R3vTeUd703lHe9N5R3tT29He1Ha0N7Ud7U1tR3tT29He1Ha0N7Ud7U1tR3tT29He1Ha0N112tDdddrQ3XXa0N112tDdddrQ3XXa0N112tDdddrQ3XXa0N112tDddd7Q3XXe0N113tDddd7Q3XXe0N113tDddd7Q3XXe0N113tDddd7Q33Xa0N912tDfddrQ33Xa0N912tDfddrQ33Xa0N912tDfddrQ33Xa0N913tDfdd7Q33Xe0N913tDfdd7Q33Xe0N913tDfdd7Q33Xe0N913tDc9drQ3PXa0Nz12tDc9drQ3PXa0Nz12tDc9drQ3PXa0Nz12tDc99rM3nQ772ZtOh7l70+nrNbun868HxQ5/1/vpCeZ+aR+uPV/a8+Lz5ZfX8o6Obrhfn+8Qu//yWrC//dx/I3JC5J+InBH5JyKtLpHj4ZfXEv564Mzw6t95Zff58MTXzsefUE7XwcWX01cwl9Mvrzv+cfG/AbwAGAN4BTAG8AZgDOAdwBjAB4AhgMcDgDGAhZf/bQAs3BW2AbBwtdgGwAZgDKAmEgSoiQQBaiJBgJpIEKAmEgN40kSCADWRIEBNJAhQEwkCbADGAGoiQYCaSBCgJhIEqIkEAWoiMYBnTSQIUBMJAtREggA1kSDABmAMoCYSBKiJBAFqIkGAmkgQoCYSA9g0kSBATSQIUBMJAtREggAbgDGAmkgQoCYSBKiJBAFqIkGAmkgM4EUTCQLURIIANZEgwF02kevl+Lz2er11TBomHZNd9oUPTHZZAT4w2eVWfzs8P0a7HXsmu1zUPzDZ5e79nsl1l+v0Bya73JA/MNnl0vv+vnO1x/ZMGiYdE3tsz2SXe+yH71h7bM/EHtszscd2TG722J6JPbZnsss99gOTXe6xH5g0TDomu9xjPzCxx/ZM7LE9E3tsz8Qe2zG573KPfe8K7rvcYz8w4WN7Jnxsz6T5ju2Y2GN7JvbYnok9tmdij+2Z2GM7Jg8+tmfCx/ZM+NieCR/bM2mYdEzssT0Te2zPxB7bM9nlHvveFTx2uce+ZXI+8LE9Ez62Z2KP7ZnYY3smDZOOiT22Z2KP7ZnYY3smfGzPhI/tmOzzeM0PTPjYnok9tmdij+2ZNEw6JvbYnon3FfRMdrnHfmDCx/ZM+NiOyT4PZ3z/HbvP8xY/MLHH9kzssT2ThknHxB7bM+FjeyZ8bM+Ej+2Z8LEdk30e7feBiT22Z2KP7ZnYY3smjSvomHjvVs+Ej+2Z8LE9E3tsz8Qe2zHZ58FwH5jYY3sm9tieiT22Z9Iw6ZjwsT0TPrZnwsf2TOyxPRN7bMdkn8eKfWBij+2ZeO9Wz8R7t3omDZOOCR/bM7HH9kzssT0Te2zPxB7bMXGe14CJPbZnwsf2TPjYnknDpGPCx/ZM7LE9E3tsz8Qe2zOxx3ZM9nme13tXsM/zvD4w4WN7Jnxsz6T5ju2Y2GN7JvbYnok9tmdij+2Z2GM7Jvs8z+sDEz62Z8LH9kz42J5Jw6RjYo/tmdhjeyb22J6J9271TLx3q2Oyz/O8PjDhY3sm9tieiT22Z9Iw6ZjYY3sm9tieiT22Z8LH9kz42H9m0vZ5ntcHJnxsz8Qe2zOxx/ZMGiYdE3tsz8R7t3om3rvVM+FjeyZ8bMfEeV79d6zzvAZM7LE9E3tsz6Rh0jGxx/ZM+NieCR/bM+FjeyZ8bMfEeV4DJvbYnok9tmdij+2ZNK6gY+K9Wz0TPrZnwsf2TOyxPRN7bMfEeV4DJvbYnok9tmdij+2ZNEw6Jnxsz4SP7ZnwsT0Te2zPxB7bMXGe14CJPbZn4r1bPRPv3eqZNEw6Jnxsz8Qe2zOxx/ZM7LE9E3tsx8R5XgMm9tieCR/bM+FjeyYNk44JH9szscf2TOyxPRN7bM/EHtsx2ed5Xu9dwT7P8/rAhI/tmfCxPZPmO7ZjYo/tmdhjeyb22J6JPbZnYo/tmOzzPK8PTPjYngkf2zPhY3smDZOOiT22Z2KP7ZnYY3sm3rvVM/HerY7JPs/z+sCEj+2Z2GN7JvbYnknDpGNij+2Z2GN7JvbYngkf2zPhYzsm+zzP6wMTPrZnYo/tmdhjeyYNk46JPbZn4r1bPRPv3eqZ8LE9Ez72n5lcnOd17JnYY3sm9tieiT22Z9Iw6ZjYY3smfGzPhI/tmfCxPRM+tmPiPK8BE3tsz8Qe2zOxx/ZMGlfQMfHerZ4JH9sz4WN7JvbYnok9tmPiPK8BE3tsz8Qe2zOxx/ZMGiYdEz62Z8LH9kz42J6JPbZnYo/tmDjPa8DEHtsz8d6tnon3bvVMGiYdEz62Z2KP7ZnYY3sm9tieiT22Y+I8rwETe2zPhI/tmfCxPZOGSceEj+2Z2GN7JvbYnok9tmdij+2Y7PM8r/euYJ/neX1gwsf2TPjYnknzHdsxscf2TOyxPRN7bM/EHtszscd2TPZ5ntcHJnxsz4SP7ZnwsT2ThknHxB7bM7HH9kzssT0T793qmXjvVsdkn+d5fWDCx/ZM7LE9E3tsz6Rh0jGxx/ZM7LE9E3tsz4SP7ZnwsR2TfZ7n9YEJH9szscf2TOyxPZOGScfEHtsz8d6tnon3bvVM+NieCR/bMXGeV/8d6zyvARN7bM/EHtszaZh0TOyxPRM+tmfCx/ZM+NieCR/7z0yuzvMaMLHH9kzssT0Te2zPpHEFHRPv3eqZ8LE9Ez62Z2KP7ZnYYzsmzvMaMLHH9kzssT0Te2zPpGHSMeFjeyZ8bM+Ej+2Z2GN7JvbYjonzvAZM7LE9E+/d6pl471bPpGHSMeFjeyb22J6JPbZnYo/tmdhjOybO8xowscf2TPjYngkf2zNpmHRM+NieiT22Z2KP7ZnYY3sm9tiOyT7P83rvCvZ5ntcHJnxsz4SP7Zk037EdE3tsz8Qe2zOxx/ZM7LE9E3tsx2Sf53l9YMLH9kz42J4JH9szaZh0TOyxPRN7bM/EHtsz8d6tnon3bnVM9nme1wcmfGzPxB7bM7HH9kwaJh0Te2zPxB7bM7HH9kz42J4JH9sx2ed5Xh+Y8LE9E3tsz8Qe2zNpmHRM7LE9E+/d6pl471bPhI/tmfCxHRPnefXfsc7zGjCxx/ZM7LE9k4ZJx8Qe2zPhY3smfGzPhI/tmfCxHRPneQ2Y2GN7JvbYnok9tmfSuIKOifdu9Uz42J4JH9szscf2TOyx/8zk5jyvARN7bM/EHtszscf2TBomHRM+tmfCx/ZM+NieiT22Z2KP7Zg4z2vAxB7bM/HerZ6J9271TBomHRM+tmdij+2Z2GN7JvbYnok9tmPiPK8BE3tsz4SP7ZnwsT2ThknHhI/tmdhjeyb22J6JPbZnYo/tmOzzPK/3rmCf53l9YMLH9kz42J5J8x3bMbHH9kzssT0Te2zPxB7bM7HHdkz2eZ7XByZ8bM+Ej+2Z8LE9k4ZJx8Qe2zOxx/ZM7LE9E+/d6pl471bHZJ/neX1gwsf2TOyxPRN7bM+kYdIxscf2TOyxPRN7bM+Ej+2Z8LEdk32e5/WBCR/bM7HH9kzssT2ThknHxB7bM/HerZ6J9271TPjYnok9tmPiPK8BE3tsz8Qe2zOxx/ZMGiYdE+8r6JnYY3sm9tieCR/bM7HHdkyc5zVgYo/tmdhjeyb22J5Jcy/umNhjeyb22J6JPbZnYo/tmdhjOybO8xowscf2TOyxPRN7bM+kYdIx8fcKeib+fmzPxN+P7ZnYY3smu9xj76f789r7+fBPTO77PM/rfDg/rz0fH78y6S++nE7Piy+nduwA7nLpzQS4yw05E+Au1+lMgA3AGMBdLuqZAHe51WcC3GUFyAS4y76QCXCX5SIR4D5PZMsEqIkEAWoiQYCaSBBgAzAGUBMJAtREggA1kSBATSQIUBOJAdznmXqZADWRIEBNJAhQEwkCbADGAGoiQYCaSBCgJhIEqIkEAWoiMYD7PBUxE6AmEgSoiQQBaiJBgA3AGEBNJAhQEwkC1ESCADWRIEBNJAZwn+daZgLURIIANZEgQE0kCLABGAOoiQQBaiJBgJpIEKAmEgTosNF//of5d4eNDpg4bLRnsssK8IGJlyn1TBomHRMvU+qZeJlSz8TLlHomDmnqmdhjOyb7PGz0AxN7bM/ES0F7JvbYnknDpGNij+2Z2GN7JvbYnomXgvZMvNy+Y+Kw0QETL7fvmdhjeyb22J5Jw6RjYo/tmTikqWfikKaeCR/bM+FjOyYOG+2/Yx02OmBij+2Z2GN7Jg2Tjok9tmfCx/ZM+NieCR/bM+FjOyYOGx0wscf2TOyxPRN7bM+kcQUdk13usR+Y8LE9Ez62Z2KP7ZnYY/+ZyWOfh41+YGKP7ZnYY3sm9tieScOkY8LH9kz42J4JH9szscf2TOyxHZN9HlX5gYk9tmfifQU9k13usR+YNEw6Jnxsz8Qe2zOxx/ZM7LE9E3tsx2SfBx1+YGKP7ZnwsT0TPrZn0jDpmPCxPRN7bM/EHtszscf2TOyxHZN9HpP33hXs8+S7D0z42J4JH9szab5jOyb22J6JPbZnYo/tmdhjeyb22I7JPg9Z+8CEj+2Z8LE9Ez62Z9Iw6ZjYY3sm9tieiT22Z+K9Wz0T793qmDjPa8CEj+2Z2GN7JvbYnknDpGNij+2Z2GN7JvbYngkf2zPhYzsm+zzP6wMTPrZnYo/tmdhjeyYNk46JPbZn4r1bPRPv3eqZ8LE9Ez62Y+I8r/471nleAyb22J6JPbZn0jDpmNhjeyZ8bM+Ej+2Z8LE9Ez62Y+I8rwETe2zPxB7bM7HH9kwaV9Ax8d6tngkf2zPhY3sm9tieiT22Y+I8rwETe2zPxB7bM7HH9kwaJh0TPrZnwsf2TPjYnok9tmdij/1nJseDA71GUGyyAyhevTWA4t1bAygNlB4KKzuAYp0dQLHPDqBYaAdQbLQ9FEd7jaDYaAdQyNkBFHZ2AKWB0kPhZwdQbLQDKDbaARQb7QCKjbaHss9Dvj6og32e8vUJCkc7gMLRDqA0X7Q9FBvtAIqNdgDFRjuAYqMdQLHR9lD2edzXJygc7QAKRzuAwtEOoDRQeig22gEUG+0Aio12AMXruQZQvJ+rh7LPg78+QeFoB1BstAMoNtoBlAZKD8VGO4Biox1AsdEOoHC0AygcbQ9ln0eAfYLC0Q6g2GgHUGy0AygNlB6KjXYAxQu7BlC8sWsAhaMdQOFoeygOAxt80ToNbATFRjuAYqMdQGmg9FBstAMoHO0ACkc7gMLRDqBwtD0Ux4KNoNhoB1BstAMoNtoBlEYd9FC8vWsAhaMdQOFoB1BstAMoNtoeigPCRlBstAMoNtoBFBvtAEoDpYfC0Q6gcLQDKBztAIqNdgDFRttDcVTYCIqNdgDF27sGULy9awClgdJD4WgHUGy0Ayg22gEUG+0Aio22g3J0ZtgIio12AIWjHUDhaAdQGig9FI52AMVGO4Biox1AsdEOoNhoeyj7PDPsvTo47vPMsE9QONoBFI52AKX5ou2h2GgHUGy0Ayg22gEUG+0Aio22h7LPM8M+QeFoB1A42gEUjnYApYHSQ7HRDqDYaAdQbLQDKN7eNYDi7V09lH2eGfYJCkc7gGKjHUCx0Q6gNFB6KDbaARQb7QCKjXYAhaMdQOFoeyj7PDPsExSOdgDFRjuAYqMdQGmg9FBstAMo3t41gOLtXQMoHO0ACkfbQ3Fm2OCL1plhIyg22gEUG+0ASgOlh2KjHUDhaAdQONoBFI52AIWj7aE4M2wExUY7gGKjHUCx0Q6gNOqgh+LtXQMoHO0ACkc7gGKjHUCx0fZQnBk2gmKjHUCx0Q6g2GgHUBooPRSOdgCFox1A4WgHUGy0Ayg22h6KM8NGUGy0Ayje3jWA4u1dAygNlB4KRzuAYqMdQLHRDqDYaAdQbLQ9FGeGjaDYaAdQONoBFI52AKWB0kPhaAdQbLQDKDbaARQb7QCKjbaDctrnmWHv1cFpn2eGfYLC0Q6gcLQDKM0X7f/ooNhoB1BstAMoNtoBFBvtAIqNtoeyzzPDPkHhaAdQONoBFI52AKWB0kOx0Q6g2GgHUGy0Ayje3jWA4u1dPZR9nhn2CQpHO4Biox1AsdEOoDRQeig22gEUG+0Aio12AIWjHUDhaHso+zwz7BMUjnYAxUY7gGKjHUBpoPRQbLQDKN7eNYDi7V0DKBztAApH20NxZtjgi9aZYSMoNtoBFBvtAEoDpYdiox1A4WgHUDjaARSOdgCFo+2hODNsBMVGO4Biox1AsdEOoDTqoIfi7V0DKBztAApHO4Biox1AsdH2UJwZNoJiox1AsdEOoNhoB1AaKD0UjnYAhaMdQOFoB1BstAMoNtoeijPDRlBstAMo3t41gOLtXQMoDZQeCkc7gGKjHUCx0Q6g2GgHUGy0PRRnho2g2GgHUDjaARSOdgClgdJD4WgHUGy0Ayg22gEUG+0Aio22h7LPM8M+qIN9nhn2CQpHO4DC0Q6gNF+0PRQb7QCKjXYAxUY7gGKjHUCx0XZQzvs8M+wTFI52AIWjHUDhaAdQGig9FBvtAIqNdgDFRjuA4u1dAyje3tVD2eeZYZ+gcLQDKDbaARQb7QBKA6WHYqMdQLHRDqDYaAdQONoBFI62h7LPM8M+QeFoB1BstAMoNtoBlAZKD8VGO4Di7V0DKN7eNYDC0Q6gcLQ9FGeGDb5onRk2gmKjHUCx0Q6gNFB6KDbaARSOdgCFox1A4WgHUDjaHoozw0ZQbLQDKDbaARQb7QBKow56KN7eNYDC0Q6gcLQDKDbaARQbbQ/FmWEjKDbaARQb7QCKjXYApYHSQ+FoB1A42gEUjnYAxUY7gGKj7aE4M2wExUY7gOLtXQMo3t41gNJA6aHYaAdQbLQDKDbaARQb7QCKjbaH4sywERTvOhhAsdEOoNhoB1Ca75Qeio12AMVGO4Biox1AsdEOoNhoeyj7PDPswy15n2eGfYJiox1AsdEOoDRftD0UG+0Aio12AMVGO4Biox1AsdH2UPZ5ZtgnKP7WwQCKv0c7gOLv0Q6gNFB6KLvcaO+n+/Pa+/nQQ9nlRns+nJ/Xno+PX6H0F19Op+fFl1M79gR3uf6mEtzlrpxKcJeLdSLBts9zzlIJ7nJlTyW4y/0+leAuy0AqwYZgkOAua0YqQZ0kSlAniRLUSaIEdZIgwX2eVJdKUCeJEtRJogR1kijBhmCQoE4SJaiTRAnqJFGCOkmUoE4SJLjPswZTCeokUYI6SZSgThIl2BAMEtRJogR1kihBnSRKUCeJEtRJggT3eVpkKkGdJEpQJ4kS1EmiBBuCQYI6SZSgThIlqJNECeokUYI6SZDgPs/7TCWok0QJ6iRRgjpJlGBDMEjQgaa3HooDTQdQHGg6gLLLMvAJihcx9VAcaDqC4kVMAyhexDSA4kVMAyjN3aeHYqMdQLHRDqDYaAdQvFp0AMVG20NxoOkIio12AMVGO4Biox1AaaD0ULwsfwDFy/IHULwsfwDFRjuAYqPtoTjQdATFRjuA4vinARTHPw2gNFB6KBztAIqNdgDFRjuAYqMdQLHR9lD2eaDpJyg22gEUjnYAhaMdQGmg9FA42gEUG+0Aio12AMVGO4Bio+2h7PNA0w/qYJ8Hmn6CwtEOoHC0AyjNF20PxUY7gGKjHUCx0Q6g2GgHUGy0HZTLPg8H/QSFox1A4WgHUDjaAZQGSg/FRjuAYqMdQLHRDqB418EAyi432g9Q9nm05CcoHO0Aio12AMVGO4DSQOmh2GgHUGy0Ayg22gEUjnYAhaPtoezzYMJPUDjaARQb7QCKjXYApYHSQ7HRDqB4e9cAird3DaBwtAMoHG0PZZ/H2n34ot3nSXWfoNhoB1BstAMoDZQeio12AIWjHUDhaAdQONoBFI62h7LPQ9E+QbHRDqDYaAdQbLQDKI066KF4e9cACkc7gMLRDqDYaAdQbLQ9FGeGjaDYaAdQbLQDKDbaAZQGSg+Fox1A4WgHUDjaARQb7QCKjbaH4sywERQb7QCKt3cNoHh71wBKA6WHwtEOoNhoB1BstAMoNtoBFBttD8WZYSMoNtoBFI52AIWjHUBpoPRQONoBFBvtAIqNdgDFRjuAYqPtoezzzLAP6mCfZ4Z9gsLRDqBwtAMozRdtD8VGO4Biox1AsdEOoNhoB1BstD2UfZ4Z9gkKRzuAwtEOoHC0AygNlB6KjXYAxUY7gGKjHUDx9q4BFG/v6qBc93lm2CcoHO0Aio12AMVGO4DSQOmh2GgHUGy0Ayg22gEUjnYAhaPtoezzzLBPUDjaARQb7QCKjXYApYHSQ7HRDqB4e9cAird3DaBwtAMoHG0PxZlhgy9aZ4aNoNhoB1BstAMoDZQeio12AIWjHUDhaAdQONoBFI62h+LMsBEUG+0Aio12AMVGO4DSqIMeird3DaBwtAMoHO0Aio12AMVG20NxZtgIio12AMVGO4Biox1AaaD0UDjaARSOdgCFox1AsdEOoNhoeyjODBtBsdEOoHh71wCKt3cNoDRQeigc7QCKjXYAxUY7gGKjHUCx0fZQnBk2gmKjHUDhaAdQONoBlAZKD4WjHUCx0Q6g2GgHUGy0Ayg22h7KPs8M+6AO9nlm2CcoHO0ACkc7gNJ80fZQbLQDKDbaARQb7QCKjXYAxUbbQ9nnmWGfoHC0Aygc7QAKRzuA0kDpodhoB1BstAMoNtoBFG/vGkDx9q4eyj7PDPsEhaMdQLHRDqDYaAdQGig9FBvtAIqNdgDFRjuAwtEOoHC0HZTbPs8M+wSFox1AsdEOoNhoB1AaKD0UG+0Aird3DaB4e9cACkc7gMLR9lCcGTb4onVm2AiKjXYAxUY7gNJA6aHYaAdQONoBFI52AIWjHUDhaHsozgwbQbHRDqDYaAdQbLQDKI066KF4e9cACkc7gMLRDqDYaAdQbLQ9FGeGjaDYaAdQbLQDKDbaAZQGSg+Fox1A4WgHUDjaARQb7QCKjbaH4sywERQb7QCKt3cNoHh71wBKA6WHwtEOoNhoB1BstAMoNtoBFBttD8WZYSMoNtoBFI52AIWjHUBpoPRQONoBFBvtAIqNdgDFRjuAYqPtoezzzLAP6mCfZ4Z9gsLRDqBwtAMozRdtD8VGO4Biox1AsdEOoNhoB1BstD2UfZ4Z9gkKRzuAwtEOoHC0AygNlB6KjXYAxUY7gGKjHUDx9q4BFG/v6qHs88ywT1A42gEUG+0Aio12AKWB0kOx0Q6g2GgHUGy0Aygc7QAKR9tD2eeZYZ+gcLQDKDbaARQb7QBKA6WHYqMdQPH2rgEUb+8aQOFoB1A42g7K3ZlhxwEUG+0Aio12AMVGO4DSQOmh2GgHUDjaARSOdgCFox1A4Wh7KM4MG0Gx0Q6g2GgHUGy0AyiNOuiheHvXAApHO4DC0Q6g2GgHUGy0PRRnho2g2GgHUGy0Ayg22gGUBkoPhaMdQOFoB1A42gEUG+0Aio22h+LMsBEUG+0Aird3DaB4e9cASgOlh8LRDqDYaAdQbLQDKDbaARQbbQ/FmWEjKDbaARSOdgCFox1AaaD0UDjaARQb7QCKjXYAxUY7gGKj7aHs88ywD+pgn2eGfYLC0Q6gcLQDKM0XbQ/FRjuAYqMdQLHRDqDYaAdQbLQ9lH2eGfYJCkc7gMLRDqBwtAMoDZQeio12AMVGO4Biox1A8fauARRv7+qh7PPMsE9QONoBFBvtAIqNdgClgdJDsdEOoNhoB1BstAMoHO0ACkfbQ9nnmWGfoHC0Ayg22gEUG+0ASgOlh2KjHUDx9q4BFG/vGkDhaAdQONoeijPDBl+0zgwbQbHRDqDYaAdQGig9FBvtAApHO4DC0Q6gcLQDKBxtB+XhzLARFBvtAIqNdgDFRjuA0qiDHoq3dw2gcLQDKBztAIqNdgDFRttDcWbYCIqNdgDFRjuAYqMdQGmg9FA42gEUjnYAhaMdQLHRDqDYaHsozgwbQbHRDqB4e9cAird3DaA0UHooHO0Aio12AMVGO4Biox1AsdH2UJwZNoJiox1A4WgHUDjaAZQGSg+Fox1AsdEOoNhoB1BstAMoNtoeyj7PDPugDvZ5ZtgnKBztAApHO4DSfNH2UGy0Ayg22gEUG+0Aio12AMVG20PZ55lhn6BwtAMoHO0ACkc7gNJA6aHYaAdQbLQDKDbaARRv7xpA8fauHso+zwz7BMVGO4Biox1AsdEOoDRQeig22gEUG+0AincdDKDYaAdQbLQ9lH2eGfbhO2WfZ4Z9gmKjHUCx0Q6gNFB6KDbaARRv7xpAsdEOoNhoB1BstD0UZ4YNvmidGTaCYqMdQLHRDqA0UHooNtoBFI52AMXfOhhA8fdoB1D8PdoeijPDRlB2udHeT/fntffzoYdSeaM9/vwUp9Onq2+P58e4//jlvq4df+TT16icT8fDP1z9J5bKO+1fh+V8Oz8/czscPlzdDqfnj26H2y+j9fg7w4bhR4bH8+PJ8Pg49gwrb8x/HcMfLL4YtvaJYbt/6Z3L8efnOLXRj761408ct18v/hN45W18k8Dv18vzR99HwCtv+ksCr9wilgReuaGsB/x0KH2+3JLAKzerJYHvs7V9I/B99sFvBN4Anwt8mab5OD8/xuN6+oTw8YRyab929ZFKu7Sva381dMf7b9fMH7SXqZklaH+a7WU65iZoL1MwN0F7mXa5BdqlD3pcj/YyvXITtJcplZugvUyj3ATthvZE2rrkB9rXw/Xv117Plw+079fntff78Zefe/07bFUyEfbj6+/hPH79Y/AD9uAznA/PR/3tfHz8/GMwuvjy4/d/fuJTO/568Z8x6qhLxKj8LhGjVr1CjKVPsRXjvxwjD7BEjATDEjEyF0vE2MS4QoxcyxIxsjhLxMjiLBEji7NEjCzOCjGWPrldjP9yjCzOEjGyOEvEyOIsEWMT4woxsjhLxMjiLBEji7NEjCzOEjGyOCvE2FicJWJkcZaIkcVZIkYWZ4kYmxhXiJHFWSJGFmeJGFmcJWJkcZaIkcVZIcYLi7NEjCzOEjGyOEvEyOIsEWMT4woxsjhLxMjiLBEji7NEjCzOEjGyOCvEeGVxloiRxVkiRhZniRhZnCVibGJcIUYWZ4kYWZzvivF6+Tpd6nq99ckQM1WT4VqqJkOfFE3mxoh8VzK3w5NFux0HyZAcVZPhLaomQ0VUTaZJpmgyhEHV3YwDqJoMB1A1GQ6gajIcQNEN4M4BVE2GA6iaDAdQNRkOoGoyTTJFk+EAqibDAVRNhgOomgwHUDUZDqBoMg8OoGoyHEDVZDiAqslwAN+VzIenAI8mmaLJcABVk+EAqibDAVTdADiAqslwADWTOR44gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAAVZPhAKomwwEUTebIAVRNhgP4rmTePwU4HjmAqslwAFWTaZIpmgwHUHUD4ACqJsMBVE2GA6iaDAdQNJkTB1A1GQ6gajIcQNVkOICqyTTJFE2GA6iaDAdQNRkOoGoyHEDVZDiA70rmw1OAMwdQNRkOoGoyHEDVZDiAohvAuUmmaDIcQNVkOICqyXAAVZPhAKomwwEUTaZxAFWT4QCqJsMBVE2GA6iaTJNM0WQ4gKrJcABVk+EAviuZD08BGgdQNRkOoGgyFw6gajIcQNEN4MIBVE2GA6iaTJNM0WQ4gKrJcABVk+EAqibDAVRNhgMomsyVA6iaDAdQNRkOoGoyHEDVZJpkiibDAXxXMh+eAlw5gKrJcABVk+EAqibDARTdAG4cQNVkOICqyXAAVZPhAKom0yRTNBkOoGoyHEDVZDiAqslwAFWT4QCKJnPnAKomwwFUTYYDqJoMB/BdyXx4CnBvkimaDAdQNRkOoGoyHEDVDYADqJoMB1A0mQcHUDUZDqBqMhxA1WQ4gKrJNMkUTYYDqJoMB1A1GQ6gajIcQNVkOICayZwOHEDVZDiA70rm/VOA04EDqJoMB1A1mSaZoslwAFU3AA6gajIcQNVkOICqyXAARZM5cgBVk+EAqibDAVRNhgOomkyTTNFkOICqyXAAVZPhAKomwwFUTYYD+K5kPjwFOHEAVZPhAKomwwFUTYYDKLoBnJpkiibDAVRNhgOomgwHUDUZDqBqMhxA0WTOHEDVZDiAqslwAFWT4QCqJtMkUzQZDqBqMhxA1WQ4gO9K5sNTgDMHUDUZDqBoMo0DqJoMB1B0A2gcQNVkOICqyTTJFE2GA6iaDAdQNRkOoGoyHEDVZDiAoslcOICqyXAA/6NoMhxA1WQ4gKrJNMkUTYYD+K5kPjwFuHAAVZPhAKomwwFUTYYDKLoBXDmAqslwAFWT4QCqJsMBVE2mSaZoMhxA1WQ4gKrJcABVk+EAqibDARRN5sYBVE2GA6iaDAdQNRkO4LuS+fAU4NYkUzQZDqBqMhxA1WQ4gKobAAdQNRkOoGgydw6gajIcQNVkOICqyXAAVZNpkimaDAdQNRkOoGoyHEDVZDiAqslwAEWTeXAAVZPhAL4rmQ9PAR4cQNVkOICqyTTJFE2GA6i6AXAAVZPhAKomwwFUTYYDqJnM+cABVE2GA6iaDAdQNRkOoGoyTTJFk+EAqibDAVRNhgOomgwHUDUZDuC7knn/FOB85ACqJsMBVE2GA6iaDAdQdAM4NskUTYYDqJoMB1A1GQ6gajIcQNVkOICiyZw4gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAA35XMh6cAJw6gajIcQNFkzhxA1WQ4gKIbwJkDqJoMB1A1mSaZoslwAFWT4QCqJsMBVE2GA6iaDAdQNJnGAVRNhgOomgwHUDUZDqBqMk0yRZPhAL4rmQ9PARoHUDUZDqBqMhxA1WQ4gKIbwIUDqJoMB1A1GQ6gajIcQNVkmmSKJsMBVE2GA6iaDAdQNRkOoGoyHEDRZK4cQNVkOICqyXAAVZPhAL4rmQ9PAa5NMkWT4QCqJsMBVE2GA6i6AXAAVZPhAIomc+MAqibDAVRNhgOomgwHUDWZJpmiyXAAVZPhAKomwwFUTYYDqJoMB1A0mTsHUDUZDuC7kvnwFODOAVRNhgOomkyTTNFkOICqGwAHUDUZDqBqMhxA1WQ4gKLJPDiAqslwAFWT4QCqJsMBVE2mSaZoMhxA1WQ4gKrJcABVk+EAqibDAXxXMu+fArQDB1A1GQ6gajIcQNVkOICaG0A7NMkUTYYDqJoMB1A1GQ6gajIcQNVkOICiyRw5gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAA35XMh6cARw6gajIcQNFkThxA1WQ4gKIbwIkDqJoMB1A1mSaZoslwAFWT4QCqJsMBVE2GA6iaDAdQNJkzB1A1GQ6gajIcQNVkOICqyTTJFE2GA/iuZD48BThzAFWT4QCqJsMBVE2GAyi6ATQOoGoyHEDVZDiAqslwAFWTaZIpmgwHUDUZDqBqMhxA1WQ4gKrJcABFk7lwAFWT4QCqJsMBVE2GA/iuZD48Bbg0yRRNhgOomgwHUDUZDqDqBsABVE2GAyiazJUDqJoMB1A1GQ6gajIcQNVkmmSKJsMBVE2GA6iaDAdQNRkOoGoyHEDRZG4cQNVkOIDvSubDU4AbB1A1GQ6gajJNMkWT4QCqbgAcQNVkOICqyXAAVZPhAIomc+cAqibDAVRNhgOomgwHUDWZJpmiyXAAVZPhAKomwwFUTYYDqJoMB/BdyXx4CvDgAKomwwFUTYYDqJoMB1B0A3g0yRRNhgOomgwHUDUZDqBqMhxA1WQ4gJrJXA4cQNVkOICqyXAAVZPhAKom0yRTNBkOoGoyHEDVZDiA70rm/VOAy4EDqJoMB1A0mSMHUDUZDqDoBnDkAKomwwFUTaZJpmgyHEDVZDiAqslwAFWT4QCqJsMBFE3mxAFUTYYDqJoMB1A1GQ6gajJNMkWT4QC+K5kPTwFOHEDVZDiAqslwAFWT4QCKbgBnDqBqMhxA1WQ4gKrJcABVk2mSKZoMB1A1GQ6gajIcQNVkOICqyXAARZNpHEDVZDiAqslwAFWT4QC+K5kPTwFak0zRZDiAqslwAFWT4QCqbgAcQNVkOICiyVw4gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAAVZPhAKomwwEUTebKAVRNhgP4rmQ+PAW4cgBVk+EAqibTJFM0GQ6g6gbAAVRNhgOomgwHUDUZDqBoMjcOoGoyHEDVZDiAqslwAFWTaZIpmgwHUDUZDqBqMhxA1WQ4gKrJcADflcyHpwB3DqBqMhxA1WQ4gKL3mTsHUDWZJpmiyXAAVZPhAKomwwFUTYYDqLo1cwBFk3lwAFWT4QCK3mceHEDVZDiAqsk0yRRNhgOomgwHUDUZDqDq1swBVE2GA6iZzPXAAVRNhgOouQFcDxxA1WQ4gKrJNMkUTYYDqJoMB1A1GQ6gajIcQNVkOICiyRw5gKrJcABVk+EAviuZ++n+TOZ+PvTJcACJyRzb+Wkpj+1y/ZDN9Xw6fv3o1n7NZkT5+gzyB/CfP/p0GV18Pj6eF59Pl18v/jP1JvUdps5d7DF1XmSPqXMuK6be2pPzuV3ufep8zh5T54qWTP32lUl7nN5ffHrcv37y4XD4cHG7PNGd2u3+/uLL4Qvz+djVxxMZZvS+afTYPqP3W6P3eP7k0+V0CI0enWn0vmn0+Fqj9zujdzs/cZxut8uHiw/t+QueDtcWmtNmTs3pBuaUEzenf92c3p6S9nQ8nEJzyuKb0y3MqecOe5/T8+HUvub0/OEnn873rzlth/OvF/85T55omKffmadEweixitH7ntE7e6xi9L5p9DxWMXq/NXppbvvssYrR+6bR81jF6P3O6F2/xulvt8yutp6beTJPifPkMYV5ypwnjxPMU+Y80f7m6Xfm6XceTx3vX3EfH8f+GcHZMwLD923D5ymB4furhi/xLzo1jxTM6Rbm1PMHc7qFOfWwwpz+dXOa9hfymicb5nQLc9rM6d7n9Pj1Frnz8Rzs5c0TE/OUOU+emJin35inzKrh4YrR+6bR82jF6H3T6HmwYvR+a/TSuujFsxKj902j5/HHiqN3uZyfF1+uH/59zu/9O+8P/3724jGFefqeF/RdPHkwet80es3oGb3vGT3PHYze97wb8uIRhdH7ptHziMLo/c7offj3RBfPHcxT5jx5mGCeEufp6gmBecqcJ9rfPP1Vr3f99Ffbrp4RGL5vGz5PCQzfBg4KuDZzak43MKeeP5jTLcyphxXmdAMHWlw92TCnW5hTT0z2Pqff9cr4q4crRu97Ru/mOYzR+55Xxt88sjF63zR6HtgYvQ28I+3m2Y453cKcNnNqTuu/I+3m2Y453cKceraz+znNfPfazTMY85Q5T56VmKfveavVzbMSo/c9o3f3rMTofdPoeVZi9L7nhWp3z0qM3jeNnscfmaN3/4J9vJ+O/zB6f+JucM/ETUZPxc2pTsVNOf5VuI9tgJuRm4qbhZqJ+8G8TMXNNkzFrWFPxa1VzlwEHw3umbi1yqm4tcqpuLXKqbi1yqm4tcqJuG8HrXIqbq1yKm6tcipurXIq7gZ3Iu43fyvhT9xa5VTcWuVU3FrlVNxa5VTcWuUH3Lf2/Mj34+ED7uvh+bfbrqefDxfOx+OfsI865UTYGuVE2PrkRNja5ETYDex5sDXJibD1yImwtciJsHXIibA1yHmwTxrkRNga5ETYGuRE2BrkRNgN7HmwNciJsDXIibA1yImwNciJsDXIebDPGuRE2BrkRNga5ETYGuRE2A3sebA1yImwNciJsDXIibA1yImwNch5sJsGORG2BjkRtgY5EbYGORF2A3sebA1yImwNciJsDXIibA1yImwNch7siwY5EbYGORG2BjkRtgY5EXYDex5sDXIibA1yImwNciJsDXIibA1yHuyrBjkRtgY5EbYGORG2BjkRdgN7HmwNciJsDXIibA1yImwN8gPs++N5VPbj49tYT9fnzz39guJ8GX6EJ4nL8fbh0sP1+ULYdjxef734zwwV081neNN3t5+hGr39DLXz7Weo9G8/wybDzWdIUWw/Q+Zj+xkSKtvPkKfZfoY8zeYzvPM028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZPnia7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/UM7weeZvsZ8jTbz5Cn2X6GPM32M2wy3HyGPM32M+Rptp8hT7P9DHma7WfI02w+wyNPs/0MeZrtZ8jTbD9Dnmb7GTYZbj5Dnmb7GfI028+Qp9l+hjzN9jPkaTaf4Ymn2X6GPM32M+Rptp8hT7P9DJsMN58hT7P9DHma7WfI02w/Q55m+xnyNJvP8MzTbD9Dnmb7GfI028+Qp6mf4en+/LHt3E7vLz4dj8/Pezq21gfeBL6vwBmgnQVOF+0scG5pZ4ETUTsLnLXaV+CN4tpZ4HzYzgInz3YWONO2s8CbwPcVONO2s8CZtp0FzrTtLHCmbWeBM237CvzCtO0scKZtZ4EzbTsLnGnbWeBN4PsKnGnbWeBM284CZ9p2FjjTtrPAmbZ9BX5l2nYWONO2s8CZtp0FzrTtLPAm8H0FzrTtLHCmrXzgl9P9+atdzqdLnyF5tv0M+bDtZ0hxbT7DG2u1/QyJqO1nyC1tP0O6aPsZNhluPkNSZ/sZ8jTbz5Cn2X6GPM32M+RpNp/hnafZfoY8zfYz5Gm2nyFPs/0Mmww3nyFPs/0MeZrtZ8jTbD9Dnmb7GfI0m8/wwdNsP0OeZvsZ8jTbz5Cn2X6GTYabz5Cn2X6GPM32M+Rptp8hT7P9DHmarWf4OPA028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZHnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/kMTzzN9jPkabafIU+z/Qx5mu1n2GS4+Qx5mu1nyNNsP0OeZvsZ8jTbz5Cn2XyGZ56mfoaX29e1l79x/ecMeZrtZ8jTbD9Dnmb7GTYZbj5Dnmb7GfI028+Qp9l+hjzN9jPkaTafYeNptp8hT7P9DHma7WfI02w/wybDzWfI02w/Q55m+xnyNNvPkKfZfoY8zeYzvPA028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZXnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/kMbzzN9jPkabafIU+z/Qx5mu1n2GS4+Qx5mu1nyNNsP0OeZvsZ8jTbz5Cn2XyGd55m+xnyNNvPkKfZfoY8zfYzbDLcfIY8zfYz5Gm2nyFPs/0MeZrtZ8jTbD7DB0+z/Qx5mu1nyNNsP0OeZvsZNhlWz/B6ase/X3s9H859hjzN9jPkabafIU+z/Qx5mu1nyNNsPMPz4cDTbD9Dnmb7GfI028+Qp9l+hk2Gm8+Qp9l+hjzN9jPkabafIU+z/Qx5ms1neORptp8hT7P9DHma7WfI02w/wybDzWfI02w/Q55m+xnyNNvPkKfZfoY8zeYzPPE028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZnnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNPUz/HHFM8NLa32GPM32M+Rptp8hT7P9DHmazWfYeJrtZ8jTbD9Dnmb7GfI028+wyXDzGfI028+Qp9l+hjzN9jPkabafIU+z+QwvPM32M+Rptp8hT7P9DHma7WfYZLj5DHma7WfI02w/Q55m+xnyNNvPkKfZfIZXnmb7GfI028+Qp9l+hjzN9jNsMtx8hjzN9jPkabafIU+z/Qx5mu1nyNNsPsMbT7P9DHma7WfI02w/Q55m+xk2GW4+Q55m+xnyNNvPkKfZfoY8zfYz5Gk2n+Gdp9l+hjzN9jPkabafIU+z/QybDDefIU+z/Qx5mu1nyNNsP0OeZvsZ8jSbz/DB02w/Q56mfob32/PHXh+Ha58hT7P9DHma7WfYZFg+w8fp8JXh5fD+4vv5/PzB9/Pl+uHi9mR2v/bnSD34H7PxajZ4JbPxajb4KrPxajZ4MLPxajb4NbMxno3jgbczG69mgw80G69mg2c0G69mg780G69mo5kNs/FiNnhRs/FqNnhRs/FqNnhRs/FqNnhRs/FqNnhRs/FiNo68qNl4NRu8qNl4NRu8qNl4NRu8qNl4NRvNbJiNF7PBi5qNV7PBi5qNV7PBi5qNV7PBi5qNV7PBi5qNF7Nx4kXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxqvZaGbDbLyYDV7UbLyaDV7UbLyaDV7UbLyaDV7UbLyaDV7UbLyYjTMvajZezQYvajZezQYvajZezQYvajZezUYzG2bjxWzwombj1Wzwombj1Wzwombj1Wzwombj1WzwombjxWw0XtRsvJoNXtRsvJoNXtRsvJoNXtRsvJqNZjbMxovZ4EXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxovZuPCiZuPVbPCiZuPVbPCiZuPVbPCiZuPVbDSzYTZezAYvajZezQYvajZezQYvajZezQYvajZezQYvajZezMaVFzUbr2aDFzUbr2aDFzUbr2aDFzUbr2ajmQ2z8WI2eFGz8Wo2eFGz8Wo2eFGz8Wo2eFGz8Wo2eFGz8WI2bryo2Xg1G7yo2Xg1G7yo2Xg1G7yo2Xg1G81smI0Xs8GLmo1Xs8GLmo1Xs8GLmo1Xs8GLmo1Xs8GLmo0Xs3HnRc3Gq9ngRc3Gq9ngRc3Gq9ngRc3Gq9loZsNsvJgNXtRsvJoNXtRsvJoNXtRsvJoNXtRsvJoNXtRsvJiNBy9qNl7NBi9qNl7NBi9qNl7NBi9qNl7NRjMbZuPFbPCiZuPVbPCiZuPVbPCiZuPVbPCiZuPVbPCiZmM8G6cDL2o2Xs0GL2o2Xs0GL2o2Xs0GL7rabBzPX7NxbX3gTeD7CpzB3FngtOTOAucadxY4gbizwFnBfQV+pPp2Fjh/t7PASbmdBc60LRZ4u3yZ1R//jfcXnx63+/MDPx4/p+N0HVx8OXyN0uVwPv568Z+j1IySUcoZJXbQKCWNEu9olJJGidE0SkmjxJUapaRRYmGNUs4onfhdo5Q0SsyxUUoaJU7aKCWNEtttlJJGqRklo5QzSmy3UUoaJbbbKCWNEtttlJJGie02SkmjxHYbpZxROrPdRilplNhuo5Q0Smy3UUoaJbbbKCWNUjNKRilnlNhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGie02Sjmj1Nhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGqRklo5QzSmy3UUoaJbbbKCWNEtttlJJGie02SkmjxHYbpZxRurDdRilplNhuo5Q0Smy3UUoaJbbbKCWNUjNKRilnlNhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGie02SjmjdGW7jVLSKLHdRilplNhuo5Q0Smy3UUoapWaUjFLOKLHdRilplNhuo5Q0Smy3UUoaJbbbKCWN0i5t9+3y/MG3++XDKLXz4UmwnY+PD7h/fM4n7lPrcd92aYS/D/curen34d6lWfw+3Lu0b9+Hu8E9E/cuLc734d6l6fg+3Lu0Ad+He5eN+ftwa5Uzcd+1yqm4tcqpuLXKqbi1yqm4G9wzcWuVU3FrlVNxa5VTcWuVU3FrlTNxP7TKqbi1yqm4tcqpuLXKqbgb3DNxa5VTcWuVU3FrlVNxa5VTcWuVE3GfD1rlVNxa5VTcWuVU3FrlVNwN7pm4tcqpuLXKqbi1yqm4tcqpuLXKmbiPWuVU3FrlVNxa5VTcWuVU3A3umbi1yqm4tcqpuLXKqbi1yk+4r5fjE/f1eusJKopBgifdL0pQnYsS1NA+Ebwdnp+53Y4DgkpXlGBDMEhQNYoS1HaiBBWY6L1YJ4kS1EmCBM86SZSgThK8k5x1kihBnSRKsCEYJKiTRAnqJFGCOkmUoE4SJaiTBAk2nSRKUCeJEtRJogR1kijBhmCQoE4StFtNJ4kS1EmiBHWSKEGdJHgnuegkUYI6SZSgThIlqJNECTYEgwR1kihBnSRKUCeJEtRJogR1kiDBq04SJaiTRAnqJFGCOknQbl0bgkGCOkmUoE4SJaiTRO8kOkmUoE4SJHjTSaIEdZIoQZ0kSlAniRJsCAYJ6iRRgjpJlKBOEiWok0QJ6iRBgnedJEpQJwnarbtOEiWok0QJNgSDBHWS6J1EJ4kS1EmiBHWSKEGdJEjwoZNECeokUYI6SZSgThIl2BAMEtRJogR1kihBnSRKUCeJEtRJYnarHXSSKEGdJEpQJ4kS1Elid5J2aAgGCeokUYI6SZSgThIlqJNECeokQYJHnSRKUCeJEtRJogR1kijBhmCQoE4SJaiTRAnqJEG75Rz3MEGdJEjQOe5hgjpJ8E7iHPcwQZ0kSrAhGCSok0QJ6iRRgjpJlKBOEiWokwQJOsc9TFAniRLUSaIEdZIowYZgkKBOErRbznEPE9RJogR1kihBnSR4J3GOe5igThIlqJNECeokUYINwSBBnSRKUCeJEtRJogR1kihBnSRI0DnuYYI6SZSgThIlqJME7ZZz3MMEdZIoQZ0kSlAnid5JdJIoQZ0kSNA57mGCOkmUoE4SJaiTRAk2BIMEdZIoQZ0kSlAniRLUSaIEdZIgQee4hwnqJEG75Rz3MEGdJEqwIRgkqJNE7yQ6SZSgThIlqJNECeokQYLOcQ8T1EmiBHWSKEGdJEqwIRgkqJNECeokUYI6SZSgThIlqJME7ZZz3MMEdZIoQZ0kSlAnCd5JnOMeJqiTRAnqJFGCOkmUoE4SJaiTxAhenOMeJqiTRAnqJFGCOkmUYEMwSFAniRLUSaIEdZKY3bo4xz1MUCcJEnSOe5igThK8kzjHPUxQJ4kSbAgGCeokUYI6SZSgThIlqJNECeokQYLOcQ8T1EmiBHWSKEGdJEqwIRgkqJME7ZZz3MMEdZIoQZ0kSlAnCd5JnOMeJqiTRAnqJFGCOkmUYEMwSFAniRLUSaIEdZIoQZ0kSlAnCRJ0jnuYoE4SJaiTRAnqJEG75Rz3MEGdJEpQJ4kS1EmidxKdJEpQJwkSdI57mKBOEiWok0QJ6iRRgg3BIEGdJEpQJ4kS1EmiBHWSKEGdJEjQOe5hgjpJ0G45xz1MUCeJEmwIBgnqJNE7iU4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJEmwIBgnqJFGCOkmUoE4SJaiTRAnqJEG75Rz3MEGdJEpQJ4kS1EmCdxLnuIcJ6iRRgjpJlKBOEiWok0QJ6iRBgs5xDxPUSaIEdZIoQZ0kSrAhGCSok0QJ6iRRgjpJ0G45xz1MUCeJEbw6xz1MUCeJ3UmuznEPE9RJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJEmwIBgnqJEG75Rz3MEGdJEpQJ4kS1EmCdxLnuIcJ6iRRgjpJlKBOEiXYEAwS1EmiBHWSKEGdJEpQJ4kS1EmCBJ3jHiaok0QJ6iRRgjpJ0G45xz1MUCeJEtRJogR1kuidRCeJEtRJggSd4x4mqJNECeokUYI6SZRgQzBIUCeJEtRJogR1kihBnSRKUCcJEnSOe5igThK0W85xDxPUSaIEG4JBgjpJ9E6ik0QJ6iRRgjpJlKBOEiToHPcwQZ0kSlAniRLUSaIEG4JBgjpJlKBOEiWok0QJ6iRRgjpJ0G45xz1MUCeJEtRJogR1kuCdxDnuYYI6SZSgThIlqJNECeokUYI6SZCgc9zDBHWSKEGdJEpQJ4kSbAgGCeokUYI6SZSgThK0W85xDxPUSYIEneMeJqiTBO8kznEPE9RJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmM4M057mGCOkmUoE4SJaiTRAk2BIMEdZKY3bo5xz1MUCeJEtRJogR1kuCdxDnuYYI6SZSgThIlqJNECTYEgwR1kihBnSRKUCeJEtRJogR1kiBB57iHCeokUYI6SZSgThK0W85xDxPUSaIEdZIoQZ0keifRSaIEdZIgQee4hwnqJFGCOkmUoE4SJdgQDBLUSaIEdZIoQZ0kSlAniRLUSYIEneMeJqiTBO2Wc9zDBHWSKMGGYJCgThK9k+gkUYI6SZSgThIlqJMECTrHPUxQJ4kS1EmiBHWSKMGGYJCgThIlqJNECeokUYI6SZSgThK0W85xDxPUSaIEdZIoQZ0keCdxjnuYoE4SJaiTRAnqJFGCOkmUoE4SJOgc9zBBnSRKUCeJEtRJogQbgkGCOkmUoE4SJaiTBO2Wc9zDBHWSIEHnuIcJ6iTBO4lz3MMEdZIowYZgkKBOEiWok0QJ6iRRgjpJlKBOEiToHPcwQZ0kSlAniRLUSaIEG4JBgjpJ0G45xz1MUCeJEtRJogR1ktid5O4c9zBBnSRKUCeJEtRJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJ2a27c9zDBHWSKEGdJEpQJ4neSXSSKEGdJEjQOe5hgjpJlKBOEiWok0QJNgSDBHWSKEGdJEpQJ4kS1EmiBHWSIEHnuIcJ6iRBu+Uc9zBBnSRKsCEY/B7USaIEdZIoQZ0kSlAniRLUSYIEneMe3Wac4x4mqJNECeok0e/BhmCQoE4SJaiTRAnqJFGCOkmUoE4S3Gac4x4mqJNECeokUYI6SfBO4hz3MEGdJEpQJ4kS1EmiBHWSKEGdJEjQOe5hgjpJlKBOEiWok0QJNgQ/ELyf7k+C9/OhJ7jPTvJ4Xns/H/+B4J9QlqkZx8Pp8rz6cDl8wNIez4sv7fBhsC7t69r7L9ce7yMYt3b8SeOXP8bt77yXKSVFeP/4Y/2kcR/xXqbCbIT3MoVnG7zXOVJ+I7yXKVMb4b1M9doI72WK2kZ4N7yn8l6mBG6Et375kff1cP37tdfz5QPvH4X9Wefvv9b5vzuOm3qZivtxbU/T8usfhR+4B5/hfDg//dP5+PjVPw3+jP0g8PzEp3bsZNVNb10kSIV4jSDvmvYiQarwiwTJDSwSJOmwSJBNkGsESZMsEiT/skiQzM4iQTI7iwTJ7KwR5IPZWSRIZmeRIJmdRYJkdhYJsglyjSCZnUWCZHYWCZLZWSRIZmeRIJmdJYJ8HJidRYJkdhYJktlZJEhmZ5EgmyDXCJLZWSRIZmeRIJmdRYJkdhYJktlZI8gjs7NIkMzOIkEyO4sEyewsEmQT5BpBMjuLBMnsLBIks7NIkMzOIkEyO2sEeWJ2FgmS2VkkSGZnkSCZnUWCbIJcI0hmZ5EgmZ1FgmR2vi/I9ydbP05kTd1s+Jey2ZwplbrZsCTfl837MzcfZ+KjbjZcRt1smmzKZsM41M2GRKi7p/ECdbPhBepmwwuUzabxAmV3gcYL1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabCy9QNxteoG42vEDdbHiButk02VR9RnDhBepmwwvUzYYXqJsNL1B3F+AFymZz5QXqZsML1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabGy9QNxteoG42vEDZZwQ3XqBuNk02ZbPhBepmwwvU3QV4gbrZ8AJ1s+EFymZz5wXqZsML1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabBy9Q9hnBgxeomw0vUDcbXqBuNk02ZXcBXqBuNrxA3Wx4gbrZ8AJ1s+EFimbTDgdeoG42vEDdbHiButnwAnWzabIpmw0vUDcbXqBuNrxA3Wx4gaLPCH5kwwuUzebIC9TNhheomw0vUHYXOPICdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfECdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAmWfEZx4gbrZ8AJ1s+EFymZz5gXK7gJnXqBuNrxA3Wx4gbrZNNmUzYYXqJsNL1A3G16gbja8QN1seIGy2TReoG42vEDdbHiButnwAnWzabKp+oyg8QJ1s+EF6mbDC9TNhheouwvwAmWzufACdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzZUXqJsNL1A3G16g7DOCKy9QN5smm7LZ8AJ1s+EF6u4CvEDdbHiButnwAmWzufECdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzZ0XKPuM4M4L1M2GF6ibDS9QN5smm7K7AC9QNxteoG42vEDdbHiButnwAmWzefACdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsMLlH1G8OAFqmZzPPACdbPhBepmwwtU3QWOB16gbjZNNmWz4QXqZsML1M2GF6ibDS9QNxteoGw2R16gbja8QN1seIG62fACdbNpsimbDS9QNxteoOwzgiMvUDcbXqBuNrxA2WxOvEDZXeDEC9TNhheomw0vUDebJpuy2fACdbPhBepmwwvUzYYXqJsNL1A2mzMvUDcbXqBuNrxA3Wx4gbrZNNlUfUZw5gXqZsML1M2GF6ibDS9QdxfgBcpm03iButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sIL1M2GF6ibDS9Q9hnBhReom02TTdlseIG62fACdXcBXqBuNrxA3Wx4gbLZXHmButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sYLlH1GcOMF6mbDC9TNhheom02TTdldgBeomw0vUDcbXqBuNrxA3Wx4gbLZ3HmButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EFyj4juPMCZbN58AJ1s+EF6mbDC5TdBR68QN1smmzKZsML1M2GF6ibDS9QNxteoG42vEDVbE4HXqBuNrxA3Wx4gbrZ8AJ1s2myKZsNL1A3G16g6jOC04EXqJsNL1A3G16gbDZHXqDsLnDkBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzYkXqJsNL1A3G16gbja8QN1smmyqPiM48QJ1s+EF6mbDC9TNhheouwvwAmWzOfMCdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibTeMF6mbDC9TNhhco+4yg8QJ1s2myKZsNL1A3G16g7i7AC9TNhheomw0vUDabCy9QNxteoG42vEDdbHiButk02ZTNhheomw0vUDcbXqBuNrxA3Wx4gbLZXHmBss8IrrxA3Wx4gbrZ8AJ1s2myKbsL8AJ1s+EF6mbDC9TNhheomw0vUDabGy9QNxteoG42vEDdbHiButk02ZTNhheomw0vUDcbXqBuNrxA2WcEN16gbDZ3XqBuNrxA3Wx4gbK7wJ0XqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzYMXqJsNL1A3G16gbja8QN1smmzKZsML1M2GFyj7jODBC9TNhheomw0vUDWb84EXqLoLnA+8QN1seIG62fACdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfICdbPhBepmwwvUzYYXqJtNk03VZwRHXqBuNrxA3Wx4gbrZ8AJ1dwFeoGw2J16gbja8QN1seIG62fACdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfMCdbPhBepmwwuUfUZw5gXqZtNkUzYbXqBuNrxA3V2AF6ibDS9QNxteoGw2jReomw0vUDcbXqBuNrxA3WyabMpmwwvUzYYXqJsNL1A3G16gbja8QNlsLrxA2WcEF16gbja8QN1seIG62TTZlN0FeIG62fACdbPhBepmwwvUzYYXKJvNlReomw0vUDcbXqBuNrxA3WyabMpmwwvUzYYXqJsNL1A3G16g7DOCKy9QNpsbL1A3G16gbja8QNld4MYL1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5s4L1M2GF6ibDS9QNxteoG42TTZls+EF6mbDC5R9RnDnBepmwwvUzYYXKJvNgxcouws8eIG62fACdbPhBepm02RTNhteoG42vEDdbHiButnwAnWz4QWqZtMOvEDdbHiButnwAnWz4QXqZtNkU/QZQTvwAnWz4QXqZsML1M2GF6i7C/ACZbM58gJ1s+EF6mbDC9TNhheom02TTdlseIG62fACdbPhBepmwwvUzYYXKJvNiReomw0vUDcbXqDsM4ITL1A3myabstnwAnWz4QXq7gK8QN1seIG62fACZbM58wJ1s+EF6mbDC9TNhheom02TTdlseIG62fACdbPhBepmwwvUzYYXKJtN4wXKPiNovEDdbHiButnwAnXvN002ZbPhBepmwwvUzYYXqJsNL1A3G16g7A594QXqZsML1M2GFyh7v7nwAnWzabIpmw0vUDcbXqBuNrxA3Wx4gbo7NC9QNpsrL1A3G16gbja8QNld4MoL1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sYL1M2GF6ibDS9QNxte4PuyuZ/uz2zu50OfTZNNZjbHdn76y+OPh8of0rmeT8evH93ar+mMOF+fUf5A/vNHny6ji8/Hx/Pi8+ny68V/5s457DN3PmOfuXMl+8ydh1kz99aepM/tcu9z53h2mfudP1o099tXKu1xen/x6XH/+smHw+HDxe3yRHdqt/v7iy+HL8znY1cm7wSZ4fu24WMADd9vDt/j+ZNPl9MhNHwUp+H7tuFrhs/w/dbw3c5PHKfb7fLh4kN7/oKnw7WFJpV1NqnbmFSe3KT+lZN6e2rb04+AQpPK7JvUbUyqZxEm9Xw4ta9JPX/4yafz/WtS2+H868V/TpSnHCbq9yYqTzg+PGoxfN82fB61GL5vGz6PWgzfbw5fmu1+eNRi+L5t+JrhM3y/NXzXr4E6XX+dqL9X2IdHIiYqd6I8ujBRuRPlEYOJyp0ojwJM1O9N1O88tDrevwI/Po79c4OH5wbG79vG73Lw5MD4/XXjl/fXoC4HjxlM6jYm1TMJk7qNSfUAw6T+lZOa9Rf2LodmUk3qJibVUxSTej5+vYfufDxHO7qnKCYqd6I8RTFRvzVRmaXDAxfD923D53GL4fuu4Tt62GL4fnP40nrp0fMTw/dtw+eRyJrDd7mcnxdfrh/+Jc/v/cvw9//e9nL06MJEfdML/i7HZvgM33cNnwcMhu/bhs+zCMP3TW+XvBw9tjB83zZ8HlsYvt8bvvf/8uhy9CzCRKVO1MkDBhOVO1GeGpio3InyKMBE/XUvif30V99OnhsYv28cv2b8jN8Gjh24nDxmMKnbmFTPJEzqNibVAwyTuoUDMi4nTztM6jYm1VMUk/pNr5+/nD1wMXzfNnyezRi+b3r9/OXsMY7h+7bh8xDH8G3iDWvnZlJN6iYm1fMek7qJN6ydPe8xqduYVM97TGrqm9vOnsuYqNyJ8vzERH3XG7Ga5yeG79uGz/MTw/dtw+f5ieH7rtexNc9PDN+3DV8zfKnDd//Cfbyfjv8wfH8CZ/YnAyeoJwPnWScDpyH/OuDHNgDO0s0FfmGmJgNnYyYDZyAmA9e6524plwb4XOCa5mTgmuZk4JrmZOCa5mTgmuZc4FdNczJwTXMycE1zMnBNczLwBvisB+p/Atc0JwPXNCcD1zQnA9c0JwPXND8Cv7Xnh74fDx+AXw/Pv6J1Pf18/HA+Hv/EfdMzp+LWMqfi1jGn4tYwp+JucM/ErV1Oxa1bTsWtWU7FrVdOxa1VzsR91yqn4tYqp+LWKqfi1iqn4m5wz8StVU7FrVVOxa1VTsWtVU7FrVXOxP3QKqfi1iqn4tYqp+LWKqfibnDPxK1VTsWtVU7FrVVOxa1VTsWtVU7EfT1olR9x3x/PN0g+Pv4N79P1+XNPv8A4X4Yf4cnicrx9uPRwff4l83Y8Xn+9+M8UldUVUtSBV0hRtV4hxSbFBVIkAlZIkV9YIUXaYoUU2ZAVUiRZFkjxyN2skCJ3s0KK3M0KKXI3K6TYpLhAitzNCilyNyukyN2skCJ3s0KK3M0CKZ64mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFM3ezQorczQopcjcrpMjdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpNi4mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFC3ezQorczQopcjcrpMjdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpHjlblZIkbtZIUXuZoUUuZsVUmxSXCBF7mYLKZ7uzx/bzu30/uLT8fj8vKdja33kRM/uImeFdhc5hbS7yPmmvUV+I6d2FzmTtbvIaa/dRc6R7S7yJvK9Rc6+7S5y9m13kbNvu4ucfdtd5Ozb3iK/s2+7i5x9213k7NvuImffdhd5E/neImffdhc5+7a7yNm33UXOvu0ucvZtb5E/2LfdRc6+7S5y9m13kbNvu4u8iXxvkbNvu4ucfdtd5Ozb7iJn3zYQ+eV0fzK+nE+XPkVCbfsp3g4c2Qop0l4rpMhkrZAiObVCik2KC6RIIa2QIiu0QopEzwopcjcrpMjdLJDikbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUjxxNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKZ+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSLFxNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKF+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSPHK3ayQInezQorczRZSvNy+rr38jew/p8jdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpHjjblZIkbtZIUXuZoUUuZsVUmxSXCBF7maFFLmbFVLkblZIkbtZIUXuZoEU79zNCilyNyukyN2skCJ3s0KKTYoLpMjdrJAid7NCitzNCilyNyukyN0skOKDu1khRe5mhRS5mxVS5G5WSLFJcYEUuZsVUuRuVkiRu1khRe5mhRS5m+2neD9wNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKR+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSPHE3ayQInezQorczQopcjcrpNikuECK3M0KKXI3G0jxemrHv197PR/OfYrczQopcjcrpMjdLJDimbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUmzczQopcjcrpMjdrJAid7NCik2KC6TI3ayQInezQorczQopcjcrpMjdLJDihbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUrxyNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyN1tI8ccVzxQvrfUpcjcrpMjdLJDijbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUrxzNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKD+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G62n+LjwN2skCJ3s0KK3M0KKXI3K6TYpLhAitzNCilyNyukyN2skCJ3s0KK3M0CKR65mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFE3ezQorczQopcjcrpMjdbCHF++35Y68/Huz3KTYpLpAid7NCitzNFlL80SW+UvzldxtefD+fnz/4fr5cP1zcnuHdr+d+Ojgh0/F6Orgm0/F6Ojgs0/FyOs7cmOl4PR2cm+l4PR1cnul4PR0coel4PR3NdJiOl9PBaZqO19PBlZqO19PBlZqO19PBlZqO19PBlZqOl9PRuFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8Xo6mukwHS+ngys1Ha+ngys1Ha+ngys1Ha+ngys1Ha+ngys1HS+n48KVmo7X08GVmo7X08GVmo7X08GVmo7X09FMh+l4OR1cqel4PR1cqel4PR1cqel4PR1cqel4PR1cqel4OR1XrtR0vJ4OrtR0vJ4OrtR0vJ4OrtR0vJ6OZjpMx8vp4EpNx+vp4EpNx+vp4EpNx+vp4EpNx+vp4EpNx8vpuHGlpuP1dHClpuP1dHClpuP1dHClpuP1dDTTYTpeTgdXajpeTwdXajpeTwdXajpeTwdXajpeTwdXajpeTsedKzUdr6eDKzUdr6eDKzUdr6eDKzUdr6ejmQ7T8XI6uFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8XI6Hlyp6Xg9HVyp6Xg9HVyp6Xg9HVyp6Xg9Hc10mI6X08GVmo7X08GVmo7X08GVmo7X08GVmo7X08GVmo4X03E5HLhS0/F6OrhS0/F6OrhS0/F6OrhS0/F6OprpMB0vp4MrNR2vp4MrNR2vp4MrNR2vp4MrNR2vp4MrNR0vp+PIlZqO19PBlZqO19PBlZqO19PBlZqO19PRTIfpeDkdXKnpeD0dXKnpeD0dXKnpeD0dXKnpeD0dXKnpeDkdJ67UdLyeDq7UdLyeDq7UdLyeDq7UdLyejmY6TMfL6eBKTcfr6eBKTcfr6eBKTcfr6eBKTcfr6eBKTcfL6Thzpabj9XRwpabj9XRwpabj9XRwpabj9XQ002E6Xk4HV7redBzPX9NxbX3kBOhykbfL1x/yH/+N9xefHrf78wM/Hj/n43QdXPy3f7Xy/Mg/SsqvF/85THypYUobJnrVMKUNExtrmLKGqZG3hiltmLhew5Q2TNSwYUobJibZMKUNUzNMhilrmHhqw5Q2TAy4YUobJgbcMKUNEwNumNKGiQE3TFnDdGHADVPaMDHghiltmBhww5Q2TAy4YUobpmaYDFPWMDHghiltmBhww5Q2TAy4YUobJgbcMKUNEwNumLKG6cqAG6a0YWLADVPaMDHghiltmBhww5Q2TM0wGaasYWLADVPaMDHghiltmBhww5Q2TAy4YUobJgbcMGUN040BN0xpw8SAG6a0YWLADVPaMDHghiltmJphMkxZw8SAG6a0YWLADVPaMDHghiltmBhww5Q2TAy4YcoapjsDbpjShokBN0xpw8SAG6a0YWLADVPaMDXDZJiyhokBN0xpw8SAG6a0YWLADVPaMDHghiltmBhww5Q1TA8G3DClDRMDbpjShmmnBvx2ef7o2/3yYZja+fBk2M7HxwfgPz7pE/ipDYDv1BJ/H/AG+FzgO7WN3wd8p0bu+4Dv1Fp9H/Cdmp3vA75T+/FdwI+HnRqC7wO+0xb9fcA1zcnANc3JwBvgc4FrmpOBa5qTgWuak4FrmpOBa5pzgR81zcnANc3JwDXNycA1zcnAG+BzgWuak4FrmpOBa5qTgWuak4FrmnOBnzTNycA1zcnANc3JwDXNycAb4HOBa5qTgWuak4FrmpOBa5qTgWuac4GfNc3JwDXNycA1zcnANc3JwBvgc4FrmpOBa5qTgWuak4FrmpOBa5pzgTdNczJwTfMz8Ovl+AR+vd56hspjnKE+GGfYMAwz1No+M7wdnp+63Y4DhopYnKFuFWeoLsUZakBhhhelJnxfvugpcYZ6SpyhnhJn2DAM31P0lDhDPSXOUE+JM9RT4gz1lDDDq54SZ6inxBnqKXGGekqcYcMwzFBPiTPUU+IM9ZQ4Qz0l7L6uekqY4U1PiTPUU+IM9ZTwPeWmp8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMMO7nhJnqKfEGeopcYZ6SpxhwzDMUE+JM9RTwu7rrqfEGeopcYZ6SpjhQ08J31MeekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQow9NBT4kz1FPiDPWUOEM9Jc6wYRh0X6eDnhJnqKfEGeopcYZ6SvyeoqeEGR71lDhDPSXOUE+JM9RT4gwbhmGGekqcoZ4SZ6inxBnqKXGGekqY4UlPiTPUU+IM9ZSw+zrpKXGGDcMwQz0lzlBPid9T9JQ4Qz0lzlBPCTM86ylxhnpKnKGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMEOH18fdl/PoExjqKXGGekqcYcMwfE/RU+IM9ZQ4Qz0lzlBPiTPUU8IMnUefwFBPiTPUU+IM9ZQ4w4ZhmKGeEmeop8QZ6ilxhnpK2H05jz7O0Hn0CQz1lDhDPSV8T3EefQLDhmGYoZ4SZ6inxBnqKXGGekqcoZ4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0l7L6cR5/AUE+JM9RTwgydRx+/pziPPoGhnhJnqKfEGTYMwwz1lDhDPSXOUE+JM9RT4gz1lDBD59EnMNRT4gz1lDhDPSXOsGEYdV/Oo09gqKfEGeopcYZ6SvyeoqdEGZ6dR5/AUE+JM9RT4gz1lDjDhmGYoZ4SZ6inxBnqKXGGekqcoZ4SZug8+gSGekqcoZ4SdV9n59EnMGwYhhnqKXGGekr8nqKnxBnqKXGGekqYofPoExjqKXGGekqcoZ4SZ9gwDDPUU+IM9ZQ4Qz0lzlBPiTPUU8IMnUcfd1/Oo09gqKfEGeopcYYNw/A9RU+JM9RT4gz1lDhDPSXOUE8JM3QefQJDPSXOUE+JM9RT4gwbhmGGekqcoZ4SZ6inxBnqKWH35Tz6OEPn0Scw1FPiDPWU8D3FefQJDBuGYYZ6SpyhnhJnqKfEGeopcYZ6Spih8+gTGOopcYZ6SpyhnhJn2DAMM9RT4gz1lLD7ch59AkM9Jc5QTwkzdB59/J7iPPoEhnpKnKGeEmfYMAwz1FPiDPWUOEM9Jc5QT4kz1FPCDJ1Hn8BQT4kz1FPiDPWUOMOGYdR9OY8+gaGeEmeop8QZ6inxe4qeEmboPPoEhnpKnKGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUKMPmPPoEhnpKnKGeEnVfzXn0CQwbhmGGekqcoZ4Sv6foKXGGekqcoZ4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQwQ+fRx92X8+gTGOopcYZ6SpxhwzB8T9FT4gz1lDhDPSXOUE+JM9RTwgydR5/AUE+JM9RT4gz1lDjDhmGYoZ4SZ6inxBnqKXGGekrYfTmPPs7QefQJDPWUOEM9JXxPcR59AsOGYZihnhJnqKfEGeopcYZ6SpyhnhJm6Dz6BIZ6SpyhnhJnqKfEGTYMwwz1lDhDPSXsvpxHn8BQT4kz1FPCDJ1HH7+nOI8+gaGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMEPn0Scw1FPiDPWUOEM9Jc6wYRh1X86jT2Cop8QZ6ilxhnpK/J6ip4QZOo8+gaGeEmeop8QZ6ilxhg3DMEM9Jc5QT4kz1FPiDPWUOEM9JczQefQJDPWUOEM9Jey+nEefwLBhGGaop8QZ6inxe4qeEmeop8QZ6ilRhhfn0Scw1FPiDPWUOEM9Jc6wYRhmqKfEGeopcYZ6SpyhnhJnqKeEGTqPPuy+Ls6jT2Cop8QZ6ilxhg3D8D1FT4kz1FPiDPWUOEM9Jc5QTwkzdB59AkM9Jc5QT4kz1FPiDBuGYYZ6SpyhnhJnqKfEGeopYfflPPo4Q+fRJzDUU+IM9ZTwPcV59AkMG4ZhhnpKnKGeEmeop8QZ6ilxhnpKmKHz6BMY6ilxhnpKnKGeEmfYMAwz1FPiDPWUsPtyHn0CQz0lzlBPCTN0Hn38nuI8+gSGekqcoZ4SZ9gwDDPUU+IM9ZQ4Qz0lzlBPiTPUU8IMnUefwFBPiTPUU+IM9ZQ4w4Zh1H05jz6BoZ4SZ6inxBnqKfF7ip4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQwQ+fRJzDUU+IM9ZSw+3IefQLDhmGYoZ4SZ6inxO8pekqcoZ4SZ6inhBk6jz6BoZ4SZ6inxBnqKXGGDcMwQz0lzlBPiTPUU+IM9ZQ4Qz0lyvDqPPqw+7o6jz6BoZ4SZ6inxBk2DMP3FD0lzlBPiTPUU+IM9ZQ4Qz0lzNB59AkM9ZQ4Qz0lzlBPiTNsGIYZ6ilxhnpKnKGeEmeop4Tdl/Po4wydR5/AUE+JM9RTwvcU59EnMGwYhhnqKXGGekqcoZ4SZ6inxBnqKWGGzqNPYKinxBnqKXGGekqcYcMwzFBPiTPUU8Luy3n0CQz1lDhDPSXM0Hn08XuK8+gTGOopcYZ6SpxhwzDMUE+JM9RT4gz1lDhDPSXOUE8JM3QefQJDPSXOUE+JM9RT4gwbhlH35Tz6BIZ6SpyhnhL/PtRT4gz1lDBD59EnMNRT4gz1lDhDPSW82ziPPoGhnhJnqKfEvw/1lDhDPSXOUE8JM3QefQJDPSXOUE8J7zbOo09g2DAMM9RT4gz1lPg9RU+JM9RT4gz1lDBD59EnMNRT4gz1lDhDPSXOsGEYZqinxBnqKXGGespnhvfT/cnwfj70DPfaUx7PD30/H/+B4Z9Y1qkex8NTmByPl/sHLOfr19Xna/t09aU9iV/uvwA/3kc/+daOP3n88oe5/Ul8oQPpqxC/X58Xn+8j4uvUmq0QX6cEbYX4OpVpK8Qb4pOJr1PHtkJ8nfK2FeLrVL2tEF+nGG6FuM75LxC/Hq5/v/h6vnwgfr8+r73ffy35f7qP20HlTAb+uLa/X/v49Y/DD+ADM3U+nJ9m6nx8/GqmBn/OfjB4/kE7teM/a6zbQZddJkoleZkote9lomyiXCVKvmCZKImIZaJkOJaJkjpZJkpOZpUoj2zPMlGyPctEyfYsEyXbs0yUTZSrRMn2LBMl27NMlGzPMlGyPctEyfasEuWJ7VkmSrZnmSjZnmWiZHuWibKJcpUo2Z5lomR7lomS7VkmSrZnmSjZnlWiPLM9y0TJ9iwTJduzTJRszzJRNlGuEiXbs0yUbM8yUbI9y0TJ9iwTJduzSpSN7VkmSrZnmSjZnmWiZHuWibKJcpUo2Z5lomR7lomS7VkmSrZnmSjZnlWivLA93xnl+/O2bxcCp3I6nEzldGiWyuk06XxjOu/P/rxdyJDK6fAbldOhLCqnw0JUTodYKLyzXbmCyulwBZXT4Qoqp8MVFN4Krk06hdPhCiqnwxVUTocrqJwOV1A5Ha6gcDo3rqByOlxB5XS4gsrpcAWV02nSKZwOV1A5Ha6gcjpcQeEnCDeuoHI6XEHhdO5cQeV0uILCW8GdK6icDldQOZ0mncLpcAWV0+EKKqfDFVROhyuonA5XUDidB1dQOR2uoHI6XEHldLiCyuk06RROhyso/AThwRVUTocrqJwOV1A5Ha6g7lZwP3AFldPhCiqnwxVUTocrqJxOk07hdLiCyulwBZXT4Qoqp8MVVE6HKyiczpErqJwOV1A5Ha6gcjpcQd0nCPdjk07hdLiCyulwBZXT4QoqbwVcQeV0uILC6Zy4gsrpcAWV0+EKKqfDFVROp0mncDpcQeV0uILK6XAFldPhCiqnwxUUTufMFVROhyso/AThzBVUTocrqJxOk07hdLiCylsBV1A5Ha6gcjpcQeV0uILC6TSuoHI6XEHldLiCyulwBZXTadIpnA5XUDkdrqByOlxB5XS4gsrpcAWFnyBcuILK6XAFldPhCiqnwxUU3gouTTqF0+EKKqfDFVROhyuonA5XUDkdrqBwOleuoHI6XEHldLiCyulwBZXTadIpnA5XUDkdrqByOlxB4ScIV66gcjpcQeF0blxB5XS4gsJbwY0rqJwOV1A5nSadwulwBZXT4Qoqp8MVVE6HK6icDldQOJ07V1A5Ha6gcjpcQeV0uILK6TTpFE6HKyj8BOHOFVROhyuonA5XUDkdrqDwVvDgCiqnwxVUTocrqJwOV1A5nSadwulwBZXT4Qoqp8MVVE6HK6icDldQN53HgSuonA5XUDkdrqByOlxB3ScIj0OTTuF0uILK6XAFldPhCipvBVxB5XS4gsLpHLmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58QVVE6HKyj8BOHEFVROhyuonE6TTuF0uILKWwFXUDkdrqByOlxB5XS4gsLpnLmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRR+gtC4gsrpcAWV0+EKKqfDFRTeClqTTuF0uILK6XAFldPhCiqnwxVUTocrKJzOhSuonA5XUDkdrqByOlxB5XSadAqnwxVUTocrqJwOV1D4CcKFK6icDldQOJ0rV1A5Ha6g8FZw5Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58YVVE6HK6icDldQOR2uoHI6TTqF0+EKCj9BuHEFldPhCiqnwxVUTocrKLwV3LmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58EVVE6HK6icDldQOR2uoPAThEeTTuF0uILK6XAFldPhCipvBVxB5XS4grLpXA8HrqByOlxB5XS4gsrpcAWV02nSKZwOV1A5Ha6gcjpcQeV0uILK6XAFhdM5cgWV0+EKyj5B+PERuYLK6XAFldNp0imcDldQeSvgCiqnwxVUTocrqJwOV1A4nRNXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILCTxDOXEHldLiCyulwBZXT4QoKbwXnJp3C6XAFldPhCiqnwxVUTocrqJwOV1A4ncYVVE6HK6icDldQOR2uoHI6TTqF0+EKKqfDFVROhyso/AShcQWV0+EKCqdz4Qoqp8MVFN4KLlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILC6Vy5gsrpcAWV0+EKKqfDFVROp0mncDpcQeEnCFeuoHI6XEHldLiCyulwBYW3ghtXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILC6dy5gsrpcAWV0+EKKqfDFRR+gnBv0imcDldQOR2uoHI6XEHlrYArqJwOV1A4nQdXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uIK66RwPXEHldLiCuk8QjgeuoHI6XEHldJp0CqfDFVTeCriCyulwBZXT4Qoqp8MVFE7nyBVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoPAThBNXUDkdrqByOlxB5XS4gsJbwalJp3A6XEHldLiCyulwBZXT4Qoqp8MVFE7nzBVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HKyj8BOHMFVROhysonE7jCiqnwxUU3goaV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6F66gcjpcQeV0uILK6XAFldNp0imcDldQ+AnChSuonA5XUDkdrqByOlxB4a3gyhVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6N66gcjpcQeV0uILK6XAFhZ8g3Jp0CqfDFVROhyuonA5XUHkr4Aoqp8MVFE7nzhVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6D66gcjpcQeEnCA+uoHI6XEHldJp0CqfDFVTeCriCyulwBZXT4Qoqp8MV1E3ndOAKKqfDFVROhyuonA5XUDmdJp3C6XAFldPhCiqnwxVUTocrqJwOV1D3CcLpyBVUTocrqJwOV1A5Ha6g8FZwbNIpnA5XUDkdrqByOlxB5XS4gsrpcAWF0zlxBZXT4Qoqp8MVVE6HK6icTpNO4XS4gsrpcAWV0+EKCj9BOHEFldPhCgqnc+YKKqfDFRTeCs5cQeV0uILK6TTpFE6HK6icDldQOR2uoHI6XEHldLiCwuk0rqByOlxB5XS4gsrpcAWV02nSKZwOV1D4CULjCiqnwxVUTocrqJwOV1B4K7hwBZXT4Qoqp8MVVE6HK6icTpNO4XS4gsrpcAWV0+EKKqfDFVROhysonM6VK6icDldQOR2uoHI6XEHhJwjXJp3C6XAFldPhCirfd7iCyulwBZXT4QoKp3PjCiqnwxVUTocrKLxR37iCyuk06RROhyuofN/hCiqnwxVUTocrqJwOV1A4nTtXUDkdrqDwRn3nCiqnwxVUTqdJp3A6XEHlrYArqJwOV1A5Ha6gcjpcQeF0HlxB5XS4gsrpcAWV0+EKKqfTpFM4Ha6gcjpcwXemcz/dn+ncz4c+Ha4gOZ1jO399jna5fsjnej4dv350a7/mM/rQ1/vXh779/NGny+ji8/HxvPh8uvx68Z/J8xB7TZ7j2Gfy5wN/stfkuZlVk2/tyfrcfuHxlTzvs9fkOaVlk7995dIep/cX/9j0v37y4XD4cHG7XJ4pttv9/cWXw/Pay/n4z9XyfGjGz/h93/ixgsbvt8fv8fzJp8vpEBo/2tP4feP48brG73fH73Z+4jjdbpcPFx/a8xc8Ha4tNKtMtFndyqxy52b1r53V21Pkno6HU2RWj2y/Wd3KrHo+YVb/NqCn9jWr5w8/+XS+f81qO5x/vfjPmfLkw0z97kzlCcijxy/G7xvHrxk/4/d94+fxi/H77fFL899Hj1+M3zeOn8cvxu93x+/6NVKn668z9ayzHpOYqeyZ8jjDTCXP1MljBzOVPVMeD5ip352p33mUdbx/RX58HPtnCSfPEgzgtw6gpwkG8K8cwMS/JHVqZtWsbmRWPacwq1uZVQ81zOpfO6tpf6Hv5AmIWd3KrHqyYlZ/XHH8epPd+XiO9nVPVsxU8kydPVkxU785U4n14+whjPH7xvHzCMb4feP4eQBj/H57/NI66rkZP+P3fePnMcmq43e5nJ8XX64f/s3P7/1b8g//PvfscYaZ+uPbXhB49oTC+H3j+HnoYPy+cfw8nzB+f3zb+ymbRxnG7xvHz6MM4/e74/fh3yg1zyfMVPZMeehgprJnqpkpM5U8Ux4PmKk//sJXzX76q3HNswQD+K0D6GmCAfxjG4cYNI8ezOpWZtVzCrO6kVm9eKhhVv/YxoEbF09AzOpWZtWTFbP6x7e9yv7iIYzx+8bxa8bP+H3bq+wvHu0Yv28cPw92jN8f23g/28UzILO6lVn1DMis/rGN97NdPAMyqxuZ1atnQGb1j9z3vl09qzFT2TPlmYqZ+uPb3qZ19UzF+H3j+DXjZ/y+b/w8UzF+f3zby9yunqkYv28cP49Jssfv/gX8eD8d/2H8/kTO9k9HTlrPRn7jXqcjpyb/SuTHNkDO3E1HzlZNR94gn42clZiOXBOfvrFon9ORa5/TkWufs5Hftc/pyLXP6ci1z+nItc/pyBvks5Frn9ORa5/TkWufEx+9/4lc+5yOXPucjfyhfU5Hrn1OR659/gvIb+35se/Hwwfk18Pzr3VdTz8fUJyPx78D1z0nA2+AzwWud04GrnVOBq5zTgaucU4Grm9OBd4O2uZk4LrmZOCa5mTgmuZk4A3wucA1zcnANc3JwDXNycA1zcnANc25wI+a5mTgmuZk4JrmZOCa5mTgDfC5wDXNycA1zcnANc3JwDXNycA1zbnAT5rmZOCa5mTgmuZk4JrmvwD8/ni+s/Lx8W+In65fx2r+guM8egll+6JxOd4+XHq4Pv+S+g//df314j9zbHJcIke9eI0c1e01ctTi18iRHFgjR85hiRzPVMYaOTIka+RIvKyRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyRY+Nz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc9bIkc9ZI0c+Z40c+Zxt5Hi6P39sO7fT+4tPx+Pz856OrfWhkz/7C/3BFO0wdFpph6FzUDsMnbDaYehN6PsLnQrbYei82Q5DJ9l2GDojt8PQGbndhX45MHI7DJ2R22HojNwOQ2fkdhh6E/r+Qmfkdhg6I7fD0Bm5HYbOyO0wdEZuf6EfGbkdhs7I7TB0Rm6HoTNyOwy9CX1/oTNyOwydkdth6IzcDkNn5HYYOiO3v9BPjNwOQ2fkNhH65XR/Ur6cT5c+R5JtjRx5szVybHJcIkd2a40cCas1cuSg1siRVlojR6ZoiRzP5M8aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyRY+Nz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc7aR448nGs9rL39j+8858jlr5MjnrJEjn7NGjnzOEjk++Jw1cuRz1siRz1kjRz5njRybHJfIkc9ZI0c+Z40c+Zw1cuRz1siRz1khx+uBz1kjRz5njRz5nDVy5HPWyLHJcYkc+Zw1cuRz1siRz1kjRz5njRz5nCVyPPI5a+TI56yRI5+zRo58zho5NjkukSOfs0aOfM4aOfI5a+TI56yRI5+zRI4nPmeNHPmcNXLkc9bIkc9ZI8cmxyVy5HPWyJHPWSNHPmeNHPmcNXLkc5bI8cznrJEjn7NGjnzOGjnyOWvk2OS4RI58zho58jlr5MjnrJEjn7NGjnzOEjk2PmeNHPmcNXLkc9bIkc9ZI8cmxyVy5HPWyJHPWSNHPmeNHPmcNXLkczaR4/XUnp/3ej6cuxwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc9bIkc9ZI0c+Z40c+Zw1cuRzlsjxwedsI8cfVzxzvLTW58jnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NCjrcDn7NGjnzOGjnyOWvkyOeskWOT4xI58jlr5MjnrJEjn7NGjnzOGjnyOUvkeORz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRxPfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45nPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXJsfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs40c77fnj70+Dtc+Rz5njRz5nDVy5HO2kePjdPjK8XJ4f/H9fH7+4Pv5cv1wcXvGd79252bdLjyR+Xg3H/yT+Xg3H7yW+Xg3H3yZ+Xg3H818mI8388HvmY9388Ebmo9388FHmo9388Fzmo9388Gfmo8383HlT83Hu/ngT83Hu/ngT83Hu/ngT83Hu/lo5sN8vJkP/tR8vJsP/tR8vJsP/tR8vJsP/tR8vJsP/tR8vJmPG39qPt7NB39qPt7NB39qPt7NB39qPt7NRzMf5uPNfPCn5uPdfPCn5uPdfPCn5uPdfPCn5uPdfPCn5uPNfNz5U/Pxbj74U/Pxbj74U/Pxbj74U/Pxbj6a+TAfb+aDPzUf7+aDPzUf7+aDPzUf7+aDPzUf7+aDPzUfb+bjwZ+aj3fzwZ+aj3fzwZ+aj3fzwZ+aj3fz0cyH+XgzH/yp+Xg3H/yp+Xg3H/yp+Xg3H/yp+Xg3H/yp+Xg9H/cDf2o+3s0Hf2o+3s0Hf2o+3s0Hf2o+3s1HMx/m48188Kfm49188Kfm49188Kfm49188Kfm49188Kfm4818HPlT8/FuPvhT8/FuPvhT8/FuPvhT8/FuPpr5MB9v5oM/NR/v5oM/NR/v5oM/NR/v5oM/NR/v5oM/NR9v5uPEn5qPd/PBn5qPd/PBn5qPd/PBn5qPd/PRzIf5eDMf/Kn5eDcf/Kn5eDcf/Kn5eDcf/Kn5eDcf/Kn5eDMfZ/7UfLybD/7UfLybD/7UfLybD/7UfLybj2Y+zMeb+eBPzce7+eBPzce7+eBPzce7+eBPzce7+eBPzceb+Wj8qfl4Nx/8qfl4Nx/8qfl4Nx/8qfl4Nx/NfJiPN/PBn5qPd/PBn5qPd/PBn5qPd/PBn5qPd/PBn5qPN/Nx4U/Nx7v54E/Nx7v54E/Nx7v54E/Nx7v5aObDfLyZD/7UfLybD/7UfLybD/7UfLybD/50xfk4nr/m49r60EnRBUNvl68/6D/+G+8vPj1u9+cHfjx+TsjpOrj4cvgap8vhfPz14n8bpyuHapwSx4lyNU6J48TQGqfEcSJ0jVPiODXjZJzyxokuNk6J48QuG6fEcSKjjVPiOHHXxilxnFhx45Q3TjdW3DgljhMrbpwSx4kVN06J48SKG6fEcWrGyTjljRMrbpwSx4kVN06J48SKG6fEcWLFjVPiOLHixilvnO6suHFKHCdW3DgljhMrbpwSx4kVN06J49SMk3HKGydW3DgljhMrbpwSx4kVN06J48SKG6fEcWLFjVPeOD1YceOUOE6suHFKHCdW3DgljhMrbpwSx6kZJ+OUN06suHFKHCdW3DgljhMrbpwSx4kVN06J48SKG6e0cXocWHHjlDhOrLhxShwnVtw4JY4TK26cEsepGSfjlDdOrLhxShwnVtw4JY4TK26cEseJFTdOiePEihunvHE6suLGKXGcWHHjlDhOrLhxShwnVtw4JY5TM07GKW+c9mrF74evT/2D/j9c/SeYdfzu6XL9uvrWPoA5Xe6P5ye5/vIbvrj6fH/+7FM7/Pwkp8vfKa6jNf9Kiu3y9RXUfvklT5fhn+jntZfRn+d1xN9fCvzx/B1Pl9MhBHwdNfZXAr9+QTxdf6X49++J0zpG6K+keDt/fdvebpf3Y3u8f/2Sxx8lpEe+jjXZDPJ1zEIV5KdDe259p8O1Rb7JT+sU9RXTadJJT+f29aOPh1MonXVq5IrpLNRlDz/TeXzi3X72qtZu109Xnw9PVdLOx8evFAfAf3zWJ/FTGyBfqPhuBflC1XcryBcqvxtBfl6oKW8F+UJNeSvIF2rKW0G+UP3dCvIG+WzkCxXVrSDXPqcj1z6nI9c+pyPXPmcjb9rndOTa53Tk2ud05NrndOQN8tnItc/pyLXP6ci1z+nItc/pyLXP2cgv2ud05NrndOTa53Tk2ud05A3y2ci1z+nItc/pyLXP6ci1z+nItc/ZyK/a53Tk2ud05NrndOTa53TkDfLZyLXP6ci1z+nItc/pyLXP6ci1z9nIb9rndOTa53Tk2ud05NrndOQN8tnItc9/Bfn18nxfV7tebz1FhTKDoo6YQVHty6Coyf0rFG+H5+dut2NP8a6cZVDUtzIoqlAZFLWiDIoNxfg9+q67ZFDUXTIo6i4ZFHWXjLuL7pJA8aG7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd8mgqLuEKd4OB90lg6LukkFRdwmbsR8UdZcMig3FBIq6SwZF3SXj7qK7ZFDUXTIo6i4JFI+6SwZF3SWDou6SQVF3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWT7pJgxk66SwZF3SWDou6SQbGhmHB30V0yKOouGRR1lwyKuksGRd0lgeJZd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SYMbOuksCxaa7ZFDUXTIo6i4Jd5emu2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiRXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKukuCGbvoLhkUdZcMirpLAsWr7pJwd7nqLhkUdZcMirpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKN50lwyKuksGRd0lg6LukkGxoRg3YzfdJYOi7pJBUXfJoKi7ZNxddJcEinfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJDd8mgqLtkUNRdEszYQ3fJoNhQTKCou2RQ1F0y7i66SwZF3SWDou4Sp3g86C4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUj7pL3Iwdj7pLBkXdJYOi7pJBsaGYcHfRXTIo6i4ZFHWXDIq6SwZF3SWB4kl3yaCou2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJgxk66SwLFs+6SQVF3yaCouyTcXc66SwbFhmICRd0lg6LukkFRd8mgqLtkUNRdEig23SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglmrOkuGRR1lwyKuksCxYvuknB3ueguGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIoXnWXDIq6SwZF3SWDou6SQbGhGDdjV90lg6LukkFRd8mgqLtk3F10lwSKN90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6SwZF3SWB4l13yaCou2RQ1F0SzNhdd8mg2FBMoKi7ZFDUXTLuLrpLBkXdJYOi7pJA8aG7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd8mgqLvEKZ4OukvcjJ0OuksGRd0lg6LukkGxoZhwd9FdMijqLhkUdZcMirpLBkXdJYHiUXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukmDGjrpLAsWT7pJBUXfJoKi7JNxdTrpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKJ51lwyKuksGRd0lg6LukkGxoZhAUXfJoKi7JJixs+6SQVF3yaCouyRQbLpLwt2l6S4ZFHWXDIq6SwbFhmICRd0lg6LukkFRd8mgqLtkUNRdEihedJcMirpLBkXdJYOi7pJBsaEYN2MX3SWDou6SQVF3yaCou2TcXXSXBIpX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiTXfJoKi7ZFDUXRLM2E13yaDYUEygqLtkUNRdMu4uuksGRd0lg6LukkDxrrtkUNRdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQfOguCWbsobtkUNRdMijqLhkUG4oJdxfdJYOi7pJBUXfJoKi7ZFDUXeIUzwfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukvcjJ0PuksCxaPukkFRd8mgqLsk3F2OuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIonnSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLskmLGT7pJBUXfJoKi7JFA86y4Jd5ez7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgWLTXTIo6i4ZFHWXDIq6SwbFhmLcjDXdJYOi7pJBUXfJoKi7ZNxddJcEihfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJVd8mgqLtkUNRdEszYVXfJoNhQTKCou2RQ1F0y7i66SwZF3SWDou6SQPGmu2RQ1F0yKOouGRR1lwyKDcUEirpLBkXdJYOi7pJBUXfJoKi7JFC86y4JZuyuu2RQ1F0yKOouGRQbigl3F90lg6LukkFRd8mgqLtkUNRdEig+dJcMirpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouCWbsobvEKbaD7pJBUXfJoKi7xO8u7aC7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJRd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6S4IZO+ouGRR1lwyKuksCxZPuknB3OekuGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIonnWXDIq6SwZF3SWDou6SQbGhGDdjZ90lg6LukkFRd8mgqLtk3F10lwSKTXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNFdMijqLhkUdZcEM3bRXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQvOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFG+6S4IZu+kuGRR1lwyKuksGxYZiwt1Fd8mgqLtkUNRdMijqLhkUdZcEinfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukuCGbvrLgkUH7pLBkXdJeF78aG7ZFDUXTIoNhQTKOouGRR1lwyKukvGpqO7ZFDUXeIULwfdJf69eDnoLhkUdZcMirpLBsWGYgJF3SWDou6SsenoLhkUdZcMirpLAsWj7pJwdznqLhkUdZcMirpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKJ50lwyKusu/QvF+uj+vvp8PPcW9dpcfv/mTy6WdP119PpyfV5+Pj18p9hf/+MnPiy+nduyR77XofCPyBvls5HutUN+IfK996xuR77WcfSPyvTa5b0S+19r3fcjPe+2I34h8r4XyG5Frn9ORa5/TkTfIZyPXPqcj1z6nI9c+pyPXPqcj1z5nI2/a53Tk2ud05NrndOTa53TkDfLZyLXP6ci1z+nItc/pyLXP6ci1z9nIL9rndOTa53Tk2ud05NrndOQN8tnItc/pyLXP6ci1z+nItc/pyLXP2civ2ud05NrndOTa53Tk2ud05A3y2ci1z+nItc/pyLXP6ci1z+nItc/ZyG/a53Tk2ue/gvzDC3lvCmUGRR0xg2JDMYGiJvevUPzwmrqbcpZBUd/KoKhCZVDUihIo3hWdhHv0XXfJoKi7ZFDUXTIoNhQT7i66SwZF3SWDou6SQVF3yaCouyRQfOguGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXRLM2EN3iVO8HnSXDIq6SwZF3SV+d7kedJcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQPOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXdJMGNH3SWDou6SQVF3SaB40l0S7i4n3SWDou6SQVF3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWz7pJBUXfJoKi7ZFDUXTIoNhTjZuysu2RQ1F0yKOouGRR1l4y7i+6SQLHpLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRQvuksGRd0lg6LukmDGLrpLBsWGYgJF3SWDou6ScXfRXTIo6i4ZFHWXBIpX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiTXdJMGM33SWDou6SQVF3yaDYUEy4u+guGRR1lwyKuksGRd0lg6LukkDxrrtkUNRdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3STBjd90lgeJDd8mgqLtkUNRdEu4uD90lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i5xireD7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1l7gZux10lwyKuksGRd0lgeJRd0m4uxx1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFE+6SwZF3SWDou6SQVF3yaDYUIybsZPukkFRd8mgqLtkUNRdMu4uuksCxbPukkFRd8mgqLtkUNRdMig2FBMo6i4ZFHWXDIq6SwZF3SWDou6SQLHpLhkUdZcMirpLghlruksGxYZiAkXdJYOi7pJxd9FdMijqLhkUdZcEihfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJVd0kwY1fdJYOi7pJBUXfJoNhQTLi76C4ZFHWXDIq6SwZF3SWDou6SQPGmu2RQ1F0yKOouGRR1lwyKDcUEirpLBkXdJYOi7pJBUXdJMGM33SWB4l13yaCou2RQ1F0S7i533SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUH7pLBkXdJYOi7pJBUXfJoNhQTKCou2RQ1F0SzNhDd8mgqLtkUNRd4hTvB90lfnf5gQjFBIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUj7pLBkXdJYOi7pJBUXfJoNhQjJuxo+6SQVF3yaCou2RQ1F0y7i66SwLFk+6SQVF3yaCou2RQ1F0yKDYUEyjqLhkUdZcMirpLBkXdJYOi7pJA8ay7ZFDUXTIo6i4JZuysu2RQbCgmUNRdMijqLhl3F90lg6LukkFRd0mg2HSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEihfdJcGMXXSXDIq6SwZF3SWDYkMx4e6iu2RQ1F0yKOouGRR1lwyKuksCxavukkFRd8mgqLtkUNRdMig2FBMo6i4ZFHWXDIq6SwZF3SXBjF11lwSKN90lg6LukkFRd0m4u9x0lwyKDcUEirpLBkXdJYOi7pJBUXfJoKi7JFC86y4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd0kwY3fdJYOi7pJBUXdJoPjQXRLuLg/dJYOi7pJBUXfJoNhQTKCou2RQ1F0yKOouGRR1lwyKukuc4uOgu2RQ1F0yKOouGRR1lwyKDcWwGXscdJcMirpLBkXdJYOi7pJxd9FdEigedZcMirpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKJ90lg6LukkFRd0kwYyfdJYNiQzGBou6SQVF3ybi76C4ZFHWXDIq6SwLFs+6SQVF3yaCou2RQ1F0yKDYUEyjqLhkUdZcMirpLBkXdJYOi7pJAsekuCWas6S4ZFHWXDIq6SwbFhmLC3UV3yaCou2RQ1F0yKOouGRR1lwSKF90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6S4IZu+guCRSvuksGRd0lg6LuknB3ueouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjTXTIo6i4ZFHWXDIq6SwbFhmICRd0lg6LukmDGbrpLBkXdJYOi7pJA8a67JNxd7rpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKD90lg6LukkFRd8mgqLtkUGwoxs3YQ3fJoKi7ZFDUXTIo6i4ZdxfdJUzxfjjoLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRSPuksGRd0lg6LuEjZjPwjpLhkUG4oJFHWXDIq6S8bdRXfJoKi7ZFDUXRIonnSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEimfdJcGMnXWXDIq6SwZF3SWDYkMx4e6iu2RQ1F0yKOouGRR1lwyKuksCxaa7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd0kwY013SaB40V0yKOouGRR1l4S7y0V3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWr7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1lwQzdtVdMijqLhkUdZcEijfdJeHuctNdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQvOsuGRR1lwyKuksGRd0lg2JDMW7G7rpLBkXdJYOi7pLxvai7ZFDUXRIoPnSXDIq6SwZF3SWDou6SsOk8GooJFHWXDIq6S8b3ou6SQVF3yaCou8QpHg+6SwZF3SWDou4S33SOB90lg2JDMYGi7pJBUXfJuLvoLhkUdZcMirpLAsWj7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1lwyKusu/QvF+uj+vvp8PPcXddpf7F8XrsX26+nw4P68+Hx+/Uuwv/pHP8+LLqR175LstOt+G/LTbVvR9yHdbob4P+W771vch3205+z7kDfLZyHdb+74P+W474vch322h/D7k2ud05NrnbORn7XM6cu1zOnLtczpy7XM68gb5bOTa53Tk2ud05NrndOTa53Tk2uds5E37nI5c+5yOXPucjlz7nI68QT4bufY5Hbn2OR259jkdufY5Hbn2ORv5Rfucjlz7nI5c+5yOXPucjrxBPhu59jkdufY5Hbn2OR259jkdufY5G/lV+5yOXPucjlz7nI5c+5yOvEE+G7n2OR259jkdufb5ryD/8ELeq0KZQVFHTKB4U/syKGpy/wrFD6+puylnGRT1rQyKDcUEilpRBkVFJ+MerbtkUNRdMijqLgkU77pLwt3lrrtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SQVF3SaD40F0yKOouGRR1lwyKuksGxYZi3Iw9dJcMirpLBkXdJYOi7pJxd9Fd4hRPB90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6SwZF3SWB4lF3yaCou2RQ1F3iZux01F0yKDYUEyjqLhkUdZeMu4vukkFRd8mgqLskUDzpLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRTPukuCGTvrLhkUdZcMirpLBsWGYsLdRXfJoKi7ZFDUXTIo6i4ZFHWXBIpNd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SYMaa7pJA8aK7ZFDUXTIo6i4Jd5eL7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKV90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4JZuyqu2RQ1F0yKOouCRRvukvC3eWmu2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjXXTIo6i4ZFHWXDIq6SwbFhmLcjN11lwyKuksGRd0lg6LuknF30V0SKD50lwyKuksGRd0lg6LukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXOMXzQXfJoKi7ZFDUXeJm7HzQXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQPOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFE+6S4IZO+kuGRR1lwyKuksGxYZiwt1Fd8mgqLtkUNRdMijqLhkUdZcEimfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukuCGTvrLgkUm+6SQVF3yaCouyTcXZrukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIoX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglm7KK7ZFDUXTIo6i4JFK+6S8Ld5aq7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNNdMijqLhkUdZcMirpLBsWGYtyM3XSXDIq6SwZF3SWDou6ScXfRXRIo3nWXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEig/dJYOi7pJBUXdJMGMP3SWDYkMxgaLukkFRd8m4u+guGRR1lwyKukucYjvoLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRSPukvcjLWj7pJBUXfJoKi7ZFBsKCbcXXSXDIq6SwZF3SWDou6SQVF3SaB40l0yKOouGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7JJixk+6SQPGsu2RQ1F0yKOouCXeXs+6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEik13yaCou2RQ1F0yKOouGRQbigkUdZcMirpLghlruksGRd0lg6LukkDxorsk3F0uuksGRd0lg6LukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIpX3SWDou6SQVF3yaCou2RQbCjGzdhVd8mgqLtkUNRdMijqLhl3F90lgeJNd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SQVF3SaB4110yKOouGRR1lwQzdtddMig2FBMo6i4ZFHWXjLuL7pJBUXfJoKi7JFB86C4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLnGKl4PuEjdjl4PukkFRd8mgqLtkUGwoJtxddJcMirpLBkXdJYOi7pJBUXdJoHjUXTIo6i4ZFHWXDIq6SwbFhmICRd0lg6LukkFRd8mgqLskmLGj7pJA8aS7ZFDUXTIo6i4Jd5eT7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKZ90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4JZuysu2RQ1F0yKOouCRSb7pJwd2m6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEihfdJYOi7pJBUXfJoKi7ZFBsKMbN2EV3yaCou2RQ1F0yKOouGXcX3SWB4lV3yaCou2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjTXTIo6i4ZFHWXBDN2010yKDYUEyjqLhkUdZeMu4vukkFRd8mgqLskULzrLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRQfukuCGXvoLhkUdZcMirpLBsWGYsLdRXfJoKi7ZFDUXTIo6i4ZFHWXOMXrQXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LuEjdj14PukkDxqLtkUNRdMijqLgl3l6PukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIon3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglm7KS7ZFDUXTIo6i4JFM+6S8Ld5ay7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mg2HSXDIq6SwZF3SWDou6SQbGhGDdjTXfJoKi7ZFDUXTIo6i4ZdxfdJYHiRXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNVdMijqLhkUdZcEM3bVXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQvOkuGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFO+6S4IZu+suGRR1lwyKukvG92JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4Jm85Dd8mgqLtkUNRdEr4XH7pLBsWGYgJF3SWDou6SQVF3yaCou2RsOrpLnOLtoLtkUNRdMijqLvG7y+2gu2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiUXfJoKi7ZFDUXTIo6i7/CsX76f68+n4+9BTbTileL+2L4uPy4er79fmj7/dff/IT4l6ry29BfFyfFz/uh3+AOPjJ58P5+ZPPx8evY9tffPnxe/394supHfsZ32sn2kg8ey1bG4lnry1uI/HstR5uI57TXnvnRuLZa6HdSDx7bcobiWevFXwj8TTxVI6HNSgdD2tQOh7WoHQ8rEHpeFiDyvGcWYPS8bAGpeNhDUrHwxqUjqeJp3I8rEHpeFiD0vGwBqXjYQ1Kx8MaVI6nsQal42ENSsfDGpSOhzUoHU8TT+V4WIPS8bAGpeNhDUrHwxqUjoc1qBzPhTUoHQ9rUDoe1qB0PKxB6XiaeCrHwxqUjoc1KB0Pa1A6HtagdDysQeV4rqxB6XhYg9LxsAal42ENSsfTxFM5HtYgO54Ph2FciYDZxHX72cTV9dnENfBs4h9eaX1TqmcT15NnE1d9ZxPXZmcTb4jP3VVuOuds4jrnbOI652ziOufsO6fOOZn4XeecTVznnE1c55xNXOecTbwhPpm4zjmbuM45m7jOOZu4zjmbuM45mfhD55xNXOecTVznnGxrHzrnbOIN8cnEdc7ZxHXO2XdOnXM2cZ1zNnGdcy7x+0HnnE1c55xNXOecTVznnE28IT6ZuM45m7jOOZu4zjmbuM45m7jOOZn4Ueeca2vvR51zNnGdczZxnXM28Yb45DunzjmbuM45m7jOOZu4zjmbuM45mfhJ55xNXOecTVznnE1c55xNvCE+mbjOOZu4zjmbuM45m7jOOdnWnnTOycTPOuds4jrnbOI65+Q751nnnE28IT6ZuM45m7jOOZu4zjmbuM45m7jOOZl40zlnE9c5ZxPXOWcT1zlnE2+ITyauc84mrnNOtrVN55xNXOecTVznnEz8onNOvnNedM7ZxHXO2cR1ztnEG+KTieucs4nrnLOJ65yzieucs4nrnJOJX3XO2cR1ztnEdc7ZxHXO2cQb4nNt7VXnnE1c55xNXOecTVznnH3n1DknE7/pnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOWcT1zlnE9c5ZxPXOScTv+ucs4nrnLOJ65yTbe1d55xNvCE+mbjOOZu4zjn7zqlzziauc84mrnNOJv7QOWcT1zlnE9c5ZxPXOWcTb4hPJq5zziauc84mrnPOJq5zziauc84l/jjonHNt7eOgc84mrnPOJq5zzibeEJ9859Q5ZxPXOWcT1zlnE9c5ZxPXOScTP+qcs4nrnLOJ65yzieucs4k3xCcT1zlnE9c5ZxPXOWcT1zkn29qjzjmZ+EnnnE1c55xNXOecfOc86ZyziTfEJxPXOWcT1zlnE9c5ZxPXOWcT1zknEz/rnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOSfb2rPOOZu4zjmbuM45mXjTOSffOZvOOZu4zjmbuM45m3hDfDJxnXM2cZ1zNnGdczZxnXM2cZ1zMvGLzjmbuM45m7jOOZu4zjmbeEN8rq296Jyzieucs4nrnLOJ65yz75w652TiV51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnbOI652ziOuds4jrnZOI3nXM2cZ1zNnGdc7Ktvemcs4k3xCcT1zlnE9c5Z985dc7ZxHXO2cR1zsnE7zrnbOI652ziOuds4jrnbOIN8cnEdc7ZxHXO2cR1ztnEdc7ZxHXOycQfOudkW/vQOWcT1zlnE9c5ZxNviE++c+qcs4nrnLOJ65yzieucs4nrnFOJPw4HnXM2cZ1zNnGdczZxnXM28Yb4ZOI652ziOuds4jrnbOI651Rb+4O4zjmZ+FHnnE1c55xNXOecfOc86pyziTfEJxPXOWcT1zlnE9c5ZxPXOWcT1zknEz/pnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOSfb2pPOOZu4zjmbuM45mfhZ55x85zzrnLOJ65yzieucs4k3xCcT1zlnE9c5ZxPXOWcT1zlnE9c5JxNvOuds4jrnbOI652ziOuds4g3xuba26Zyzieucs4nrnLOJ65yz75w652TiF51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnbOI652ziOuds4jrnZOJXnXM2cZ1zNnGdc7Ktveqcs4k3xCcT1zlnE9c5Z985dc7ZxHXO2cR1zsnEbzrnbOI652ziOuds4jrnbOIN8cnEdc7ZxHXO2cR1ztnEdc7ZxHXOycTvOudkW3vXOWcT1zlnE9c5ZxNviE++c+qcs4nrnLOJ65yzieucs4nrnJOJP3TO2cR1ztnEdc7ZxHXO2cQb4pOJ65yzieucs4nrnLOJ65yTbe1D55xL/HjQOWcT1zlnE9c55945jwedczbxhvhk4jrnbOI652ziOuds4jrnbOI652TiR51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnZFt71DlnE9c5ZxPXOScTP+mck++cJ51zNnGdczZxnXM28Yb4ZOI652ziOuds4jrnbOI652ziOudk4medczZxnXM2cZ1zNnGdczbxhvj/19657TayZVf2X85zPcRl7bh8TKFRNhqNAgpVDbu6AcOof7cyT5LSSZFiMmJyaoox/GD4wNyh4BhbihhLTIV3WjvSnG7iNKebOM3pJk5zuq+cNKeZeNGcbuI0p5s4zekmTnO6iRfEzcRpTjdxmtNNnOZ0E6c53cRpTjPxRnO6idOcbuI0p3la22hON/GCuJk4zekmTnO6r5w0p5s4zekmTnOaiU80p5s4zekmTnO6idOcbuIFcTNxmtNNnOZ0E6c53cRpTjdxmtNMfKY5zdPameZ0E6c53cRpTjfxgrj5yklzuonTnG7iNKebOM3pJk5zmokvNKebOM3pJk5zuonTnG7iBXEzcZrTTZzmdBOnOd3EaU7ztHahOc3EV5rTTZzmdBOnOc1XzpXmdBMviJuJ05xu4jSnmzjN6SZOc7qJ05xe4kNHc7qJ05xu4jSnmzjN6SZeEDcTpzndxGlO77R26GhON3Ga002c5jQT72lO85WzpzndxGlON3Ga0028IG4mTnO6idOcbuI0p5s4zekmTnOaiQ80p5s4zekmTnO6idOcbuIFce+0dqA53cRpTjdxmtNNnOZ0XzlpTjPxkeZ0E6c53cRpTjdxmtNNvCBuJk5zuonTnG7iNKebOM3pJk5zmokXzekmTnO6idOc5mlt0Zxu4gVxM3Ga002c5nRfOWlON3Ga002c5jQTbzSnmzjN6SZOc7qJ05xu4gVxM3Ga002c5nQTpzndxGlON3Ga00x8ojnN09qJ5nQTpzndxGlON/GCuPnKSXO6idOcbuI0p5s4zekmTnOaic80p5s4zekmTnO6idOcbuIFcTNxmtNNnOZ0E6c53cRpTvO0dqY5zcQXmtNNnOY0/xxfaE43cZrTTbwgbiZOc7qJ05xu4jSn++6Q5nQTpznNxFea0/xzfKU53cRpTjdxmtNNvCBuJk5zuonTnO67Q5rTTZzmdBOnOb3Ex47m9F45x47mdBOnOd3EaU438YK4mTjN6SZOc7qJ05xu4jSnmzjNaSbe05xu4jSnmvgyLKcjL2P3njjN+QvE+xpP06m+2nSD+TQOp1dPY9Vb5pfoTSdBLyBfDz20Sy8e+/X04nFob1/8u0169plsFjafyCYd/kw2afyvZLPqxG+stry3yfzgmWwym/hSNucz61qHj188rMv5yF3X3XhxtXYyU/Py8Ytbd3ptG/v3mcTwhS2l3VID0yW21PcttZ6OPLSh27WlGJ+xpcRbivkgW+rbi+fxRG+Y53bjxV2d3uAL9Nq1/5hosv8+c/8V+4/9d/f+m0/Dw6Hvhl37j6kx++8z9x9z7mfdf2M31Hn/jTeOPIzLef9VN7598e/7hAk6+0Q8IGOMz5YSbynG+Gwp7ZYaGeOzpbQz15ExPltKvKUY47OlvpmZzttkmN7ukx8ZNzJuZ5/8yj4p9gn75Bf2CeNr9smv7BPGzOyTf975a45+OWvs1/79THpkJs2mkm8qptJsqns3lfADKSMjbPbfJ+6/Yt7N/vvM/cdwnP13//6TfSCqmKSz/z5z/zGhf9r915//OtLYjzs7tYp9wj75hX3ChJ59Ir5FZ5jPlhJvKUb5bCnxlmKQz5YStxmzebaUdks1xu1faUu1Np5e3KYb/67gvn//eePf3zXG4uyTby/W/cuWxqSbLSXeUgyv2VLiLVVsKbbUb8p/LNUYibOlxFuKkThb6tuLb/w7iMacm33yK/uE4TX75Ff2CRNp9skv7JOJMTP75NuLlf9UamImzaaSbyqm0myqezeV8GMjEyNs9t9n7r9i/7H/PnH/MRxn/92//2QfiJqYpLP/PnP/MaF/1v33WX9CeGKYz5YSbynm/myp71tK9hGGmV8RsKXEW4pfELClPnGWMfO7BPbfZ+4/fpfA/vvEWcZc7D/23yfuP36X8LT7T/k3imZm/uyTX9knzObZJ+JbdGbzbCnxlmI2z5bSbqmF2TxbSttmC7N5tpR4SzFu/5UttZwh9svQ/2FL/Y6RqbEEY4FRgZEZngQjI657MfZ1ASMTIAlGph4SjJS+AuNK3UowUnSKK/VKxUgwUjESjAVGBUYqRoKRipFgpGIkGKkYCUYqRoCxOipGgpGKkWCkYnb+eu93jFSMBGOBUYGRipFgpGIkGI9aMWt/OpN6ofCHV/8O5qhdchPMUUvjFpj+qO1wE8xRa+AmmKPe398Ec9Q79ptgCjCXwRz1rvommKPeJ98Ew53vFTDc+V4Bw53vZTADd75XwHDnewUMd75XwHDnewVMAeYyGO58r4DhzvcKGO58r4DhzvcKGO58L4MZufO9AoY73ytguPO9AoY73ytgCjCXwXDnewUMd75XwHDnewXMQe98Wzeejt36ubvx6r4b1vPBX1au59cPfXfp9dWd/jpI/1Jd51ePdfFt9udPg/Zv/tLQy4t/V3TQe/AvpKgOWgNfSdFBu+ReReM4viqq+ZaiZT7/zc/lzblsU3TQQvpKig7aal9JUaGoX4ZbN8ZjdzL0MrJ6cyW69Mfe2su5ng49VP/2xb8jP2iPfibyg5buZyI/aEN/JnLq3I6c2nYjb9SzHTk1bEdO3dqRU6t25AVyN3Lq046c+rQjpz7tyKlPO3Lq0418oj7tyKlPO3Lq046c+rQjL5C7kVOfduTUpx059WlHTn3akVOfbuQz9WlHTn3akVOfduTUpx15gdyNnPq0I6c+7cipTzty6tOOnPp0I1+oTzty6tOOnPq0I6c+7cgL5G7k1KcdOfVpR0592pFTn3bk1Kcb+Up92pFTn3bk1KcdOfX5K8indnpEaE3T/J5iQVFAkUZUUCT7FBQpuV+hOHfnv5k79xcoEmcKivTWfoqtI6EUFKkiBUVCZ/81+uVgUBRQLCgKKNIuCoq0i+LqQrsoKNIuCoq0i4BiT7soKNIuCoq0i4Ii7aKgWFAUUKRdFBRpFwVF2kVBkXZRUKRdBBQH2kUwGRtoFwVF2kVBkXZRUCwoCq4utIuCIu2ioEi7KCjSLgqKtIuA4ki7KCjSLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2EUzGRtpFQLFoFwVF2kVBkXYRXF2KdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuAoqNdlFQpF0UFGkXBUXaRUGxoCigSLsoKNIugslYo10UFGkXBUXaRUBxol0EV5eJdlFQpF0UFGkXBcWCooAi7aKgSLsoKNIuCoq0i4Ii7SKgONMuCoq0i4Ii7aKgSLsoKBYU90/GZtpFQZF2UVCkXRQUaRfF1YV2EVBcaBcFRdpFQZF2UVCkXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJKuygo0i4KirSLYDK20i4KigVFAUXaRUGRdlFcXWgXBUXaRUGRdtlPcepoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu2ioEi7KCjSLgqKtIuAYk+77J+MTT3toqBIuygo0i4KigVFwdWFdlFQpF0UFGkXBUXaRUGRdhFQHGgXBUXaRUGRdlFQpF0UFAuKAoq0i4Ii7aKgSLsoKNIugsnYQLsIKI60i4Ii7aKgSLsIri4j7aKgWFAUUKRdFBRpFwVF2kVBkXZRUKRdBBSLdlFQpF0UFGkXBUXaRUGxoCigSLsoKNIugslY0S4KirSLgiLtIqDYaBfB1aXRLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2UVCkXQQUJ9pFQZF2UVCkXRQUaRcFxYLi/snYRLsoKNIuCoq0i4Ii7aK4utAuAooz7aKgSLsoKNIuCoq0i4JiQVFAkXZRUKRdFBRpFwVF2kVBkXYRUFxoFwVF2kVBkXYRTMYW2kVBsaAooEi7KCjSLoqrC+2ioEi7KCjSLgKKK+2ioEi7KCjSLgqKtIuCYkFRQJF2UVCkXRQUaRcFRdpFQZF22U9x7miX/ZOxuaNdFBRpFwVF2kVBsaAouLrQLgqKtIuCIu2ioEi7KCjSLgKKPe2ioEi7KCjSLgqKtIuCYkFRQJF2UVCkXRQUaRcFRdpFMBnraRcBxYF2UVCkXRQUaRfB1WWgXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJIuygo0i4KirSLgiLtoqBYUBRQpF0UFGkXwWRspF0UFGkXBUXaRUCxaBfB1aVoFwVF2kVBkXZRUCwoCijSLgqKtIuCIu2ioEi7KCjSLgKKjXZRUKRdFBRpFwVF2kVBsaC4fzLWaBcFRdpFQZF2UVCkXRRXF9pFQHGiXRQUaRcFRdpFQZF2UVAsKAoo0i4KirSLgiLtoqBIuygo0i4CijPtoqBIuygo0i6CydhMuygoFhQFFGkXBUXaRXF1oV0UFGkXBUXaRUBxoV0UFGkXBUXaRUGRdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuAoor7SKYjK20i4Ii7aKgSLsoKBYUBVcX2kVBkXZRUKRdFBRpFwVF2mU/xaWjXRQUaRcFRdpFQZF2UVAsKAoo0i4KirSLgiLtoqBIu+yfjC0d7SKg2NMuCoq0i4Ii7SK4uvS0i4JiQVFAkXZRUKRdFBRpFwVF2kVBkXYRUBxoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu0imIwNtIuCIu2ioEi7CCiOtIvg6jLSLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2UVCkXQQUi3ZRUKRdFBRpFwVF2kVBsaC4fzJWtIuCIu2ioEi7KCjSLoqrC+0ioNhoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu2ioEi7KCjSLgqKtIuA4kS7KCjSLgqKtItgMjbRLgqKBUUBRdpFQZF2UVxdaBcFRdpFQZF2EVCcaRcFRdpFQZF2UVCkXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJCuwgmYwvtoqBIuygo0i4KigVFwdWFdlFQpF0UFGkXBUXaRUGRdhFQXGkXBUXaRUGRdlFQpF0UFAuKAoq0i4Ii7aKgSLsoKNIugsnYSrvsp7h2tIuCIu2ioEi77L+6rB3toqBYUBRQpF0UFGkXBUXaRUGRdlFQpF0EFHvaRUGRdlFQpF0UFGkXBcWCooAi7aKgSLsIJmM97aKgSLsoKNIuAooD7SK4ugy0i4Ii7aKgSLsoKBYUBRRpFwVF2kVBkXZRUKRdFBRpFwHFkXZRUKRdFBRpFwVF2kVBsaC4fzI20i4KirSLgiLtoqBIuyiuLrSLgGLRLgqKtIuCIu2ioEi7KCgWFAUUaRcFRdpFQZF2UVCkXRQUaRcBxUa7KCjSLgqKtItgMtZoFwXFgqKAIu2ioEi7KK4utIuCIu2ioEi7CChOtIuCIu2ioEi7KCjSLgqKBUUBRdpFQZF2UVCkXRQUaRcFRdpFQHGmXQSTsZl2UVCkXRQUaRcFxYKi4OpCuygo0i4KirSLgiLtoqBIuwgoLrSLgiLtoqBIuygo0i4KigVFAUXaRUGRdlFQpF0UFGkXwWRsoV0EFFfaRUGRdlFQpF0EV5eVdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuuyn23cv/gFGBkXqRYCRfJBjpFwnGAqMCIwUjwUjC7B6QfcNIw0gwEjESjFSM4mdjT8VIMFIxEoxUjAQjFSPBWGBUYKRiFDc8PRUjwUjFSDBSMZKfjVSMAuNAxUgwUjESjFSMBCMVI8FYYBTc8AxUjAQjFSPBSMVIMFIxkksMFaPAOFIxEoxUjAQjFSPBSMVIMBYYFRipGAlGKkaCkYqRYKRiJBipmF/BuAzLCeMydu8x1lErZqw6YRzn9Q+v/kHmqGFym8zztEZ17fTqGuYbZJbphHFZ3lI8fy89TzzcxWWdThtmXbo/cLnwA2nsxtMPpLFf3/5AurAVX870tBWH6i/89CqIm4k/T5J8FeLPUy9fhfjzhM5XIf48TfRViD9PPn0R4u15SuurEH+egvsqxA9ahp9InOZ0Ey+Im4nTnG7iNKebOM3pJk5zuonTnGbiE83pJk5zuonTnG7iNKebeEHcTJzmdBOnOd3EaU43cZrTTZzmNBOfaU43cZrTTZzmdBOnOd3EC+Jm4jSnmzjN6SZOc7qJ05xu4jSnmfhCc7qJ05xu4jSnmzjN6SZeEDcTpzndxGlON3Ga002c5nQTpznNxFea002c5nQTpzndxGnO28Rv/aHwtYC4HyJlKIBI7Akg0m+3Id76e5krSSaASGXthviCEYj7IdJCAojkze6rc99RLAKIBcT9ECkWAUSKRXBhoVgEECkWAUSKZT/EnmIRQKRYBBApFgFEikUAsYC4HyLFIoBIsQggUiwCiBSLACLFsh/iQLHsH4UNFIsAIsUigEixCCAWEPdfWCgWAUSKRQCRYhFApFgEECmW/RBHikUAkWIRQKRYBBApFgHEAuJ+iBSLACLFIoBIsQggUiz7R2EjxbIfYlEsAogUiwAixbL/wlIUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP8RGsQggUiwCiBSLACLFIoBYQNwPkWIRQKRY9o/CGsUigEixCCBSLPshThTL/gvLRLEIIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP8SZYhFApFgEECkWAUSKRQCxgLh7FDZTLAKIFIsAIsUigEixCC4sFMt+iAvFIoBIsQggUiwCiBSLAGIBcT9EikUAkWIRQKRYBBApFgFEimU/xJViEUCkWAQQKZb9ozCeea+AWEDcD5FiEUCkWAQXFopFAJFiEUCkWHZDHHjmvQIixSKASLEIIFIsAogFxP0QKRYBRIpFAJFiEUCkWAQQKZb9EHnm/f5R2MAz7xUQKRYBRIpFALGAuP/CQrEIIFIsAogUiwAixSKASLHsh8gz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsAogUiwAixbJ/FMYz7wUQeea9AiLFIoBIsey/sPDMewXEAuJ+iBSLACLFIoBIsQggUiwCiBTLfog8814BkWIRQKRYBBApFgHEAuJ+iBSLACLFsn8UxjPvFRApFgFEimU/RJ55L7iw8Mx7BUSKRQCRYhFALCDuh0ixCCBSLAKIFIsAIsUigEix7IfIM+8VECkWAUSKRQCRYhFALCDuHoXxzHsFRIpFAJFiEUCkWAQXFoplP0Seea+ASLEIIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP0Seea+ASLEIIFIs+0dhPPNeAbGAuB8ixSKASLEILiwUiwAixSKASLHsh8gz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsAogUiwAixSKASLHshjjyzPv9o7CRZ94rIFIsAogUiwBiAXH/hYViEUCkWAQQKRYBRIpFAJFi2Q+RZ94rIFIsAogUiwAixSKAWEDcD5FiEUCkWAQQKRYBRIpl/yiMZ94LIPLMewVEikUAkWLZf2HhmfcKiAXE/RApFgFEikUAkWIRQKRYBBAplv0Qeea9AiLFIoBIsQggUiwCiAXE/RApFgFEimX/KIxn3isgUiwCiBTLfog8815wYeGZ9wqIFIsAIsUigFhA3A+RYhFApFgEECkWAUSKRQCRYtkPkWfeKyBSLAKIFIsAIsUigFhA3D0K45n3CogUiwAixSKASLEILiwUy36IPPNeAZFiEUCkWAQQKRYBxALifogUiwAixSKASLEIIFIsAogUy36IPPNeAZFiEUCkWPaPwnjmvQJiAXE/RIpFAJFiEVxYKBYBRIpFAJFi2Q+RZ94rIFIsAogUiwAixSKAWEDcD5FiEUCkWAQQKRYBRIpFAJFi2Q+RZ94LRmE8814BkWIRQKRYBBALiPsvLBSLACLFIoBIsQggUiwCiBTLbojFM+8VECkWAUSKRQCRYhFALCDuh0ixCCBSLAKIFIsAIsWyexRWPPNeAJFn3isgUiwCiBTL/gsLz7xXQCwg7odIsQggUiwCiBSLACLFIoBIseyHyDPvFRApFgFEikUAkWIRQCwg7odIsQggUiz7R2E8814BkWIRQKRY9kPkmfeCCwvPvFdApFgEECkWAcQC4n6IFIsAIsUigEixCCBSLAKIFMt+iDzzXgGRYhFApFgEECkWAcQC4u5RGM+8V0CkWAQQKRYBRIpFcGGhWPZD5Jn3CogUiwAixSKASLEIIBYQ90OkWAQQKRYBRIpFAJFiEUCkWPZD5Jn3CogUiwAixbJ/FMYz7xUQC4j7IVIsAogUi+DCQrEIIFIsAogUy36IPPNeAZFiEUCkWAQQKRYBxALifogUiwAixSKASLEIIFIsAogUy36IPPNeMArjmfcKiBSLACLFIoBYQNx/YaFYBBApFgFEikUAkWIRQKRY9kPkmfcKiBSLACLFIoBIsQggFhD3Q6RYBBApFgFEikUAkWLZPwrjmff7ITaeea+ASLEIIFIsuy8sjWfeKyAWEPdDpFgEECkWAUSKRQCRYhFApFj2Q+SZ9wqIFIsAIsUigEixCCAWEPdDpFgEECmW/aMwnnmvgEixCCBSLPsh8sx7wYWFZ94rIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP0Seea+ASLEIIFIsAogUiwBiAXH3KIxn3isgUiwCiBSLACLFIriwUCz7IfLMewVEikUAkWIRQKRYBBALiPshUiwCiBSLACLFIoBIsQggUiz7IfLMewVEikUAkWLZPwrjmfcKiAXE/RApFgFEikVwYaFYBBApFgFEimU/RJ55r4BIsQggUiwCiBSLAGIBcT9EikUAkWIRQKRYBBApFgFEimU/RJ55LxiF8cx7BUSKRQCRYhFALCDuv7BQLAKIFIsAIsUigEixCCBSLPsh8sx7BUSKRQCRYhFApFgEEAuI+yFSLAKIFIsAIsUigEix7B+F8cx7AUSeea+ASLEIIFIs+y8sPPNeAbGAuB8ixSKASLEIIFIsAogUiwAixbIb4sQz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsu0dhE8+8V0CkWAQQKZb9PxN55r0CIsUigEixCCBSLAKIBcT9ECmW/bc4PPNeAZFiEUCkWAQ/EymW/RB55r0CIsUigEixCCBSLAKIBcTdtzg8814BkWIRQKRYBBApFsGFhWLZD5Fn3isgUiwCiBSLACLFIoBYQNwPkWIRQKRYBBApFgFEikUAkWK5DXEZlhPEZezeQzzqM+/7Gvvzq9t0A+PL7fTp1S/3M/UW4yUe04n5C5rXQw/t0ovHfj29ePz2itcX/xB00Br6OoIOWlpfR9BBK+7rCCoEfaqgqhORsdpyQdBB6/PrCDpo2eYIms/0ah0+fvGwLucjd11348XVTjyGmpePX9zO7NrYX7jXP2i6s0vu2iUHnU0cYZespyMPbej27ZKDDl/YJffsksZ06Vl3yTxOJ9bz3G68uKvTGxxefnTs21LMw9hS4i3FBI8t9W0fzac51dB3w74txcyRLSXeUsWW+jJbauyGOm+p8caRh3E5b6nqxn+9G+815q/Pql44uGkMgdklt3cJQ2B2ye1dwhD4aXeJcLzHEJhdcnOXTAyBn3WXTGcew/RW/SlcJoa1h1XPUPWw6hl+HlZ9of5J1d8z9+6Xs5h+7S9MNCcmmuyTX9knzDTZJ79Jf9s/MQBlS4m3FNNStpR4SzFaZUv9Jv0Aycwcli0l3lLMd7/QlurPf1Bj7Me9ZTYz3z2seua7T6peeQc7F7uEXXJzlzAIZpfc3iWMgZ92lwhrhMkuu+T2LmFY+7m7pLXx9OI23fiY8n3/NOvWv6OZGao+q3rhZ98X5qTsktu7hNEnu+T2LmFK+rS7RPcvJBYGquyS27uk2CVPuktufax6YUp6WPWMPg+rnnnmYdUzpHxW9dJ/H7Ew0WSf/MI+WZlpsk9+k/5OfmUAypYSbymmpWwp8ZZitMqW+k36AZK12FJsKe2WYr77dbbUp/1RxpVRMLvk9i5havy0u0T3y+SVATO75PYuYbz8rLvkk4J87phEs6XEW4pJNFtKGuRzxySaLSXeUkyiv9CWUv7BjLkr1B9VPZPdJ1UvvYNlsssuub1LmOyyS27vEia7T7tLhDXCZJddcnOX9Ecd1i6vr16G/g+75AeZo84cb5M56ujsNpmjToBukynILH1dInPU+cFtMkdt5ttkjtqJt8kctY1ukzlqD9y8Ng3cA18jwz3wNTLcA18jwz3wNTIFmStkuAe+RoZ74GtkuAe+RoZ74GtkuAe+QmbkQ7vvflvwgwyfPb1Gho9QXiPDJwGvkSnIXCHzRPfAS53f67ev/obMj/f6RHe1N9/rE92n3nyvT3TnefO9PtG95K33Wk90d3jzvT7R/d7N9/pEd3A33+sT3ZPdfK91oPd6oPumOtB9Ux3ovqkOdN9UB7pvage6b2oHum9qB7pvage6b2p1oPd6oPumdqD7pnag+6Z2oPumdqD7pulA903Tge6bpgPdN00Hum+a6kDv9UD3TVPyfdNQ57Mf5rrx6rWd/snkur6e8dB3l85jOv+p1jenPF7615V1PuPWzx+/dFi7E7Vhbd3bF/+AnXzj9nSwk+8cvxjssV9PpzAObz7bcNlM35/+WfTQv/kH169mku9zD21mTr4rP7aZ5IY4tpnk4jm2meQ+O7aZwkyomeT2PbYZSj3VDFmfaoYZQKoZZgChZhZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWZWZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAJlmlo4ZQKoZZgCpZpgBpJphBpBqpjATaoYZQKoZZgCpZpgBpJphBpBqhhlAqJnoZ8cf2wwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMAMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzIDCDVDDOAVDPMAHRmpvZKorsEm6yXwb71ZKVlLGD7YBPfRtj0tBE2iWyETfUaYROyPthFmxphk5tG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sBsFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBnihII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA/2TEEaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAXCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgXpg71SkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgZbOkDEl7EYSbUDG2aaoaQTTVD9aaaKcyEmqGnU80Q36lmKPVUM2R9qhlmAKFmemYAqWaYAaSaYQaQaoYZQKqZwkyoGWYAqWaYAaSaYQaQaoYZQKoZZgChZgZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWZGZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmihlAqhlmAKlmmAGkmmEGkGqmMBNqhhlAqhlmAKlmmAGkmmEGkGqGGUComcYMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzEDCDVDDOAVDPMAFLNMAPQmZnm6Uyi6z5+8VInassbEK9eCi+RXuj/TC/Uf6YX2j/TC+Wf6YXuj/QyU/2ZXmj+TC8Uf6YXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeFno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0rvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu8Heum7jt7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00tP7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXgZ6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0stI72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3opej/TC72f6YXez/RC72d6KbxEeqH3M73Q+5le6P1ML/R+phd6P9JLo/czvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9TPR+phd6P9MLvZ/phd7P9FJ4ifRC72d6ofczvdD7mV7o/Uwv9H6kl5nez/RC72d6ofczvdD7mV4KL5Fe6P1ML/R+phd6P9MLvZ/phd6P9LLQ+5le6P1ML/R+phd6P9NL4SXSC72f6YXez/RC72d6ofczvdD7kV5Wej/TC72f6YXez/RC72d6KbxEeqH3M73Q+5le6P1ML/R+phd6P9FL39H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXnp6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0stA72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3oZ6f1ML/R+phd6P9MLvZ/ppfAS6YXez/RC72d6ofczvdD7mV7ofaGX9kqiq/ewi4iXwR7W7kRtWFt3ATZlboRNbhth09BG2AVsH2xq1wibhDXCpkuNsIlNI2wK0ge7UZBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yJgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUH6YM8UpBE2BWmETUEaYVOQRtgFbB9sCtIIm4I0wqYgjbApSCNsCtIHe6EgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgVphE1BGmFTkD7YKwVphE1BGmFTkEbYFKQRdgHbB5uCNMKmII2wKUgjbArSCJuCtMEeOgrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQcpgjy830icSQ5tumOn78XQOfdUFM+RmqhnaNNUMIRtqpqd6U82QyKlm6OlUM8R3qpnCTKgZsj7VDDOAVDPMAFLNMANINcMMINTMwAwg1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMgMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1EwxA0g1wwwg1QwzgFQzzABSzRRmQs0wA0g1wwwg1QwzgFQzzABSzTADCDXTmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSamZgBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmAKlmmAGEmpmZAejMTPN0JtF1H794qRO15Q2IVy9MADK90P+ZXqj/TC+Fl0gvlH+mF7o/0wvVn+mF5s/0QvFHelno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9n+hl7Oj9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILz29n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWg9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I72M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXovczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9NHo/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0TvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8LvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpfczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9xO9VEfvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Heunp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8DvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpPczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9FL2f6YXez/RC72d6ofczvRReIr3Q+5le6H2hl/ZKoqsLsIl4Gexh7U7UhrV1F2BT5kbY5LYPdqOhjbAJYyNsatcIm4Q1wi5g+2ATm0bYFKQRNgVphE1BGmFTkD7YEwVphE1BGmFTkEbYFKQRdgHbB5uCNMKmII2wKUgjbArSCJuC9MGeKUgjbArSCJuCNMKmII2wC9g+2BSkETYFaYRNQRphU5BG2BSkD/ZCQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sFcK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BWmD3ToK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BemD3VOQRtgUpBE2BWmETUHKYI/9ejqFcWjTDTN9P57Ooa+6YKYwE2qGNk01Q8immqF6U82QyKlm6OlQMwPxnWqGUk81Q9anmmEGkGqmMBNqhhlAqhlmAKlmmAGkmmEGkGqGGUComZEZQKoZZgCpZpgBpJphBpBqpjATaoYZQKoZZgCpZpgBpJphBpBqhhlAqJliBpBqhhlAqhlmAKlmmAGkminMhJphBpBqhhlAqhlmAKlmmAGkmmEGEGqmMQNINcMMINUMM4BUM8wAUs0UZkLNMANINcMMINUMM4BUM8wAUs0wAwg1MzEDSDXDDCDVDDOAVDPMAFLNFGZCzTADSDXDDCDVDDOAVDPMAFLNMAMINTMzA0g1wwwg1QwzgFQzzABSzRRmQs0wA0g1wwwg1QwzAJ2ZaZ7OJLru4xcvdaK2vAHx6oUJQKYX+j/Sy0L9Z3qh/TO9UP6ZXuj+TC+Fl0gvNH+mF4o/0wu9n+mF3s/0Qu9Helnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9RC9TR+9neqH3M73Q+5le6P1ML4WXSC/0fqYXej/TC72f6YXez/RC70d66en9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILwO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWk9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70UvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+ml0fuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeJno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0zvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Helno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9n+jlZTleIr3Q+5le6P1ML/R+ppfCS6QXej/TC72f6YXez/RC72d6ofcjvfT0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJeB3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0vuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5Feit7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00uj9TC/0fqYXej/TC70v9NJeSXR1AXYBWwV7WLsTtWFt3QXYlLkRNrlthE1DG2ETxkbY1K4P9kTCGmHTpUbYxKYRNgVphF3A9sGmII2wKUgjbArSCJuCNMKmIH2wZwrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQRphU5BG2BSkETYF6YO9UJBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yVgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUHaYC8dBWmETUEaYVOQRtgUpBF2AdsHm4I0wqYgjbApSCNsCtIIm4L0we4pSCNsCtIIm4I0wqYgjbAL2D7YFKQRNgVphE1BGmFTkEbYFKQP9kBBymCP/Xo6hXFo0w0zfT+ezqGvumCG3Ew1Q5ummiFkU80UZkLNkMipZujpVDPEd6oZSj3VDFkfamZkBpBqhhlAqhlmAKlmmAGkminMhJphBpBqhhlAqhlmAKlmmAGkmmEGEGqmmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSaacwAUs0wA0g1wwwg1QwzgFQzhZlQM8wAUs0wA0g1wwwg1QwzgFQzzABCzUzMAFLNMANINcMMINUMM4BUM4WZUDPMAFLNMANINcMMINUMM4BUM8wAQs3MzABSzTADSDXDDCDVDDOAVDOFmVAzzABSzTADSDXDDCDVDDOAVDPMAELNLMwAUs0wA0g1wwwg1QwzgFQzhRmZmWmeziS67uMXL3WitrwB8eqFCUCmF/o/0wv1n+mF9s/0QvlHelnp/kwvVH+mF5o/0wvFn+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9RC9rR+9neqH3M73Q+5le6P1ML4WXSC/0fqYXej/TC72f6YXez/RC70d66en9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILwO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWk9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70UvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+ml0fuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeJno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0zvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Helno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+hl6Dp6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0ktP72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3oZ6P1ML/R+phd6P9MLvZ/ppfAS6YXez/RC72d6ofczvdD7mV7o/UgvI72f6YXez/RC72d6ofczvRReIr3Q+5le6P1ML/R+phd6P9MLvR/ppej9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1IL43ez/RC72d6ofczvdD7mV4KL5Fe6P1ML/R+phd6P9MLvZ/phd6P9DLR+0Iv7ZVEVxdgE/Ey2MPanagNa+suwKbMjbDJbSPsArYPNmFshE3tGmGTsEbYdKkRNrHpgz1TkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgf7IWCNMKmII2wKUgjbArSCLuA7YNNQRphU5BG2BSkETYFaYRNQfpgrxSkETYFaYRNQRphU5BG2AVsH2wK0gibgjTCpiCNsClII2wK0ga77yhII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92T0EaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAHCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkDLYY7+eTmEc2nTDzMvA9XQOfdUFM+RmqhnaNNTMSMimmqF6U82QyKlm6OlUM4WZUDOUeqoZsj7VDDOAVDPMAFLNMAMINVPMAFLNMANINcMMINUMM4BUM4WZUDPMAFLNMANINcMMINUMM4BUM8wAQs00ZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmJmYAqWaYAaSaYQaQaoYZQKqZwkyoGWYAqWaYAaSaYQaQaoYZQKoZZgChZmZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWYWZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmVmYAqWaYAejMTPN0JtF1H794qRO15Q2IVy9MADK90P+ZXgovkV5o/0wvlH+mF7o/0wvVn+mF5k/0MnQUf6YXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJee3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0PuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeRno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/SS9H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXhq9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWi9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I73M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXhd7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/0stL7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuJXsaO3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/TS0/uZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeBno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0jvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Heil6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0kuj9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I71M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PtCL+2VRFcXYBPxMtjD2p2oDWvrLsCmzH2wZ3LbCJuGNsImjI2wqV0j7AK2DzZdaoRNbBphU5BG2BSkETYF6YO9UJBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yVgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUHaYFdHQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sHsK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BemDPVCQRtgUpBE2BWmETUEaYRewfbApSCNsCtIIm4I0wqYgjbApSB/skYI0wqYgjbApSCNsCtIIu4Ctgj326+kUxqFNN8z0/Xg6h77qghlyM9UMbZpqhpBNNUP1ppohkUPNFD2daob4TjVDqaeaIetTzRRmQs0wA0g1wwwg1QwzgFQzzABSzTADCDXTmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSamZgBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmAKlmmAGEmpmZAaSaYQaQaoYZQKoZZgCpZgozoWaYAaSaYQaQaoYZQKoZZgCpZpgBhJpZmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSaWZkBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmADoz0zydSXTdxy9e6kRteQPi1QsTgEQvraP/M71Q/5leaP9ML5R/ppfCS6QXqj/TC82f6YXiz/RC72d6ofcjvfT0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJeB3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0vuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5Feit7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00uj9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILxO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWm9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70s9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXld7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3k/0MnX0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJee3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0PuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeRno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/SS9H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXhq9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWi9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I73M9H6mF3o/0wu9n+mF3s/0UnjReWmvJLq6AJuIl8Ee1u5EbVhbdwE2ZW6ETW4bYdPQRtiEsQ/2Qu0aYZOwRth0qRE2sWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbBXCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgVpgz13FKQRNgVphE1BGmFTkEbYBWwfbArSCJuCNMKmII2wKUgjbArSB7unII2wKUgjbArSCJuCNMIuYPtgU5BG2BSkETYFaYRNQRphU5A+2AMFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBHilII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92UZBG2BSkDPbYr6dTGIc23TDT9+PpHPqqC2bIzVQztGmqmcJMqBmqN9UMiZxqhp5ONUN8p5qh1EPNNLI+1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMQMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzMDCDVDDOAVDPMAFLNMANINVOYCTXDDCDVDDOAVDPMAFLNMANINcMMINTMwgwg1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMoMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg08zSMQNINcMMINUMM4BUM8wAUs0UZkLNMAPQmZnm6Uyi6z5+8VInassbEK9emABkeqH/M71Q/5leaP9ILz3ln+mF7s/0QvVneqH5M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWg9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I72M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXovczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9NHo/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0TvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8LvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpfczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9xO9rB29n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6aWn9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXkd7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/0UvR+phd6P9MLvZ/phd7P9FJ4ifRC72d6ofczvdD7mV7o/Uwv9H6kl0bvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8zvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llofczvdD7Qi/tlURXF2AT8TLYbVhOJNo4tAuwKXMj7AK2DzYNbYRNGBthU7tG2CSsETZd6oO9EptG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIF+yx6yhII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92T0EaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAHCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgXpgz1SkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgf7KIgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgWpg93m82vbt/f/DjYFaYRNQfpgNwrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQRphU5BG2BSkETYF6YM9UZBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yZgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUH6YC8UpBE2BWmETUEaYVOQRtgFbB9sCtIIm4I0wqYgjbApSCNsCtIHe6UgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgVphE1BGmFTkDbYfUdBGmFTkEbYFKQRNgVphF3A9sGmII2wKUgjbArSCJuCNMKmIH2wewrSCJuClMGehup/vHYau/ECbArSCJuCNMIuYPtgU5BG2BSkETYFaYRNQRphU5A+2AMFqYP98ooT7FZ1ATYFaYRNQRphU5BG2AVsH2wK0gibgjTCpiCNsClII2wK0gd7pCCNsClII2wK0gibgjTCLmD7YFOQRtgUpBE2BWmETUEaYVOQPthFQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sBsFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBnihII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA/2TEEaYVOQRtgUpBE2BWmEXcD2waYgjbApSB3sZT4ddlq76QJsCtIIm4I0wqYgdbDXoTvDbt3HL17G8XTgZWzTjRfXCfEyXfgbrwtl+gQSKd4nkEhJP4FECv0JJBYSv75EJgpPIJFJxRNIZALyBBKZrDyBRCY2X1/iysTmCSQysXkCiUxsnkAiE5snkFhI/PoSmdg8gUQmNk8gkYnNE0hkYvMEEpnYfHmJQ8fE5rMk9uNZ4lQXzDCGSTXDbOWTzFQ7/zB7+Rofv3hY5+V0wuv6SmKYLry4dWfnrRv7ty/+4ZxRzPGcF84P55xBz/GcMxc6nnPGSMdzztTpeM4ZUh3Oec9M63jOmZYdzzlzuOM5Zw53POeF88M5Zw53POfM4Y7nnDnc8Zwzhzuec+Zwh3M+MIc7nnPmcMdzzhzueM6Zwx3PeeH8cM6Zwx3POXO44zlnDnc858zhjuecOdzhnI/M4Y7nnDnc8Zwzhzuec+Zwx3NeOD+cc+Zwx3POHO54zpnDHc85c7jjOWcOdzjnxRzueM6Zwx3POXO44zlnDnc854XzwzlnDnc858zhjuecOdzxnDOHO55z5nCHc96Ywx3POXO44zlnDnc858zhjue8cH4458zhjuecOdzxnDOHO55z7xxunMez83W56Xyu5VX61F5fv1wkM7Zled1SbxR9e/2P97se6/1OXfL7XefT92k/duOt91vDev72ez3nvp3f65W5w3D+yTGP9fF7nVv/47Xz/OZHUl383prW8/fW3HcKWcNXfwOj+Q305x0xjeuNNzAt6+uP5P71p+x8Ovn6yiffvvLJT1/55OevefIv//e//cdf//a3v/6f//W3f/z7X/7513/8/T+/rey+/a/LfxJ8mvrzwd78cK/lO4rp/iXz/UuW+5esdy+5/Nc0P1jy8l/9t1de/pOMNZ4W1jK8uSj237/WcP+S8f4ldf+Sdv+S6f4lF/dAa+cr0/R+yXL/kvXuJZf/ksPHSy7ab+f7pzZP75YM9y8Z719S9y+5aL+t52+Brnu3ZLp/yXz/kuX+JeutJcvPSy7/+4GPl/T3L7lof2rTacnbBvixZLx/Sd2/pN2/5PLP//l8/ZnXd0vm+5cs9y9Z715y+bfW03q6pM/d+G5Jf/+S4f4l4/1L6saSty31Y0m7f8l0/5KL9ufz6Gae3n2/XJ5WfLxkvXvJ5Wb+eMlF+/O5huf3F77LsffxkvH+JXX/kov25/U8oureXSwu38B/vGS+f8ly/5L1xpK+fl4yd/cv6e9fctH+Mp1+KC3Tux9K83j/krp/Sbt/yUX7y3z63l+W929/vn/Jcv+S9e4ly0X7y3qeJ3fv3v7S379kuH/JeP+SurHk7Qznx5J2/5Lp/iUX7a/LeB7av7uKLcv9S9a7l6zdnUte/mv43suXf2jM0/lH0+tN6fDxbLNq+Pilyl8A9F/ztIevedrj1zzt+pqn3b7maU9f87Tnvac9n363Wm9moEO7PvRTHXx94MGH7pEH3/vT+0Xp2ejw88GHRx58fOTB9/68asPppW2Yfz54e+TBp0cefH7gwcfdzOv0KYxW7w6+98yntpxnPf3PB18eePAaHoildn8TTdOF+e+Pg9cjD94eefDpkQefH3nw5ZEHXx948NbpDr60nw/eP/Lgu79Dzx8fa+u7g+/+Dj3/bLlw8HrkwdsjD773O3QaTjdF07D8fPD5kQdfHnnw9YEHn/Z+h059nQ++/nzw/pEHHx558PGRB69HHrw98uDTIw8+6w4+vtvnyyMPvvs79JzQU/188Hn3d2jXrh+8f+TBh0cefPd36Af353M98uDtkQefHnnwRwbX/LjgevmP8dsLr/wB79eY6qfxza8K23r90ysfLnr5r/r22suD3Wk5vaW53vzaoA2XxjztfBf5h482D9cHsLrDt8cefnrs4efHHn557OHXvYdv/flDXG258dq+G8//vqB7O0/48FOPn3QyfdLJDEknM3pPpg3nk5n6dydTSSfTkk5mSjqZ2Xsy56t5370dufw4mSXpZNagkxm7pJPpP+1k3nzM4nQyQ9LJjEkn4/0J3J9bre/ffKztdDIt6WSmpJOZY07m5b/at9de/DFc50/H1fLmg1utvq+bvufO5X9T2qbzP+Zsy/pxwy3nf0m9du3jlz78405f4cSHr3ri41c98fqqJ96+6olPX/XE590nvo6nH+1v/1bEw098+aonvn7REx+6r3ri/Vc98eGrnvj4uBP/87W5je7w7bGHnx57+Pmxh18ee/j1oYcf98Ppu+FcJ92bP47w45NK+39I9sP0+od0lp8/N1vjo99BPfoLKByc/2HySyz+/FvXWh79BdYHf4HWPfoL9IIvcP6XRS9f4OfPSbTh0V9gfPQXqEd/gfboLzA9+gvMj/4Cgu/kfjwPIPvp54/bt/XBX2DqHv0F+kd/geHRX2B89BeoR38BwXdyv77+icj+59uWaXr0F1gffNsyP/q+aO4f/QXGR3+BevQXaI/+AtNDv8DLf8y/XR/hv/6Bl36a5xtfpoZTJPQ1vvtXdSX4Auc/0dLXeuPFUcPWZ3uX0yHe5XyId7kc4l2uR3iXQ3eId9l732XUnPrZ3uV4iHdZh3iX7RDvcjrEu5xD3uWfr/525HPOZc05l7ELOpeUa/Kfr30y9JPOJeX69uerv0Z72Lnc+I2VmcyN3wBOUWzmpLNp9n2z4bdsn3U2Q9TZjFFnU+6z2fCbwc86mynqbOaos1mizmZNOpupizob98/iLb9U/ayzGaPOpqLOpkWdzRR1NnPU2bh/Fm/5jfonnc08JBXMHNVTc0WdzRR1NnPU2SxRZ7PmnM3LfyzfXnrlIx5dvfmbDK93RuNHO+7jNfOGNcuGNev9ay4/BeHGmn7DmmHDmnHDmtqwZsM+WDbsg2XDPlg27INlwz5YN+yDdcM+WDfsg3XDPlg37IN1wz5YL++D/vwIob5f+p/XzBvWLBvWrPev6btuy6L+5qJ1erfoMoaX+7HzD+43I8sfi658nK3OD7/sW/9+Ub9l0bBl0bhh0bV/ALa8LlrfIb/268ru/Mdhpvdf6cpvlj7+Std+BTScR4TTe0/Xflfz8aJxy6LasuhKqJ7/8MLLovZu0bRl0bxl0bJl0bph0bXfHX28qN+yaNiwYa/9MunjRbVlUduyaMs34bVfAn28aNmyaN2w6NpvhT5e1G9ZtGVHtC07om3ZEW3LjmhbdkS7e0e8/Mf67aUvdySXlrZhOH8GZKh3n5ns2pZF05ZF85ZFy5ZF64ZFVx7mNZz/7ug8zNOv3U3cWjRsWHTl4SnjfH4+5bisv3ZjMFd3fkBn9dOv3RgMQ52+0jC0X7wxuLVo2LJo2gDiysNEboBYtixaNyy6fOW9tajfsmjYsmjcsqi2LGpbFm3Z5bVlR9SWHVFbdkTbsiPalh3R7t4R//rT939J9N9XLx4ff0r/ysXjxqJ5y6Jly6J1w6LLF49bi648P/f8lKuX/3N8d/G48mzb8xPq53V6fx3otizqtywatiwatyyqLYvalkXTlkXzlkWXn3bbnXfE8rKj3i1aryw6P7y3G/7wDfx+Ql5jdzqtGvv17Ub90733UZdvHz7vdPqs0xmyTmfMOp3KOp2WdTpT1unMWaezZJ1O1k/luvKNXq8P4HjzN+c/vLFeunOoLt3cfu3G+taiZcuidcOiNmwA0a7Qm958pV8cNN1a1LYsmrYsuuJpfl20du8WLVsWrRsWTd2WRf2WRcOWReOWRbVhw05ty6It37nTlu/cact37rTlO3futizqtywatiwatyzasiPmLTti3rIj5i07Yt6yI+YtO2IZNgT0ciU2z0+Am9fh3ZBkqS2L2pZF05ZF85ZFy5ZF64ZFa7dlUb9l0bBl0ZYdsW7ZEeuWHbFu2RHrlh2x3r0j/vWn739e/79/a1d+rfbhB2Zaa1sWTVsWzVsWLVsWbfjEVZu6LYv6LYuGLYvGLYu27Ihpy46YtuyIacuOmLbsiGnLjpi37Ih5y46Yt+yIecuOmLfsiCufzP3wQ2htnrYsmrcsWrYs2vBpvLbc/jTeuw/WtSufTf3wg3XtyodGP/zkWlu7LYv6LYs2fBpv6q78Nc6PPu42dRs+9jF164avdO1P8330ybWp77csGrYsGrcsuvzt/uFHw6a+bVk0bVk0b1m0bFm04dN409BtWbThs1fTMGxZNG5ZVFsWbfkm3PKR2GmYtyxatiza8Gm8aey2LNqyI8YtO2LcsiPGLTti3LIjxrt3xLe4Gb7HzbXPdo7nH+lz97r2ZYj7/Tp17cOdH6z618t//v+//Mdf//Jvf/vf//my6Nv/9//9/d//+dd//P3Hf/7zv/7v7/+flxf/Dw==","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2z1i2z1i2z1i2z1i2zxZUKhvL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9jnL9jnL9jnL9jnL9vmCSmVn2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2b5g2b5g2b5g2b5g2b5YUKkcLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsX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DyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDxrMDxrMDxrMDxrMD9rCymeD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGH+UGH+UGH+UGH+UFfWPnsMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD8YMD8YMD8YMD8YMD8YCyufA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YH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Dw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgflBgflBgflBgflBgflAWVj4LzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8qzA8qzA8qzA8qzA/qwspnhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBg/lBg/lBg/lBg/lBW1j5bDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/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flBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhftBgftBgftBgftBgftAWVj4bzA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA86zA86zA86zA86zA/6wspnh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/nBgPnBgPnBgPnBgPnBWFj5HDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/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oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oMH8oMH8oMH8oMH8oC2sfDaYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYH3SYH3SYH3SYH3SYH/SFlc8O84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MB84MB84MB84MB84OxsPI5YH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYX4wYX4wYX4wYX4wF1Y+J8wPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPFswPFswPFswPFswP1sLK54L5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wQnzgxPmByfMD06YH5wLK58nzA9OmB+cMD84YX5wwvzghPnBCfODE+YHJ8wPTpgfnDA/OGF+cML84IT5wQnzgxPmByfMD06YH5wwPzhhfnDC/OA82g/KonrZ87IW8aaeWxuvDeN165Lluvkov7F9TJk/N49pbxb7c63ZaK3VaK2zz1qP9ppfutbRaK3SaK3aaK3WaK3eaK3kvmlt+uq662mzNtYq6lWXvWuM/N32P9ZL7p0esV5y//SI9ZJ7qAes18h91CPWS+6lHrHeHfqpHJcXGWm68Tk7I68b1+vByfmzHoXVY7B6/OB6arneFymV9/UErJ6E1VOw989k1bOHC9+1ngGrB5bPDstnh+WzO6yegNUDy2cvWD2TVU8ssHoOzud1d37d88vuXuu5sWd3udw7Wf87432/HXLy+vXk9dvJ64ddXwJ2fYmE1VPo91vM6659jnnj/TbPXX8uJ69/h+tdxPWmUS5b96Ne389Si9zfs5TLdeN6czdKb22tHpdDo7G8+V7h5WXebT2XuixxjkX/4y/f6dpjQsDzSP52JPV5JHc6kvY8kjsdSX8eyZ2OZDyP5E5HMk/ee5y8d82T96518t612Pdqtutn36vZrl9Z9+72mHGyaz2w71IL9l1qwe7VF+xefcHu1U/Yvfo5YPUIrB5YPk9YPk9YPk9YPk9YPk9YPk9UPteyoPJ5rQeVz2s9qHxe60Hl81oPKp/XelD5vNaDyue1HlQ+r/Wg8nmtB5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPAstngeWzwPJZYPkssHwWWD4LLJ8Fls8Cy2eB5bPC8llh+aywfFZYPissnxWWzwrLZ4Xls8LyWWH5bLB8Nlg+GyyfDZbPBstnloVf64HlM8vCr/XA8tlg+eywfHZYPjssnx2Wzw7LZ4fls8PymWXh1/8jLJ9ZFr4WloVf64Hlc8DyOWD5HLB8Dlg+ByyfA5bPAcvngOVzwvI5YfmcsHxOWD4nLJ8Tls8Jy+eE5XPC8jlh+VywfC5YPhcsn1l+cK0Hls8sP7jWA8tnlh9c64HlM8sP1sLyg2s9sHxm+cG1Hlg+s/zgWg8sn1l+cK0Hls8sP7jWw8rnAfODA+YHB8wPDpgfHAsrnwfMD46jn5Eueh1PJTbezHu5+eyPWEu+7DoqXtf6iecyrWvNRmutRmudfdZ69DPpv3Sto9FaUc9qXutBPat5rcdg9aCe1bzWE7B6ElZPweqZrHpkgdUzYPXA8llg+SywfBZYPgssnwWWzwLLZ4Hls8LyWWH5rLB8Vlg+KyyfFZbPCstnheWzwvJZYflssHw2WD4bLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPjssnx2Wzw7LZ4fls8Py2WH57LB8dlg+OyyfHZbPAcvngOVzwPI5YPkcsHwOWD4HLJ8Dls8By+eA5XPC8jlh+ZywfE5YPicsnxOWzwnL54Tlc8LyOWH5XLB8Llg+FyyfC5bPBcvnguVzwfK5YPlcsHwuWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PVj7LwspnWVj5LAsrn2Vh5bMsrHyWhZXPsrDyWRZWPsvCymdZYPk8YPk8YPkM84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MK84MK84MK84MK84O6sPJZYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX7QYH7QYH7QYH7QYH7QFlY+G8wPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPOswPOswPOswPOswP+sLKZ4f5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5wYD5wYD5wYD5wYD5wVhY+RwwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxhH+0FZVC97XtYi3tRza+Ocy3XrkuW6+Si/sX1MmT83j2lvFvtzrd5ordFordlordVorbPPWkHO9MbGnnbZeP2G53Wlc/6snnPV/0z1nB7hM9Ur+CxZl1rXXU+btXGWiK7faF72ruunkd9t/2O91my95K7lEesldy6PWC+7e1mmXbfWxW7U/606ktLrVbo83l2lv1VHcn+tR8vqL13raLRWabRWcm/062u9bh5zvPsEcbRk/9K1fqs7ORtr/VZ3cjbW+q3u5Gys9Xv1TffX+r36prtr9e/VN91f6/fqm+6v9Xv1TffX2qhvOnrCxJeutVHf5I36Jm/UN3mjvskb9U3RqG+KRn1TNOqbolHfdPTkly9da6O+KRr1TdGob4pGfVM06puyUd+UjfqmbNQ3ZaO+6eiJTF+61kZ9Uzbqm7JR35SN+qZs1DdVo76pGvVN1ahvqkZ909GT0r50rY36pmrUN1Wjvqka9U3VqG+ajfqm2ahvmo36ptmobzp6guGXrrVR3zQb9U2zUd80G/VNs0/flEufvimXPn1TLn36plz69E25WKO19umbcunTN+XSp2/KpU/flEujvmk06ptGo75pNOqbRqO+6eiJv1+61kZ902jUN41GfdNo1DeNRn2TNOqbpFHfJI36JmnUN32vSdwba23UN32vSdwba23UN32vSdwba23UN2mjvkkb9U3aqG9CzwTfe63WaK2N+ib0HPC919qob/pm88Lvr7VR3/TN5oXfX2ujvumbzQu/v9ZGfVOjeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhVejeeHVaF54NZoXXo3mhddijdbap2+qRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Dp8XriGX/ZsY9xf6/CYddm1zzF/t9Yf9efJ6y90/dPztf6yG/XPU9c/D5+/vXf94+T1C7n+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qLDnDyrMDyrMD6rD8tlh+eywfHZYPjssn2F+UGF+UB2Wz7DnDyrs+YMasHwOWD7D/KDC/KDC/KDC/KDC/KDC/KAGLJ8Tls+w5w8q7PmDCnv+oMKeP6iw5w8q7PmDCnv+oMKeP6gwP6gwP6gFy+eC5XPB8rlg+VywfC5YPhcsnwuWz7DnDyrs+YMK84MK84MK84MK84MK84MK84MK84MK84MK84MG84MG84MG84MG84O2sPLZYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYX7QYX7QYX7QYX7QF1Y+O8wPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPBswPBswPBswPBswPxsLK54D5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5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oBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4mA9QfqlINjz7wbrGdIvBRmtINjz7wbrMdIvBcGefzdYD5J+KQj2/LvBepT0S0G0pGY9TPqlIFpSsx4n/VIQLalZD5R+KYiW1KxHSr8UBEtqoT1TWmjPlBbaM6WF9kxpWWBJLbRnSgvtmdJCe6a00J4pLbRnSgvtmdIyaEk9aEk9aEk9aEk9aEk9aEk9aEk9aEk9aEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVLappRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1AWW1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbAktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFo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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"5Z3dbiTHkYXfZa51kZEZ+edXWSwM2ZaNAQTJsOQFFobefXvY7OoedTNjWaphf5F5I3GkSvJ8nOpzorIqov7z6W8//OXf//jz55/+/vMvn/70X//59OPPf/3+188//3T6039+++7TX/71+ccfP//jz7f/+VP48g8JL8f/8s/vf/ryx19+/f5fv376k9So33364ae/ffky6ek7/P3zjz98+lOV3767O7j29HpsE9kOldYeHJtjfj0253A9Npff/vu7TyJ/WEvTy7GtFEOLpv56rJZ2pyX+cS1dXo/tIRtaSrj8Xkosd1rSH9bS44W1a7S0tPB6bA33f0f6Ti1f1uQda8qONXXHmrZjTX//mhh2rJEda+KONWnHmh3nQdxxHsSH50GqevlspVrr+NxPefsBKdebT2J6+Emp2+nfa7/KkRBf9FSYngbT01l6UoDpEZieCNOTYHoUpifD9MD8OcH8OcH8OcH8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6sMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH+WADNoCTCHPv2LJgjm0RJgJi0B5tISYDYtAebTEmBGLYHm1EJzaqE5tdCcWmhOLTSnFppTC82phebUQnNqoTl1pDl1pDl1pDl1pDl1pDl1pDk1rbVQaL2FQmsuFFp3odDaC4XWXyi0BkOhdRgKrcVQaD2GQmsyFFqXodDaDIXWZyi0RkOhdRoKrdVQaL2GQms2FFq3odDaDYXWbyi0hkOhdRwKreVQaD2HQms6FFrXodDaDoXWdyi0xkOhdR4KrfVQaL2HQms+FFr3odDaD4XWfyi0BkShdSAKrQVRaD2IQmtCFFoXotDaEIXWhyi0RkShdSIKrRVRaL2IQmtGFFo3otDaEYXWjyi0hkShdSQKrSVRaD2JQmtKFFpXotDaEoXWlyi0xkShdSYKrTVRaL2JQmtOFFp3otDaE4XWnyi0BkX5+A7Fru31aAl6+4qVk6L7w2PVi/7Tl9ej61l9c62+O1YfP75V8lD14lp9dK0+sdVrLtu7lLreeGbuj6SkcHljVCpdvjr6hVaXos1L0ZalaOG1wsG08NriYFp4LXIsrcBrl4Np4bXOwbTw2uhg2qVqqY9v2H4q7VK1lCxVS8lStZQsVUvJUrVUXKqWikvVUnGpWiouVUt9/EiFp9IuVUvFpWqpuFQtFZeqpeJStVRaqpZKS9VSaalaKi1VS3380JOn0i5VS6Wlaqm0VC2Vlqql0lK1lC5VS+lStZQuVUvpUrXUx48leirtUrWULlVL6VK1lC5VS+lStVReqpbKS9VSealaKi9VS3384LCn0i5VS+Wlaqm8VC2Vl6ql8lK1VKHXUr2Ujfb2m1/006sjSz+93rH00yuYW/0t3utX5/rpVYalH1435JAu+nPQB+c/vBIw9cOz3dJf8b//opv+B/nb4PmbW4oX/S2Xe/3w/DX1w/PX1A/PX1P/R+fvSXTSK0D+GuBFUuZJKjxJlSep8SR1nKQPH631/5AkPEmRJynxJPHcu/Pcu/Pcu/Pcu/Pcu+PcOwWce6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p8Bzb+G5t/DcW3juLTz3Fp57C8+9hefewnNv4bm38Nw78tw78tw78tw78tw78tw78tw78tw78tw78tw78tw78dw78dw78dw78dw78dw78dw78dw78dw78dw78dxbee6tPPdWnnsrz72V597Kc2/lubfy3Ft57q0898489848984898489848984898489848984898489y489y489y489y489y489y489y489y489y489y48964896489648964896489648964896489648964892489248924892489+b1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq+l8notlddrqbxeS+X1WmrAubfyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei31Gc1o29s6Tl+3ci/p4//icrpKytrvJVWepKNjtxuSUtzmtqfYwvVbn+V0lJzD26v+oBz5aDkp5cvRKacbOffHnnYp6uux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","brillig_names":["lookup_validity"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"inner_hash","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"7Z3tbhzHsYbvRb/9Y+qjq7tzKwdB4CROIMCQg9g5wEGQez9DWbukxOV2NNxuPaXlH8O0Z7rene2q6lru8/Lf7/7605//9fc/vf/wt19+ffeH//n3u59/+cuPv73/5cP+07/fiX38b7/+48cPDz/++tuP//zt3R+kqv/w7qcPf334V/P//PDub+9//undH6r854dnF2stp4u11jhfLOoXrja38ulqK1sbXC1brdtJyVbboxSV7dL1rerp8tblfLVdXFzkJEUk/OnFf/zhnfjbk3nhyZS3J/PCk4m3J/PCk6mvfjLWrJ1ea6uPF0srHyO06RH6V0bY79Ht0j3qpZ/eZG99sCP6dnrTbHuiql16y3Qr57dBt+jb49rl4o7QHucdYVsf7QjfTk9IXOtrdoTK25N54cno25N54ckY/MmY2eOT8bquvqq/PZkXnkx5ezIvPJl49ZMxsVPzM6nb4MnUqKeV26aDZ96Kni9uT042dlHH/rBOOtQfn8peqz6+0no3r7R9P6/U7XT1nhb9s1d6YatHyPkYtpVnz6Xf63OpT55Ljy+fi23fz3Mp0s+zUBk+l83b4yi0Pbn6kmw/D2VeHnXUi5duenqF/nRh7R+ft7w97xs/b7GTDJcnDfHT89a35710f9vb8166v/3teS/d3+XteS/d39/RjMJ43lb9dCC02p6Mmx9nQvuOJqWve95Sz89b+ufP++G5fEdz1U2fy3c0V93yufjdzlV6nk5Fn/4O5WLdku5x/qxM2uizr2/3WZnf7dz2nb6fdzsXfqfv5/c0d8b5d/qxbYP3s2/t9A71/Zk/Xt0u/bZBrbRT21ILqZ9d//Ac/e053uQ5rp4T9/w5rdzls5Uf1Cyeomz/tfDp4s3jSzUVpaah1HSSmrKh1AhKjaLUGEqNo9QUlBpULS6oWlxQtbiganGganGganGganGganGganGganGganGganGganGganFF1eKKqsUVVYsrqhZXVC2uqFpcUbW4ompxRdXiiqrFDVWLG6oWN1Qtbqha3FC1uKFqcUPV4oaqxQ1VixuqFndULe6oWtxRtbijanFH1eKOqsUdVYs7qhZ3VC3uqFosG6oYy4aqxrKhyrFsqHosG6ogy4aqyLKhSrJsqJosG6ooy8aqysKqysKqysKqysKqysKqysKqysKqysKqysKqysKqysqqysqqysqqysqq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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"}]}},"file_map":{"100":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"102":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> BoundedVec where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"118":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"121":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal 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 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 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 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 Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\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(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize 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 for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\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 = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_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"},"123":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"124":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, 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(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(contract_address: AztecAddress, log: [u8; 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(&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(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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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"},"131":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note\n ) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"146":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"148":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"150":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n"},"151":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"152":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"154":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"155":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(note_hash_counter: u32, encrypted_note: [u8; M], 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_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(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], 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_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\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(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(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper(\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(contract_address: AztecAddress, message: T, counter: u32) {\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.\nunconstrained pub fn emit_contract_class_unencrypted_log_private(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"156":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"159":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"161":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"162":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"166":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"169":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"170":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"171":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 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, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\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, 0, 0, 2, 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, 0, 0, 1, 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, 0, 0, 1, 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, 0, 0, 2, 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, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"176":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"185":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, 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},\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, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_requests : BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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.storage_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(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\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.key_validation_requests_and_generators.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(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\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 = 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 = 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 { request, sk_app_generator: sk_generators[key_index] };\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(\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(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_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\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\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function(\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(contract_address, function_selector, args_hash, false, false)\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 is_delegate_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 is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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"},"188":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"199":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_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 = 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"},"200":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"202":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\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"},"203":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"210":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\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},\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(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(function_leaf, function_leaf_index, function_leaf_sibling_path)\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 [\n tx_hash,\n note_index_in_tx as Field\n ],\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 [\n app.to_field(),\n unique_note_hash\n ],\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 [\n app.to_field(),\n nullifier\n ],\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([log_hash.contract_address.to_field(), log_hash.log_hash.value])\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(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\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(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = BoundedVec::new();\n\n let inputs = [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(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> 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\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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\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(inputs: [Field], separator: T) -> Field where T: ToField {\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(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,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = 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 = 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(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\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"},"229":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(msg: str) {\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(msg: str, 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 {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper(msg: str, args: [Field; 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(_msg: str, args: [Field]) {}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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 x: Field,\n y: Field,\n 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 lo: Field,\n 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(\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)]\nfn multi_scalar_mul_array_return(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [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 { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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 { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\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(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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"},"248":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use 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;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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 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(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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(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(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(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(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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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"},"265":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"299":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n"},"310":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"311":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"334":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\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(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 = 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(input: [Field; N], in_len: u32, is_variable_length: bool) -> 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// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\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\nunconstrained fn build_msg_block_iter(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [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\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\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\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(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_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) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\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 }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\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 // 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 msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\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 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\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\n for i in msg_byte_ptr..56 {\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[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\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, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 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, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 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, 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, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 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"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"70":{"path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}"},"71":{"path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}"},"73":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"75":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"78":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"79":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"80":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"98":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"99":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"}}} \ No newline at end of file diff --git a/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak b/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak new file mode 100644 index 000000000..74a3819e8 --- /dev/null +++ b/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak @@ -0,0 +1 @@ +{"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-aarch64","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{}},"bytecode":"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oqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]},"visibility":"private"},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"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T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2z1i2z1i2z1i2z1i2zxZUKhvL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9jnL9jnL9jnL9jnL9vmCSmVn2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2b5g2b5g2b5g2b5g2b5YUKkcLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsX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DyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDxrMDxrMDxrMDxrMD9rCymeD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGH+UGH+UGH+UGH+UFfWPnsMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD8YMD8YMD8YMD8YMD8YCyufA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YH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Dw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgflBgflBgflBgflBgflAWVj4LzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8qzA8qzA8qzA8qzA/qwspnhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBg/lBg/lBg/lBg/lBW1j5bDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/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flBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhftBgftBgftBgftBgftAWVj4bzA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA86zA86zA86zA86zA/6wspnh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/nBgPnBgPnBgPnBgPnBWFj5HDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/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oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oMH8oMH8oMH8oMH8oC2sfDaYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYH3SYH3SYH3SYH3SYH/SFlc8O84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MB84MB84MB84MB84OxsPI5YH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYX4wYX4wYX4wYX4wF1Y+J8wPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPFswPFswPFswPFswP1sLK54L5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wQnzgxPmByfMD06YH5wLK58nzA9OmB+cMD84YX5wwvzghPnBCfODE+YHJ8wPTpgfnDA/OGF+cML84IT5wQnzgxPmByfMD06YH5wwPzhhfnDC/OA82g/KonrZ87IW8aaeWxuvDeN165Lluvkov7F9TJk/N49pbxb7c63ZaK3VaK2zz1qP9ppfutbRaK3SaK3aaK3WaK3eaK3kvmlt+uq662mzNtYq6lWXvWuM/N32P9ZL7p0esV5y//SI9ZJ7qAes18h91CPWS+6lHrHeHfqpHJcXGWm68Tk7I68b1+vByfmzHoXVY7B6/OB6arneFymV9/UErJ6E1VOw989k1bOHC9+1ngGrB5bPDstnh+WzO6yegNUDy2cvWD2TVU8ssHoOzud1d37d88vuXuu5sWd3udw7Wf87432/HXLy+vXk9dvJ64ddXwJ2fYmE1VPo91vM6659jnnj/TbPXX8uJ69/h+tdxPWmUS5b96Ne389Si9zfs5TLdeN6czdKb22tHpdDo7G8+V7h5WXebT2XuixxjkX/4y/f6dpjQsDzSP52JPV5JHc6kvY8kjsdSX8eyZ2OZDyP5E5HMk/ee5y8d82T96518t612Pdqtutn36vZrl9Z9+72mHGyaz2w71IL9l1qwe7VF+xefcHu1U/Yvfo5YPUIrB5YPk9YPk9YPk9YPk9YPk9YPk9UPteyoPJ5rQeVz2s9qHxe60Hl81oPKp/XelD5vNaDyue1HlQ+r/Wg8nmtB5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPAstngeWzwPJZYPkssHwWWD4LLJ8Fls8Cy2eB5bPC8llh+aywfFZYPissnxWWzwrLZ4Xls8LyWWH5bLB8Nlg+GyyfDZbPBstnloVf64HlM8vCr/XA8tlg+eywfHZYPjssnx2Wzw7LZ4fls8PymWXh1/8jLJ9ZFr4WloVf64Hlc8DyOWD5HLB8Dlg+ByyfA5bPAcvngOVzwvI5YfmcsHxOWD4nLJ8Tls8Jy+eE5XPC8jlh+VywfC5YPhcsn1l+cK0Hls8sP7jWA8tnlh9c64HlM8sP1sLyg2s9sHxm+cG1Hlg+s/zgWg8sn1l+cK0Hls8sP7jWw8rnAfODA+YHB8wPDpgfHAsrnwfMD46jn5Eueh1PJTbezHu5+eyPWEu+7DoqXtf6iecyrWvNRmutRmudfdZ69DPpv3Sto9FaUc9qXutBPat5rcdg9aCe1bzWE7B6ElZPweqZrHpkgdUzYPXA8llg+SywfBZYPgssnwWWzwLLZ4Hls8LyWWH5rLB8Vlg+KyyfFZbPCstnheWzwvJZYflssHw2WD4bLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPjssnx2Wzw7LZ4fls8Py2WH57LB8dlg+OyyfHZbPAcvngOVzwPI5YPkcsHwOWD4HLJ8Dls8By+eA5XPC8jlh+ZywfE5YPicsnxOWzwnL54Tlc8LyOWH5XLB8Llg+FyyfC5bPBcvnguVzwfK5YPlcsHwuWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PVj7LwspnWVj5LAsrn2Vh5bMsrHyWhZXPsrDyWRZWPsvCymdZYPk8YPk8YPkM84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MK84MK84MK84MK84O6sPJZYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX7QYH7QYH7QYH7QYH7QFlY+G8wPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPOswPOswPOswPOswP+sLKZ4f5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5wYD5wYD5wYD5wYD5wVhY+RwwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxhH+0FZVC97XtYi3tRza+Ocy3XrkuW6+Si/sX1MmT83j2lvFvtzrd5ordFordlordVorbPPWkHO9MbGnnbZeP2G53Wlc/6snnPV/0z1nB7hM9Ur+CxZl1rXXU+btXGWiK7faF72ruunkd9t/2O91my95K7lEesldy6PWC+7e1mmXbfWxW7U/606ktLrVbo83l2lv1VHcn+tR8vqL13raLRWabRWcm/062u9bh5zvPsEcbRk/9K1fqs7ORtr/VZ3cjbW+q3u5Gys9Xv1TffX+r36prtr9e/VN91f6/fqm+6v9Xv1TffX2qhvOnrCxJeutVHf5I36Jm/UN3mjvskb9U3RqG+KRn1TNOqbolHfdPTkly9da6O+KRr1TdGob4pGfVM06puyUd+UjfqmbNQ3ZaO+6eiJTF+61kZ9Uzbqm7JR35SN+qZs1DdVo76pGvVN1ahvqkZ909GT0r50rY36pmrUN1Wjvqka9U3VqG+ajfqm2ahvmo36ptmobzp6guGXrrVR3zQb9U2zUd80G/VNs0/flEufvimXPn1TLn36plz69E25WKO19umbcunTN+XSp2/KpU/flEujvmk06ptGo75pNOqbRqO+6eiJv1+61kZ902jUN41GfdNo1DeNRn2TNOqbpFHfJI36JmnUN32vSdwba23UN32vSdwba23UN32vSdwba23UN2mjvkkb9U3aqG9CzwTfe63WaK2N+ib0HPC919qob/pm88Lvr7VR3/TN5oXfX2ujvumbzQu/v9ZGfVOjeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhVejeeHVaF54NZoXXo3mhddijdbap2+qRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Dp8XriGX/ZsY9xf6/CYddm1zzF/t9Yf9efJ6y90/dPztf6yG/XPU9c/D5+/vXf94+T1C7n+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qLDnDyrMDyrMD6rD8tlh+eywfHZYPjssn2F+UGF+UB2Wz7DnDyrs+YMasHwOWD7D/KDC/KDC/KDC/KDC/KDC/KAGLJ8Tls+w5w8q7PmDCnv+oMKeP6iw5w8q7PmDCnv+oMKeP6gwP6gwP6gFy+eC5XPB8rlg+VywfC5YPhcsnwuWz7DnDyrs+YMK84MK84MK84MK84MK84MK84MK84MK84MK84MG84MG84MG84MG84O2sPLZYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYX7QYX7QYX7QYX7QF1Y+O8wPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPBswPBswPBswPBswPxsLK54D5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5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oBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4mA9QfqlINjz7wbrGdIvBRmtINjz7wbrMdIvBcGefzdYD5J+KQj2/LvBepT0S0G0pGY9TPqlIFpSsx4n/VIQLalZD5R+KYiW1KxHSr8UBEtqoT1TWmjPlBbaM6WF9kxpWWBJLbRnSgvtmdJCe6a00J4pLbRnSgvtmdIyaEk9aEk9aEk9aEk9aEk9aEk9aEk9aEk9aEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVLappRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1AWW1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbAktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFo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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"consumer","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"},"error_types":{}},"bytecode":"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","debug_symbols":"5Z3dbiTHkYXfZa51kZEZ+edXWSwM2ZaNAQTJsOQFFobefXvY7OoedTNjWaphf5F5I3GkSvJ8nOpzorIqov7z6W8//OXf//jz55/+/vMvn/70X//59OPPf/3+188//3T6039+++7TX/71+ccfP//jz7f/+VP48g8JL8f/8s/vf/ryx19+/f5fv376k9So33364ae/ffky6ek7/P3zjz98+lOV3767O7j29HpsE9kOldYeHJtjfj0253A9Npff/vu7TyJ/WEvTy7GtFEOLpv56rJZ2pyX+cS1dXo/tIRtaSrj8Xkosd1rSH9bS44W1a7S0tPB6bA33f0f6Ti1f1uQda8qONXXHmrZjTX//mhh2rJEda+KONWnHmh3nQdxxHsSH50GqevlspVrr+NxPefsBKdebT2J6+Emp2+nfa7/KkRBf9FSYngbT01l6UoDpEZieCNOTYHoUpifD9MD8OcH8OcH8OcH8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6sMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH+WADNoCTCHPv2LJgjm0RJgJi0B5tISYDYtAebTEmBGLYHm1EJzaqE5tdCcWmhOLTSnFppTC82phebUQnNqoTl1pDl1pDl1pDl1pDl1pDl1pDk1rbVQaL2FQmsuFFp3odDaC4XWXyi0BkOhdRgKrcVQaD2GQmsyFFqXodDaDIXWZyi0RkOhdRoKrdVQaL2GQms2FFq3odDaDYXWbyi0hkOhdRwKreVQaD2HQms6FFrXodDaDoXWdyi0xkOhdR4KrfVQaL2HQms+FFr3odDaD4XWfyi0BkShdSAKrQVRaD2IQmtCFFoXotDaEIXWhyi0RkShdSIKrRVRaL2IQmtGFFo3otDaEYXWjyi0hkShdSQKrSVRaD2JQmtKFFpXotDaEoXWlyi0xkShdSYKrTVRaL2JQmtOFFp3otDaE4XWnyi0BkX5+A7Fru31aAl6+4qVk6L7w2PVi/7Tl9ej61l9c62+O1YfP75V8lD14lp9dK0+sdVrLtu7lLreeGbuj6SkcHljVCpdvjr6hVaXos1L0ZalaOG1wsG08NriYFp4LXIsrcBrl4Np4bXOwbTw2uhg2qVqqY9v2H4q7VK1lCxVS8lStZQsVUvJUrVUXKqWikvVUnGpWiouVUt9/EiFp9IuVUvFpWqpuFQtFZeqpeJStVRaqpZKS9VSaalaKi1VS3380JOn0i5VS6Wlaqm0VC2Vlqql0lK1lC5VS+lStZQuVUvpUrXUx48leirtUrWULlVL6VK1lC5VS+lStVReqpbKS9VSealaKi9VS3384LCn0i5VS+Wlaqm8VC2Vl6ql8lK1VKHXUr2Ujfb2m1/006sjSz+93rH00yuYW/0t3utX5/rpVYalH1435JAu+nPQB+c/vBIw9cOz3dJf8b//opv+B/nb4PmbW4oX/S2Xe/3w/DX1w/PX1A/PX1P/R+fvSXTSK0D+GuBFUuZJKjxJlSep8SR1nKQPH631/5AkPEmRJynxJPHcu/Pcu/Pcu/Pcu/Pcu+PcOwWce6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p8Bzb+G5t/DcW3juLTz3Fp57C8+9hefewnNv4bm38Nw78tw78tw78tw78tw78tw78tw78tw78tw78tw78tw78dw78dw78dw78dw78dw78dw78dw78dw78dw78dxbee6tPPdWnnsrz72V597Kc2/lubfy3Ft57q0898489848984898489848984898489848984898489y489y489y489y489y489y489y489y489y489y48964896489648964896489648964896489648964892489248924892489+b1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq+l8notlddrqbxeS+X1WmrAubfyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei31Gc1o29s6Tl+3ci/p4//icrpKytrvJVWepKNjtxuSUtzmtqfYwvVbn+V0lJzD26v+oBz5aDkp5cvRKacbOffHnnYp6uux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","brillig_names":["lookup_validity"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"7Z3tbhzHsYbvRb/9Y+qjq7tzKwdB4CROIMCQg9g5wEGQez9DWbukxOV2NNxuPaXlH8O0Z7rene2q6lru8/Lf7/7605//9fc/vf/wt19+ffeH//n3u59/+cuPv73/5cP+07/fiX38b7/+48cPDz/++tuP//zt3R+kqv/w7qcPf334V/P//PDub+9//undH6r854dnF2stp4u11jhfLOoXrja38ulqK1sbXC1brdtJyVbboxSV7dL1rerp8tblfLVdXFzkJEUk/OnFf/zhnfjbk3nhyZS3J/PCk4m3J/PCk6mvfjLWrJ1ea6uPF0srHyO06RH6V0bY79Ht0j3qpZ/eZG99sCP6dnrTbHuiql16y3Qr57dBt+jb49rl4o7QHucdYVsf7QjfTk9IXOtrdoTK25N54cno25N54ckY/MmY2eOT8bquvqq/PZkXnkx5ezIvPJl49ZMxsVPzM6nb4MnUqKeV26aDZ96Kni9uT042dlHH/rBOOtQfn8peqz6+0no3r7R9P6/U7XT1nhb9s1d6YatHyPkYtpVnz6Xf63OpT55Ljy+fi23fz3Mp0s+zUBk+l83b4yi0Pbn6kmw/D2VeHnXUi5duenqF/nRh7R+ft7w97xs/b7GTDJcnDfHT89a35710f9vb8166v/3teS/d3+XteS/d39/RjMJ43lb9dCC02p6Mmx9nQvuOJqWve95Sz89b+ufP++G5fEdz1U2fy3c0V93yufjdzlV6nk5Fn/4O5WLdku5x/qxM2uizr2/3WZnf7dz2nb6fdzsXfqfv5/c0d8b5d/qxbYP3s2/t9A71/Zk/Xt0u/bZBrbRT21ILqZ9d//Ac/e053uQ5rp4T9/w5rdzls5Uf1Cyeomz/tfDp4s3jSzUVpaah1HSSmrKh1AhKjaLUGEqNo9QUlBpULS6oWlxQtbiganGganGganGganGganGganGganGganGganGganGganFF1eKKqsUVVYsrqhZXVC2uqFpcUbW4ompxRdXiiqrFDVWLG6oWN1Qtbqha3FC1uKFqcUPV4oaqxQ1VixuqFndULe6oWtxRtbijanFH1eKOqsUdVYs7qhZ3VC3uqFosG6oYy4aqxrKhyrFsqHosG6ogy4aqyLKhSrJsqJosG6ooy8aqysKqysKqysKqysKqysKqysKqysKqysKqysKqysKqysqqysqqysqqysqq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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"structs":{"functions":[{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters","fields":[{"name":"inner_hash","type":{"kind":"field"}}]}},{"name":"return_type","type":{"kind":"field"}}]},{"kind":"struct","path":"SchnorrAccount::constructor_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::constructor_parameters","fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}]}}]},{"kind":"struct","path":"SchnorrAccount::entrypoint_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::entrypoint_parameters","fields":[{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]}},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]}},{"name":"cancellable","type":{"kind":"boolean"}}]}}]}]},"globals":{"notes":[{"kind":"tuple","fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"kind":"struct","fields":[{"name":"x","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"y","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"npk_m_hash","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}}]}]}],"storage":[{"kind":"struct","fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"kind":"struct","fields":[{"name":"signing_public_key","value":{"kind":"struct","fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}]}}]}}]}]}},"file_map":{"3":{"source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n","path":"std/array/mod.nr"},"7":{"source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n","path":"std/collections/bounded_vec.nr"},"24":{"source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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 x: Field,\n y: Field,\n 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 lo: Field,\n 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(\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)]\nfn multi_scalar_mul_array_return(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [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 { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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 { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\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(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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","path":"std/embedded_curve_ops.nr"},"25":{"source":"use 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;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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","path":"std/field/bn254.nr"},"26":{"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(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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(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(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(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(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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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","path":"std/field/mod.nr"},"29":{"source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n","path":"std/hash/mod.nr"},"34":{"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(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 = 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(input: [Field; N], in_len: u32, is_variable_length: bool) -> 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","path":"std/hash/poseidon2.nr"},"35":{"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// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\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\nunconstrained fn build_msg_block_iter(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [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\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\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\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(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_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) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\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 }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\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 // 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 msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\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 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\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\n for i in msg_byte_ptr..56 {\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[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\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, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 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, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 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, 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, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 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","path":"std/hash/sha256.nr"},"58":{"source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n","path":"std/option.nr"},"59":{"source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n","path":"std/panic.nr"},"70":{"source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/public_key_note.nr"},"71":{"source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/main.nr"},"73":{"source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr"},"75":{"source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth.nr"},"78":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr"},"79":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr"},"80":{"source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/account.nr"},"98":{"source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr"},"99":{"source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr"},"100":{"source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/utils.nr"},"102":{"source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> BoundedVec where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr"},"118":{"source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr"},"121":{"source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal 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 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 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 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 Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\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(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize 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 for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\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 = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr"},"123":{"source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr"},"124":{"source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, 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(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(contract_address: AztecAddress, log: [u8; 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(&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(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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/hash.nr"},"131":{"source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note\n ) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr"},"146":{"source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/initializer.nr"},"148":{"source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr"},"150":{"source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr"},"151":{"source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr"},"152":{"source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr"},"154":{"source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr"},"155":{"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(note_hash_counter: u32, encrypted_note: [u8; M], 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_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(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], 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_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\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(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(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper(\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(contract_address: AztecAddress, message: T, counter: u32) {\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.\nunconstrained pub fn emit_contract_class_unencrypted_log_private(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/logs.nr"},"156":{"source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr"},"159":{"source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr"},"161":{"source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr"},"162":{"source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr"},"166":{"source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"},"169":{"source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr"},"170":{"source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr"},"171":{"source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 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, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\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, 0, 0, 2, 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, 0, 0, 1, 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, 0, 0, 1, 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, 0, 0, 2, 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, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr"},"176":{"source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/utils/point.nr"},"185":{"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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, 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},\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, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_requests : BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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.storage_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(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\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.key_validation_requests_and_generators.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(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\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 = 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 = 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 { request, sk_app_generator: sk_generators[key_index] };\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(\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(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_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\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\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function(\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(contract_address, function_selector, args_hash, false, false)\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 is_delegate_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 is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/private_context.nr"},"188":{"source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr"},"199":{"source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_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 = 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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr"},"200":{"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(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr"},"202":{"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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr"},"203":{"source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr"},"210":{"source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\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},\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(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(function_leaf, function_leaf_index, function_leaf_sibling_path)\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 [\n tx_hash,\n note_index_in_tx as Field\n ],\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 [\n app.to_field(),\n unique_note_hash\n ],\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 [\n app.to_field(),\n nullifier\n ],\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([log_hash.contract_address.to_field(), log_hash.log_hash.value])\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(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\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(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = BoundedVec::new();\n\n let inputs = [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(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> 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\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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\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(inputs: [Field], separator: T) -> Field where T: ToField {\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(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,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = 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 = 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(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr"},"229":{"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(msg: str) {\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(msg: str, 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 {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper(msg: str, args: [Field; 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(_msg: str, args: [Field]) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr"},"248":{"source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr"},"265":{"source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr"},"299":{"source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr"},"310":{"source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr"},"311":{"source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr"},"334":{"source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr"}}} \ No newline at end of file diff --git a/phantom-gate/contracts/counter/Nargo.toml b/phantom-gate/contracts/counter/Nargo.toml new file mode 100644 index 000000000..b34d0dbc2 --- /dev/null +++ b/phantom-gate/contracts/counter/Nargo.toml @@ -0,0 +1,14 @@ +[package] +name = "counter" +type = "contract" +authors = [""] +compiler_version = ">=0.33.0" + +[dependencies] +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/aztec" } +value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/value-note" } +easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/easy-private-state" } +token_portal_content_hash_lib = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.57.0", directory="noir-projects/noir-contracts/contracts/token_portal_content_hash_lib" } +token = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.57.0", directory="noir-projects/noir-contracts/contracts/token_contract" } +authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/authwit" } +ecdsa = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/noir-contracts/contracts/ecdsa_k_account_contract"} \ No newline at end of file diff --git a/phantom-gate/contracts/counter/src/main.nr b/phantom-gate/contracts/counter/src/main.nr new file mode 100644 index 000000000..57ece83f9 --- /dev/null +++ b/phantom-gate/contracts/counter/src/main.nr @@ -0,0 +1,88 @@ +use dep::aztec::macros::aztec; + +#[aztec] +contract Counter { + // docs:start:imports + use aztec::prelude::{AztecAddress, Map}; + use value_note::{balance_utils, value_note::ValueNote}; + use easy_private_state::EasyPrivateUint; + use aztec::macros::{storage::storage, functions::{initializer, private}}; + // docs:end:imports + + // docs:start:storage_struct + #[storage] + struct Storage { + counters: Map, Context>, + } + // docs:end:storage_struct + + // docs:start:constructor + #[initializer] + #[private] + // We can name our initializer anything we want as long as it's marked as aztec(initializer) + fn constructor(headstart: u64, owner: AztecAddress, outgoing_viewer: AztecAddress) { + let counters = storage.counters; + counters.at(owner).add(headstart, owner, outgoing_viewer); + } + // docs:end:constructor + + // docs:start:increment + #[private] + fn increment(owner: AztecAddress, outgoing_viewer: AztecAddress) { + unsafe { + dep::aztec::oracle::debug_log::debug_log_format("Incrementing counter for owner {0}", [owner.to_field()]); + } + let counters = storage.counters; + counters.at(owner).add(1, owner, outgoing_viewer); + } + // docs:end:increment + // docs:start:get_counter + unconstrained fn get_counter(owner: AztecAddress) -> pub Field { + let counters = storage.counters; + balance_utils::get_balance(counters.at(owner).set) + } + + // docs:end:get_counter + // docs:start:test_imports + use dep::aztec::test::{helpers::{cheatcodes, test_environment::TestEnvironment}}; + use dep::aztec::protocol_types::storage::map::derive_storage_slot_in_map; + use dep::aztec::note::note_getter::{MAX_NOTES_PER_PAGE, view_notes}; + use dep::aztec::note::note_viewer_options::NoteViewerOptions; + // docs:end:test_imports + // docs:start:txe_test_increment + #[test] + unconstrained fn test_increment() { + // Setup env, generate keys + let mut env = TestEnvironment::new(); + let owner = env.create_account(); + let outgoing_viewer = env.create_account(); + let initial_value: Field = 5; + env.impersonate(owner); + // Deploy contract and initialize + let initializer = Counter::interface().constructor(initial_value as u64, owner, outgoing_viewer); + let counter_contract = env.deploy_self("Counter").with_private_initializer(initializer); + let contract_address = counter_contract.to_address(); + // docs:start:txe_test_read_notes + // Read the stored value in the note + env.impersonate(contract_address); + let counter_slot = Counter::storage_layout().counters.slot; + let owner_slot = derive_storage_slot_in_map(counter_slot, owner); + let mut options = NoteViewerOptions::new(); + let notes: BoundedVec = view_notes(owner_slot, options); + let initial_note_value = notes.get(0).value; + assert( + initial_note_value == initial_value, f"Expected {initial_value} but got {initial_note_value}" + ); + // docs:end:txe_test_read_notes + // Increment the counter + let increment_call_interface = Counter::at(contract_address).increment(owner, outgoing_viewer); + env.call_private_void(increment_call_interface); + // get_counter is an unconstrained function, so we call it directly (we're in the same module) + let current_value_for_owner = get_counter(owner); + let expected_current_value = initial_value + 1; + assert( + expected_current_value == current_value_for_owner, f"Expected {expected_current_value} but got {current_value_for_owner}" + ); + } + // docs:end:txe_test_increment +} \ No newline at end of file diff --git a/phantom-gate/contracts/nft-contract/Nargo.toml b/phantom-gate/contracts/nft-contract/Nargo.toml new file mode 100644 index 000000000..587e58073 --- /dev/null +++ b/phantom-gate/contracts/nft-contract/Nargo.toml @@ -0,0 +1,10 @@ +[package] +name = "nft-contract" +type = "contract" +authors = [""] +compiler_version = ">=0.33.0" + +[dependencies] +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/aztec" } +authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/authwit" } +compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/compressed_string" } \ No newline at end of file diff --git a/phantom-gate/contracts/nft-contract/src/main.nr b/phantom-gate/contracts/nft-contract/src/main.nr new file mode 100644 index 000000000..c54a0b4b4 --- /dev/null +++ b/phantom-gate/contracts/nft-contract/src/main.nr @@ -0,0 +1,310 @@ +mod types; +mod test; + +use dep::aztec::macros::aztec; + +// Minimal NFT implementation with `AuthWit` support that allows minting in public-only and transfers in both public +// and private. +#[aztec] +contract NFT { + use dep::compressed_string::FieldCompressedString; + use dep::aztec::{ + oracle::random::random, + prelude::{NoteGetterOptions, NoteViewerOptions, Map, PublicMutable, SharedImmutable, PrivateSet, AztecAddress}, + encrypted_logs::{encrypted_note_emission::{encode_and_encrypt_note, encrypt_and_emit_partial_log}}, + hash::pedersen_hash, keys::getters::get_public_keys, note::constants::MAX_NOTES_PER_PAGE, + protocol_types::traits::is_empty, utils::comparison::Comparator, + protocol_types::{point::Point, traits::Serialize}, + macros::{storage::storage, events::event, functions::{private, public, view, internal, initializer}} + }; + use dep::authwit::auth::{assert_current_call_valid_authwit, assert_current_call_valid_authwit_public, compute_authwit_nullifier}; + use std::{embedded_curve_ops::EmbeddedCurvePoint, meta::derive}; + use crate::types::nft_note::NFTNote; + + global TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX = 3; + + // TODO(#8467): Rename this to Transfer - calling this NFTTransfer to avoid export conflict with the Transfer event + // in the Token contract. + #[event] + #[derive(Serialize)] + struct NFTTransfer { + from: AztecAddress, + to: AztecAddress, + token_id: Field, + } + + #[storage] + struct Storage { + // The symbol of the NFT + symbol: SharedImmutable, + // The name of the NFT + name: SharedImmutable, + // The admin of the contract + admin: PublicMutable, + // Addresses that can mint + minters: Map, Context>, + // Contains the NFTs owned by each address in private. + private_nfts: Map, Context>, + // A map from token ID to a boolean indicating if the NFT exists. + nft_exists: Map, Context>, + // A map from token ID to the public owner of the NFT. + public_owners: Map, Context>, + } + + #[public] + #[initializer] + fn constructor(admin: AztecAddress, name: str<31>, symbol: str<31>) { + assert(!admin.is_zero(), "invalid admin"); + storage.admin.write(admin); + storage.minters.at(admin).write(true); + storage.name.initialize(FieldCompressedString::from_string(name)); + storage.symbol.initialize(FieldCompressedString::from_string(symbol)); + } + + #[public] + fn set_admin(new_admin: AztecAddress) { + assert(storage.admin.read().eq(context.msg_sender()), "caller is not an admin"); + storage.admin.write(new_admin); + } + + #[public] + fn set_minter(minter: AztecAddress, approve: bool) { + assert(storage.admin.read().eq(context.msg_sender()), "caller is not an admin"); + storage.minters.at(minter).write(approve); + } + + #[public] + fn mint(to: AztecAddress, token_id: Field) { + assert(token_id != 0, "zero token ID not supported"); + assert(storage.minters.at(context.msg_sender()).read(), "caller is not a minter"); + assert(storage.nft_exists.at(token_id).read() == false, "token already exists"); + + storage.nft_exists.at(token_id).write(true); + + storage.public_owners.at(token_id).write(to); + } + + #[public] + #[view] + fn public_get_name() -> pub FieldCompressedString { + storage.name.read_public() + } + + #[private] + #[view] + fn private_get_name() -> pub FieldCompressedString { + storage.name.read_private() + } + + #[public] + #[view] + fn public_get_symbol() -> pub FieldCompressedString { + storage.symbol.read_public() + } + + #[private] + #[view] + fn private_get_symbol() -> pub FieldCompressedString { + storage.symbol.read_private() + } + + #[public] + #[view] + fn get_admin() -> Field { + storage.admin.read().to_field() + } + + #[public] + #[view] + fn is_minter(minter: AztecAddress) -> bool { + storage.minters.at(minter).read() + } + + #[public] + fn transfer_in_public(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { + if (!from.eq(context.msg_sender())) { + assert_current_call_valid_authwit_public(&mut context, from); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let public_owners_storage = storage.public_owners.at(token_id); + assert(public_owners_storage.read().eq(from), "invalid owner"); + + public_owners_storage.write(to); + } + + /// Prepares a transfer from public balance of `from` to a private balance of `to`. The transfer then needs to be + /// finalized by calling `finalize_transfer_to_private`. `transient_storage_slot_randomness` is passed + /// as an argument so that we can derive `transfer_preparer_storage_slot_commitment` off-chain and then pass it + /// as an argument to the followup call to `finalize_transfer_to_private`. + #[private] + fn prepare_transfer_to_private( + from: AztecAddress, + to: AztecAddress, + transient_storage_slot_randomness: Field + ) { + let to_keys = get_public_keys(to); + let to_npk_m_hash = to_keys.npk_m.hash(); + let to_note_slot = storage.private_nfts.at(to).storage_slot; + + // We create a partial NFT note hiding point with unpopulated/zero token id for 'to' + // TODO(#7775): Manually fetching the randomness here is not great. If we decide to include randomness in all + // notes we could just inject it in macros. + let note_randomness = unsafe { + random() + }; + let note_setup_payload = NFTNote::setup_payload().new(to_npk_m_hash, note_randomness, to_note_slot); + + // We encrypt and emit the partial note log + encrypt_and_emit_partial_log(&mut context, note_setup_payload.log_plaintext, to_keys, to); + + // We make the msg_sender/transfer_preparer part of the slot preimage to ensure he cannot interfere with + // non-sender's slots + let transfer_preparer_storage_slot_commitment: Field = pedersen_hash( + [context.msg_sender().to_field(), transient_storage_slot_randomness], + TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX + ); + // Then we hash the transfer preparer storage slot commitment with `from` and use that as the final slot + // --> by hashing it with a `from` we ensure that `from` cannot interfere with slots not assigned to him. + let slot: Field = pedersen_hash( + [from.to_field(), transfer_preparer_storage_slot_commitment], + TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX + ); + + NFT::at(context.this_address())._store_point_in_transient_storage(note_setup_payload.hiding_point, slot).enqueue(&mut context); + } + + #[public] + #[internal] + fn _store_point_in_transient_storage(point: Point, slot: Field) { + // We don't perform check for the overwritten value to be non-zero because the slots are siloed to `to` + // and hence `to` can interfere only with his own execution. + context.storage_write(slot, point); + } + + /// Finalizes a transfer of NFT with `token_id` from public balance of `from` to a private balance of `to`. + /// The transfer must be prepared by calling `prepare_transfer_to_private` first. + /// The `transfer_preparer_storage_slot_commitment` has to be computed off-chain the same way as was done + /// in the preparation call. + #[public] + fn finalize_transfer_to_private( + token_id: Field, + transfer_preparer_storage_slot_commitment: Field + ) { + // We don't need to support authwit here because `prepare_transfer_to_private` allows us to set arbitrary + // `from` and `from` will always be the msg sender here. + let from = context.msg_sender(); + let public_owners_storage = storage.public_owners.at(token_id); + assert(public_owners_storage.read().eq(from), "invalid NFT owner"); + + // Derive the slot from the transfer preparer storage slot commitment and the `from` address (declared + // as `from` in this function) + let hiding_point_slot = pedersen_hash( + [from.to_field(), transfer_preparer_storage_slot_commitment], + TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX + ); + + // Read the hiding point from "transient" storage and check it's not empty to ensure the transfer was prepared + let hiding_point: Point = context.storage_read(hiding_point_slot); + assert(!is_empty(hiding_point), "transfer not prepared"); + + // Set the public NFT owner to zero + public_owners_storage.write(AztecAddress::zero()); + + // Finalize the partial note with the `token_id` + let finalization_payload = NFTNote::finalization_payload().new(hiding_point, token_id); + + // We insert the finalization note hash + context.push_note_hash(finalization_payload.note_hash); + + // We emit the `token_id` as unencrypted event such that the `NoteProcessor` can use it to reconstruct the note + context.emit_unencrypted_log(finalization_payload.log); + + // At last we reset public storage to zero to achieve the effect of transient storage - kernels will squash + // the writes + context.storage_write(hiding_point_slot, Point::empty()); + } + + /** + * Cancel a private authentication witness. + * @param inner_hash The inner hash of the authwit to cancel. + */ + #[private] + fn cancel_authwit(inner_hash: Field) { + let on_behalf_of = context.msg_sender(); + let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash); + context.push_nullifier(nullifier); + } + + #[private] + fn transfer_in_private(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { + if (!from.eq(context.msg_sender())) { + assert_current_call_valid_authwit(&mut context, from); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let nfts = storage.private_nfts; + + let notes = nfts.at(from).pop_notes( + NoteGetterOptions::new().select(NFTNote::properties().token_id, Comparator.EQ, token_id).set_limit(1) + ); + assert(notes.len() == 1, "NFT not found when transferring"); + + let from_ovpk_m = get_public_keys(from).ovpk_m; + let to_keys = get_public_keys(to); + + let mut new_note = NFTNote::new(token_id, to_keys.npk_m.hash()); + nfts.at(to).insert(&mut new_note).emit(encode_and_encrypt_note(&mut context, from_ovpk_m, to_keys.ivpk_m, to)); + } + + #[private] + fn transfer_to_public(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { + if (!from.eq(context.msg_sender())) { + assert_current_call_valid_authwit(&mut context, from); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let notes = storage.private_nfts.at(from).pop_notes( + NoteGetterOptions::new().select(NFTNote::properties().token_id, Comparator.EQ, token_id).set_limit(1) + ); + assert(notes.len() == 1, "NFT not found when transferring to public"); + + NFT::at(context.this_address())._finish_transfer_to_public(to, token_id).enqueue(&mut context); + } + + #[public] + #[internal] + fn _finish_transfer_to_public(to: AztecAddress, token_id: Field) { + storage.public_owners.at(token_id).write(to); + } + + // Returns zero address when the token does not have a public owner. Reverts if the token does not exist. + #[public] + #[view] + fn owner_of(token_id: Field) -> AztecAddress { + assert(storage.nft_exists.at(token_id).read(), "token does not exist"); + storage.public_owners.at(token_id).read() + } + + /// Returns an array of token IDs owned by `owner` in private and a flag indicating whether a page limit was + /// reached. Starts getting the notes from page with index `page_index`. Zero values in the array are placeholder + /// values for non-existing notes. + unconstrained fn get_private_nfts(owner: AztecAddress, page_index: u32) -> pub ([Field; MAX_NOTES_PER_PAGE], bool) { + let offset = page_index * MAX_NOTES_PER_PAGE; + let mut options = NoteViewerOptions::new(); + let notes = storage.private_nfts.at(owner).view_notes(options.set_offset(offset)); + + let mut owned_nft_ids = [0; MAX_NOTES_PER_PAGE]; + for i in 0..options.limit { + if i < notes.len() { + owned_nft_ids[i] = notes.get_unchecked(i).token_id; + } + } + + let page_limit_reached = notes.len() == options.limit; + (owned_nft_ids, page_limit_reached) + } +} \ No newline at end of file diff --git a/phantom-gate/index.html b/phantom-gate/index.html new file mode 100644 index 000000000..c7a07f771 --- /dev/null +++ b/phantom-gate/index.html @@ -0,0 +1,15 @@ + + + + + + + Aztec Starter + + + +
+ + + + \ No newline at end of file diff --git a/phantom-gate/package.json b/phantom-gate/package.json new file mode 100644 index 000000000..a35882588 --- /dev/null +++ b/phantom-gate/package.json @@ -0,0 +1,40 @@ +{ + "name": "phantom-gate", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "clean": "rm -rf node_modules/.vite dist", + "postinstall": "patch-package" + }, + "devDependencies": { + "@types/node": "^22.3.0", + "@types/react": "^18.3.4", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "patch-package": "^8.0.0", + "postcss": "^8.4.41", + "postinstall-postinstall": "^2.1.0", + "tailwindcss": "^3.4.10", + "typescript": "^5.5.3", + "vite": "^5.4.0" + }, + "dependencies": { + "@aztec/accounts": "^0.57.0", + "@aztec/aztec.js": "^0.57.0", + "@aztec/circuits.js": "^0.57.0", + "@aztec/noir-contracts.js": "^0.57.0", + "buffer": "^6.0.3", + "lucide-react": "^0.439.0", + "node-stdlib-browser": "^1.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-hot-toast": "^2.4.1", + "vite-plugin-node-polyfills": "^0.22.0", + "vite-plugin-resolve": "^2.5.2" + } +} diff --git a/phantom-gate/patches/@aztec+circuits.js+0.48.0.patch b/phantom-gate/patches/@aztec+circuits.js+0.48.0.patch new file mode 100644 index 000000000..f1c79ee24 --- /dev/null +++ b/phantom-gate/patches/@aztec+circuits.js+0.48.0.patch @@ -0,0 +1,21 @@ +diff --git a/node_modules/@aztec/circuits.js/dest/scripts/constants.in.js b/node_modules/@aztec/circuits.js/dest/scripts/constants.in.js +index 9d33833..e7e2a80 100644 +--- a/node_modules/@aztec/circuits.js/dest/scripts/constants.in.js ++++ b/node_modules/@aztec/circuits.js/dest/scripts/constants.in.js +@@ -1,4 +1,4 @@ +-import * as fs from 'fs'; ++// import * as fs from 'fs'; + import { dirname, join } from 'path'; + import { fileURLToPath } from 'url'; + const NOIR_CONSTANTS_FILE = '../../../../noir-projects/noir-protocol-circuits/crates/types/src/constants.nr'; +diff --git a/node_modules/@aztec/circuits.js/dest/structs/client_ivc_proof.js b/node_modules/@aztec/circuits.js/dest/structs/client_ivc_proof.js +index 813f31d..542e895 100644 +--- a/node_modules/@aztec/circuits.js/dest/structs/client_ivc_proof.js ++++ b/node_modules/@aztec/circuits.js/dest/structs/client_ivc_proof.js +@@ -1,5 +1,5 @@ + import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; +-import * as fs from 'fs/promises'; ++// import * as fs from 'fs/promises'; + import path from 'path'; + /** + * TODO(https://github.com/AztecProtocol/aztec-packages/issues/7370) refactory this to diff --git a/phantom-gate/postcss.config.js b/phantom-gate/postcss.config.js new file mode 100644 index 000000000..2e7af2b7f --- /dev/null +++ b/phantom-gate/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/phantom-gate/src/App.tsx b/phantom-gate/src/App.tsx new file mode 100644 index 000000000..afd3fc6d2 --- /dev/null +++ b/phantom-gate/src/App.tsx @@ -0,0 +1,34 @@ +import React, { useEffect, useState } from 'react' +import { createPXEClient, waitForPXE } from '@aztec/aztec.js' +import { WalletInteractions } from './components/WalletInteractions.js' +import { RPC_URL } from './constants.js' +import { Toaster } from 'react-hot-toast' + +function App() { + // const setPXEClient = useSetAtom(pxeAtom) + const [isLoading, setIsLoading] = useState(false) + const [errorMessage, setErrorMessage] = useState('') + useEffect(() => { + setErrorMessage('') + setIsLoading(true) + const pxeClient = createPXEClient(RPC_URL) + waitForPXE(pxeClient) + // .then((_) => setPXEClient(pxeClient)) + .catch((error) => { + setErrorMessage(error.toString()) + }) + .finally(() => { + setIsLoading(false) + }) + }, []) + return ( +
+ {isLoading &&

Loading ....

} + {errorMessage &&

{errorMessage}

} + {!isLoading && !errorMessage && } + +
+ ) +} + +export default App \ No newline at end of file diff --git a/phantom-gate/src/artifacts/Counter.ts b/phantom-gate/src/artifacts/Counter.ts new file mode 100644 index 000000000..f4cf4545b --- /dev/null +++ b/phantom-gate/src/artifacts/Counter.ts @@ -0,0 +1,154 @@ +/* Autogenerated file, do not edit! */ + +/* eslint-disable */ +import { + AztecAddress, + AztecAddressLike, Contract, + ContractArtifact, + ContractBase, + ContractFunctionInteraction, + ContractInstanceWithAddress, + ContractMethod, + ContractStorageLayout, + ContractNotes, + DeployMethod, FieldLike, + Fr, loadContractArtifact, + NoirCompiledContract, + NoteSelector, Wallet +} from '@aztec/aztec.js' +import CounterContractArtifactJson from '../../contracts/counter/target/counter-Counter.json' assert { type: 'json' } +export const CounterContractArtifact = loadContractArtifact( + CounterContractArtifactJson as NoirCompiledContract +) + +/** + * Type-safe interface for contract Counter; + */ +export class CounterContract extends ContractBase { + private constructor(instance: ContractInstanceWithAddress, wallet: Wallet) { + super(instance, CounterContractArtifact, wallet) + } + + /** + * Creates a contract instance. + * @param address - The deployed contract's address. + * @param wallet - The wallet to use when interacting with the contract. + * @returns A promise that resolves to a new Contract instance. + */ + public static async at(address: AztecAddress, wallet: Wallet) { + return Contract.at(address, CounterContract.artifact, wallet) as Promise + } + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy( + wallet: Wallet, + // headstart: bigint | number, + // owner: AztecAddressLike, + // outgoing_viewer: AztecAddressLike + ) { + return new DeployMethod( + Fr.ZERO, + wallet, + CounterContractArtifact, + CounterContract.at, + Array.from(arguments).slice(1) + ) + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeysHash( + publicKeysHash: Fr, + wallet: Wallet, + // headstart: bigint | number, + // owner: AztecAddressLike, + // outgoing_viewer: AztecAddressLike + ) { + return new DeployMethod( + publicKeysHash, + wallet, + CounterContractArtifact, + CounterContract.at, + Array.from(arguments).slice(2) + ) + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeysHash?: Fr; method?: M; wallet: Wallet }, + // ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeysHash ?? Fr.ZERO, + opts.wallet, + CounterContractArtifact, + CounterContract.at, + Array.from(arguments).slice(1), + opts.method as string | any | undefined ?? 'constructor' + ) + } + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return CounterContractArtifact + } + + public static get storage(): ContractStorageLayout<'counters'> { + return { + counters: { + slot: new Fr(1n), + }, + } as ContractStorageLayout<'counters'> + } + + public static get notes(): ContractNotes<'ValueNote'> { + return { + ValueNote: { + id: new NoteSelector(1900156023), + }, + } as ContractNotes<'ValueNote'> + } + + /** Type-safe wrappers for the public methods exposed by the contract. */ +// @ts-ignore +// eslint-disable-next-line + public override methods!: { + [x: string]: any + /** increment(owner: struct, outgoing_viewer: struct) */ + increment: (( + owner: AztecAddressLike, + outgoing_viewer: AztecAddressLike + ) => ContractFunctionInteraction) & + Pick + + /** initialize(headstart: integer, owner: struct, outgoing_viewer: struct) */ + initialize: (( + headstart: bigint | number, + owner: AztecAddressLike, + outgoing_viewer: AztecAddressLike + ) => ContractFunctionInteraction) & + Pick + + /** get_counter(owner: struct) */ + get_counter: ((owner: AztecAddressLike) => ContractFunctionInteraction) & + Pick + + /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ + compute_note_hash_and_optionally_a_nullifier: (( + contract_address: AztecAddressLike, + nonce: FieldLike, + storage_slot: FieldLike, + note_type_id: FieldLike, + compute_nullifier: boolean, + serialized_note: FieldLike[] + ) => ContractFunctionInteraction) & + Pick + } +} diff --git a/phantom-gate/src/artifacts/SchnorrAccount.ts b/phantom-gate/src/artifacts/SchnorrAccount.ts new file mode 100644 index 000000000..d87ac96b5 --- /dev/null +++ b/phantom-gate/src/artifacts/SchnorrAccount.ts @@ -0,0 +1,140 @@ + +/* Autogenerated file, do not edit! */ + +/* eslint-disable */ +import { + AztecAddress, + AztecAddressLike, Contract, + ContractArtifact, + ContractBase, + ContractFunctionInteraction, + ContractInstanceWithAddress, + ContractMethod, + ContractStorageLayout, + ContractNotes, + DeployMethod, FieldLike, + Fr, + FunctionSelectorLike, loadContractArtifact, + NoirCompiledContract, + NoteSelector, Wallet +} from '@aztec/aztec.js'; +import SchnorrAccountContractArtifactJson from '../../contracts/account/target/account-SchnorrAccount.json' assert { type: 'json' }; + export const SchnorrAccountContractArtifact = loadContractArtifact(SchnorrAccountContractArtifactJson as NoirCompiledContract); + + + + /** + * Type-safe interface for contract SchnorrAccount; + */ + export class SchnorrAccountContract extends ContractBase { + + private constructor( + instance: ContractInstanceWithAddress, + wallet: Wallet, + ) { + super(instance, SchnorrAccountContractArtifact, wallet); + } + + + + /** + * Creates a contract instance. + * @param address - The deployed contract's address. + * @param wallet - The wallet to use when interacting with the contract. + * @returns A promise that resolves to a new Contract instance. + */ + public static async at( + address: AztecAddress, + wallet: Wallet, + ) { + return Contract.at(address, SchnorrAccountContract.artifact, wallet) as Promise; + } + + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy(wallet: Wallet, + // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike + ) { + return new DeployMethod(Fr.ZERO, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeysHash(publicKeysHash: Fr, wallet: Wallet, + // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike + ) { + return new DeployMethod(publicKeysHash, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeysHash?: Fr; method?: M; wallet: Wallet }, + // ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeysHash ?? Fr.ZERO, + opts.wallet, + SchnorrAccountContractArtifact, + SchnorrAccountContract.at, + Array.from(arguments).slice(1), + opts.method ?? 'constructor', + ); + } + + + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return SchnorrAccountContractArtifact; + } + + + public static get storage(): ContractStorageLayout<'signing_public_key'> { + return { + signing_public_key: { + slot: new Fr(1n), + } + } as ContractStorageLayout<'signing_public_key'>; + } + + + public static get notes(): ContractNotes<'PublicKeyNote'> { + return { + PublicKeyNote: { + id: new NoteSelector(2866150763), + } + } as ContractNotes<'PublicKeyNote'>; + } + + + /** Type-safe wrappers for the public methods exposed by the contract. */ + // @ts-ignore + // eslint-disable-next-line + public override methods!: { + + /** constructor(signing_pub_key_x: field, signing_pub_key_y: field) */ + constructor: ((signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike) => ContractFunctionInteraction) & Pick; + + /** lookup_validity(consumer: struct, inner_hash: field) */ + lookup_validity: ((consumer: AztecAddressLike, inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; + + /** entrypoint(app_payload: struct, fee_payload: struct) */ + entrypoint: ((app_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike }, fee_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike, is_fee_payer: boolean }) => ContractFunctionInteraction) & Pick; + + /** verify_private_authwit(inner_hash: field) */ + verify_private_authwit: ((inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; + + /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ + compute_note_hash_and_optionally_a_nullifier: ((contract_address: AztecAddressLike, nonce: FieldLike, storage_slot: FieldLike, note_type_id: FieldLike, compute_nullifier: boolean, serialized_note: FieldLike[]) => ContractFunctionInteraction) & Pick; + }; + + + } + \ No newline at end of file diff --git a/phantom-gate/src/components/WalletInformation.tsx b/phantom-gate/src/components/WalletInformation.tsx new file mode 100644 index 000000000..d95579e05 --- /dev/null +++ b/phantom-gate/src/components/WalletInformation.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { AccountWalletWithSecretKey, Contract } from '@aztec/aztec.js'; + +interface WalletInformationProps { + currentWallet: AccountWalletWithSecretKey | null; + tokenContract: Contract | null; + transactionStatus: string; +} + +const WalletInformation: React.FC = ({ currentWallet, tokenContract, transactionStatus }) => { + return ( + // add some height + +
+

Wallet Information

+ {currentWallet ? ( +

Current Wallet Address: {currentWallet.getAddress().toString()}

+ ) : ( +

No wallet selected

+ )} + {tokenContract ? ( +

Deployed Token Address: {tokenContract.address.toString()}

+ ) : ( +

No token deployed

+ )} + {transactionStatus && ( +

{transactionStatus}

+ )} +
+ ); +}; + +export default WalletInformation; diff --git a/phantom-gate/src/components/WalletInteractions.tsx b/phantom-gate/src/components/WalletInteractions.tsx new file mode 100644 index 000000000..6b91237e5 --- /dev/null +++ b/phantom-gate/src/components/WalletInteractions.tsx @@ -0,0 +1,455 @@ +import React, { useState, useEffect } from 'react'; +import { AccountWalletWithSecretKey, AztecAddress, computeSecretHash, Contract, ExtendedNote, Fr, Note } from '@aztec/aztec.js'; +import { TokenContract } from '@aztec/noir-contracts.js'; +import { useAccount } from '../hooks/useAccounts.js'; +import { Bell, Search, Loader } from 'lucide-react'; +import { toast } from 'react-hot-toast'; +import WalletSection from './walletSelection.js'; + +const TokenRow = ({ token, onSelect }: { token: any, onSelect: any }) => ( + onSelect(token)}> + + {token.name} +
+
{token.symbol}
+
{token.name}
+
+ + {token.portfolio}% + +
${token.price.toFixed(2)}
+
= 0 ? 'text-green-500' : 'text-red-500'}`}> + {token.priceChange >= 0 ? '+' : ''}{token.priceChange.toFixed(2)}% +
+ + +
${token.balance.toFixed(2)}
+
{token.amount} {token.symbol}
+ + +); + +export const WalletInteractions = () => { + const { deployToken, deployNFtToken } = useAccount(); + const [wallets, setWallets] = useState([]); + const [currentWallet, setCurrentWallet] = useState(null); + const [isLoading, setIsLoading] = useState<{ + checkBalancePublic: boolean | undefined; + checkBalancePrivate: boolean | undefined; + createAccount?: boolean, + deployToken?: boolean, + mintPublic?: boolean, + mintPrivate?: boolean, + transferPublic?: boolean, + transferPrivate?: boolean, + deployNFTToken?: boolean, + movingPublic?: boolean, + movingPrivate?: boolean, + }>({ + checkBalancePublic: undefined, + checkBalancePrivate: undefined, + createAccount: false, + deployToken: false, + mintPublic: false, + mintPrivate: false, + transferPublic: false, + transferPrivate: false, + }); + const [tokenContract, setTokenContract] = useState(null); + const [recipientAddress, setRecipientAddress] = useState(''); + const [transferAmount, setTransferAmount] = useState(0); + const [transactionStatus, setTransactionStatus] = useState(''); + const [tokens, setTokens] = useState<{ id: number; name: string; symbol: string; logo: string; portfolio: number; price: number; priceChange: number; balance: number; amount: number; }[]>([]); + const [, setSelectedToken] = useState(null); + const [tab, setTab] = useState('Tokens'); + const [deployTokenAddress, setDeployTokenAddress] = useState(''); + const [deployNFTTokenAddress, setDeployNFTTokenAddress] = useState(''); + + useEffect(() => { + // Simulated token data + setTokens([ + { id: 1, name: 'USD Coin', symbol: 'USDC', logo: '/usdc-logo.svg', portfolio: 81.09, price: 1.00, priceChange: -0.14, balance: 279.73, amount: 280.0713 }, + { id: 2, name: 'Dai Stablecoin', symbol: 'DAI', logo: '/dai-logo.svg', portfolio: 15.44, price: 1.00, priceChange: -0.11, balance: 53.26, amount: 53.3194 }, + { id: 3, name: 'Ether', symbol: 'ETH', logo: '/eth-logo.svg', portfolio: 3.48, price: 2323.93, priceChange: -1.03, balance: 11.99, amount: 0.0052 }, + ]); + }, []); + + + const handleDeployToken = async () => { + if (!currentWallet) { + toast.error('Please select a wallet first'); + return; + } + setIsLoading({ ...isLoading, deployToken: true }); + try { + const contract = await deployToken(currentWallet); + setTokenContract(contract); + console.log('Token deployed at:', contract.address.toString()); + setDeployTokenAddress(contract.address.toString()); + toast.success('Token deployed successfully!'); + } catch (error) { + toast.error('Failed to deploy token: ' + (error as Error).message); + } finally { + setIsLoading({ ...isLoading, deployToken: false }); + } + }; + + const handleDeplyNftToken = async () => { + if (!currentWallet) { + toast.error('Please select a wallet first'); + return; + } + setIsLoading({ ...isLoading, deployNFTToken: true }); + try { + const nftContract = await deployNFtToken(currentWallet); + console.log('NFT Token deployed at:', nftContract.address.toString()); + setDeployNFTTokenAddress(nftContract.address.toString()); + toast.success('NFT Token deployed successfully!'); + } catch (error) { + toast.error('Failed to deploy token: ' + (error as Error).message); + } finally { + setIsLoading({ ...isLoading, deployNFTToken: false }); + } + } + + const handleMint = async (isPublic: boolean) => { + if (!tokenContract || !currentWallet) { + toast.error('Please deploy a token and select a wallet first'); + return; + } + setIsLoading({ ...isLoading, [isPublic ? 'mintPublic' : 'mintPrivate']: true }); + try { + let tx; + if (isPublic) { + tx = await tokenContract.methods.mint_public(currentWallet.getAddress(), 100n).send(); + } else { + const random = Fr.random(); + const secretHash = await computeSecretHash(random); + tx = await tokenContract.methods.mint_private(100n, secretHash).send(); + const receipt = await tx.wait() + const note = new Note([new Fr(100n), secretHash]) + const extendedNote = new ExtendedNote( + note, + currentWallet.getAddress(), + tokenContract.address, + TokenContract.storage.pending_shields.slot, + TokenContract.notes.TransparentNote.id, + receipt.txHash + ) + await currentWallet.addNote(extendedNote) + tx = await tokenContract.methods + .redeem_shield(currentWallet.getAddress(), 100n, random) + .send() + } + const receipt = await tx.wait(); + setTransactionStatus(`${receipt.status}`); + toast.success(`${isPublic ? 'Public' : 'Private'} minting successful!`); + } catch (error) { + toast.error(`Failed to mint ${isPublic ? 'public' : 'private'}: ${String(error)}`); + } finally { + setIsLoading({ ...isLoading, [isPublic ? 'mintPublic' : 'mintPrivate']: false }); + } + }; + const checkBalance = async (isPublic = true) => { + if (!tokenContract || !currentWallet) { + console.error('No contract or wallet address found'); + return; + } + + try { + const method = isPublic ? 'balance_of_public' : 'balance_of_private'; + const balance = await tokenContract.methods[method](currentWallet.getAddress()).simulate(); + + toast.success( + `${isPublic ? 'Public' : 'Private'} Balance of address ${currentWallet.getAddress().toShortString()}: ${balance}` + ); + } catch (error) { + console.error('Error checking balance:', error); + toast.error(`Error checking ${isPublic ? 'public' : 'private'} balance: ${(error as Error).message}`); + } + }; + + const handleTransfer = async (isPublic: boolean) => { + if (!tokenContract || !currentWallet || !recipientAddress || transferAmount <= 0) { + toast.error('Please fill in all transfer details'); + return; + } + setIsLoading({ ...isLoading, [isPublic ? 'transferPublic' : 'transferPrivate']: true }); + try { + let tx; + if (isPublic) { + tx = await tokenContract.methods + .transfer_public( + currentWallet.getAddress(), + recipientAddress, + BigInt(transferAmount), + BigInt(0) + ) + .send(); + } else { + tx = (await TokenContract.at(tokenContract.address, currentWallet)).methods + .transfer(recipientAddress as any as AztecAddress, transferAmount) + .send() + } + const receipt = await tx.wait(); + setTransactionStatus(`${receipt.status}`); + toast.success(`${isPublic ? 'Public' : 'Private'} transfer successful!`); + } catch (error) { + toast.error(`Failed to transfer ${isPublic ? 'public' : 'private'}: ` + (error as Error).message); + } finally { + setIsLoading({ ...isLoading, [isPublic ? 'transferPublic' : 'transferPrivate']: false }); + } + }; + + const handleMovingTokens = async (isPublic = true) => { + if (!recipientAddress || transferAmount === 0 || !tokenContract || !currentWallet) { + return toast.error('Invalid call: Please check recipient address, transfer amount, and contract/wallet availability.'); + } + + try { + setIsLoading({ ...isLoading, [isPublic ? 'movingPublic' : 'movingPrivate']: true }); + + let tx; + if (isPublic) { + tx = await tokenContract.methods + .unshield( + currentWallet.getAddress(), + recipientAddress, + BigInt(transferAmount), + BigInt(0) + ) + .send(); + } else { + const random = Fr.random(); + const secretHash = await computeSecretHash(random); + tx = await tokenContract.methods + .shield( + currentWallet.getAddress(), + BigInt(transferAmount), + secretHash, + BigInt(0) + ) + .send(); + } + + const receipt = await tx.wait(); + setTransactionStatus(`${receipt.status}`); + toast.success(`${isPublic ? 'Public' : 'Private'} token move successful!`); + } catch (e: any) { + toast.error(`Error moving ${isPublic ? 'public' : 'private'} tokens: ${e.message}`); + } finally { + setIsLoading({ ...isLoading, [isPublic ? 'movingPublic' : 'movingPrivate']: false }); + } + return; + }; + const onSelecTab = (tab: string) => { + setTab(tab); + console.log(tab); + } + return ( +
+
+
+ {/* Logo */} +

+ AzGuard Wallet +

+
+
+
+ + +
+ + +
+
+ +
+
+ +
+

Decentralized accounts

+
+ $344.98 + -$0.57 (-0.16%) +
+
+ {/* {['Buy', 'Swap', 'Bridge', 'Send', 'Sell', 'Stake'].map((action) => ( + + ))} */} +
+
+ {['Tokens', 'NFTs', 'DeFi', 'Transactions', 'Spending Caps'].map((tabAction) => ( + + ))} +
+
+ {tab === 'Tokens' && ( +
+

Wallet Actions

+ {/* */} +
+ +
+ +
+ + + + + +
+ + +
+ setRecipientAddress(e.target.value)} + placeholder="Enter Recipient Address" + className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" + /> + setTransferAmount(+e.target.value)} + placeholder="Transfer Amount" + className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" + /> +
+ + + + +
+ +
+
)} + {tab === 'Transactions' &&
+

Transactions

+
+ Deployed Token Address: + {deployTokenAddress} +
+
+ Transaction Status: + {transactionStatus} +
+
+ Deployed NFT Token Address: + {deployNFTTokenAddress} +
+
} + +
+ + + + + + +
+

Token List

+ + + + + + + + + + + {tokens.map((token) => ( + + ))} + +
TokenPortfolio %Price (24hr) + Balance
+
+
+
+ ); +} + +export default WalletInteractions; +// export const WalletInteractions = () => { \ No newline at end of file diff --git a/phantom-gate/src/components/spinner.tsx b/phantom-gate/src/components/spinner.tsx new file mode 100644 index 000000000..6c252754e --- /dev/null +++ b/phantom-gate/src/components/spinner.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +export const Spinner = () => { + return ( +
+
+
+
+
+
+ ); +}; diff --git a/phantom-gate/src/components/walletSelection.tsx b/phantom-gate/src/components/walletSelection.tsx new file mode 100644 index 000000000..a3cf9620a --- /dev/null +++ b/phantom-gate/src/components/walletSelection.tsx @@ -0,0 +1,77 @@ +import { Copy, Loader, PlusCircle } from 'lucide-react'; +import React from 'react'; +import { useState } from 'react'; +import { toast } from 'react-hot-toast'; +import { useAccount } from '../hooks/useAccounts.js'; + +export const WalletSection = ({ wallets, setWallets, setCurrentWallet }: { wallets: any[], setWallets: any, setCurrentWallet: any }) => { + const { createCustomAccount } = useAccount(); + const [selectedWallet, setSelectedWallet] = useState(null); + const [isLoading, setIsLoading] = useState({ createWallet: false }); + + const handleCreateWallet = async () => { + setIsLoading({ ...isLoading, createWallet: true }); + try { + const newWallet = await createCustomAccount(); + if (newWallet) { + setWallets((prevWallets: any) => [...prevWallets, newWallet]); + setCurrentWallet(newWallet); // Automatically set the created wallet as the current one + setSelectedWallet(newWallet); // Set it as the selected wallet + toast.success('Wallet created successfully'); + } + setIsLoading({ ...isLoading, createWallet: false }); + } catch (error) { + setIsLoading({ ...isLoading, createWallet: false }); + toast.error('Error creating wallet: ' + (error as Error).message); + } + }; + + const handleCopyAddress = (address: any) => { + navigator.clipboard.writeText(address); + toast.success('Address copied to clipboard'); + }; + + const handleSelectWallet = (wallet: any) => { + setCurrentWallet(wallet); + setSelectedWallet(wallet); + }; + + return ( +
+ {wallets.length > 0 ? ( +
+ + {selectedWallet && } +
+ ) : ( +
Wallet
+ )} + +
+ {isLoading.createWallet ? : null}
+
+ ); +}; + +export default WalletSection; diff --git a/phantom-gate/src/constants.tsx b/phantom-gate/src/constants.tsx new file mode 100644 index 000000000..c7069bf5c --- /dev/null +++ b/phantom-gate/src/constants.tsx @@ -0,0 +1,6 @@ +export const RPC_URL = 'http://localhost:8080' +export const CREATE_ACCOUNT_DEFAULT_PARAMS = { + type: 'schnorr', + wait: true, + rpcUrl: RPC_URL, +} \ No newline at end of file diff --git a/phantom-gate/src/helpers/AccountContract.ts b/phantom-gate/src/helpers/AccountContract.ts new file mode 100644 index 000000000..86a4d2394 --- /dev/null +++ b/phantom-gate/src/helpers/AccountContract.ts @@ -0,0 +1,32 @@ +import { DefaultAccountContract } from "@aztec/accounts/defaults"; +import { AuthWitnessProvider, AuthWitness, ContractArtifact } from "@aztec/aztec.js"; +import { CompleteAddress, GrumpkinScalar } from "@aztec/circuits.js"; +import { Fr } from "@aztec/circuits.js"; +import { Schnorr } from "@aztec/circuits.js/barretenberg"; +import { SchnorrAccountContractArtifact } from '../artifacts/SchnorrAccount.js'; + + +export class SchnorrAccountContract extends DefaultAccountContract { + constructor(private signingPrivateKey: GrumpkinScalar) { + super(SchnorrAccountContractArtifact as ContractArtifact); + } + getDeploymentArgs() { + const signingPublicKey = new Schnorr().computePublicKey(this.signingPrivateKey); + return [signingPublicKey.x, signingPublicKey.y]; + } + + getAuthWitnessProvider(_address: CompleteAddress): AuthWitnessProvider { + return new SchnorrAuthWitnessProvider(this.signingPrivateKey); + } +} + +/** Creates auth witnesses using Schnorr signatures. */ +class SchnorrAuthWitnessProvider implements AuthWitnessProvider { + constructor(private signingPrivateKey: GrumpkinScalar) { } + + createAuthWit(messageHash: Fr): Promise { + const schnorr = new Schnorr(); + const signature = schnorr.constructSignature(messageHash.toBuffer(), this.signingPrivateKey).toBuffer(); + return Promise.resolve(new AuthWitness(messageHash, [...signature])); + } +} diff --git a/phantom-gate/src/helpers/setup.tsx b/phantom-gate/src/helpers/setup.tsx new file mode 100644 index 000000000..33acbe7b5 --- /dev/null +++ b/phantom-gate/src/helpers/setup.tsx @@ -0,0 +1,132 @@ +import { + Fr, waitForPXE, createPXEClient, GrumpkinScalar, + Contract, + computeSecretHash +} from '@aztec/aztec.js' +import { getDeployedTestAccountsWallets } from '@aztec/accounts/testing' +import { getSchnorrAccount } from '@aztec/accounts/schnorr' + +import { CounterContract } from '../artifacts/Counter.js' +import { TokenContract, TokenContractArtifact } from '@aztec/noir-contracts.js' + +const PXE_URL = 'http://localhost:8080' + +export const getPXEClient = async () => { + const pxe = createPXEClient(PXE_URL) + await waitForPXE(pxe) + return pxe +} + +try { + console.log(process.env) + let pxe = await getPXEClient() + let accounts = await pxe.getRegisteredAccounts() + console.log(accounts) + //let number = await pxe.getBlockNumber() + console.log(await pxe.getBlockNumber()) +} catch (e) { + console.log(e) +} + +export async function interactWithCounter() { + try { + const pxe = await getPXEClient() + await waitForPXE(pxe) + const nodeInfo = await pxe.getNodeInfo() + console.log('Aztec sandbox info 43', nodeInfo) + const accounts = await getDeployedTestAccountsWallets(pxe) + console.log('Accounts', accounts) + const aliceWallet = accounts[0] + const bobWallet = accounts[1] + const alice = aliceWallet.getAddress() + const bob = bobWallet.getAddress() + console.log(`Loaded alice's account at ${alice.toShortString()}`) + console.log(`Loaded bob's account at ${bob.toShortString()}`) + const contract = await CounterContract.deploy(bobWallet).send().deployed() + console.log(`Contract successfully deployed at address ${contract.address.toShortString()}`) + const counterContractbob = await CounterContract.at(contract.address, bobWallet) + await counterContractbob.methods.increment(bob, bob).send().wait() + await counterContractbob.methods.increment(bob, bob).send().wait() + await counterContractbob.methods.increment(bob, bob).send().wait() + await counterContractbob.methods.increment(bob, bob).send().wait() + await counterContractbob.methods.increment(bob, bob).send().wait() + await counterContractbob.methods.increment(bob, bob).send().wait() + const bobValue = await counterContractbob.methods.get_counter(bob).simulate() + console.log(`Bob's new counter ${bobValue}`) + } catch (e) { + console.error('Counter error', e) + } +} + +// async function deployContract() {} + +export async function createAccount() { + try{ + const secretKey = Fr.random(); + const signingPrivateKey = GrumpkinScalar.random(); + const pxe = createPXEClient(PXE_URL); + const wallet = await getSchnorrAccount(pxe, secretKey, signingPrivateKey).waitSetup(); + console.log('Account created', wallet.getAddress().toShortString()); + const deployedContract = await TokenContract.deploy( + wallet, // wallet instance + wallet.getAddress(), // account + 'TokenName', // constructor arg1 + 'TokenSymbol', // constructor arg2 + 18, + ) + .send() + .deployed(); + + const contract = await Contract.at(deployedContract.address, TokenContractArtifact, wallet); + console.log('Contract deployed', contract.address.toShortString(), contract.address.toString()); + + const previouseMint = await contract.methods.balance_of_public('0x06769c994821ec652de929077fcdb0acf41a748d276ad1bfc97fa86e0837fa17').simulate(); + const previousMint2 = await contract.methods.balance_of_private('0x06769c994821ec652de929077fcdb0acf41a748d276ad1bfc97fa86e0837fa17').simulate(); + console.log(`Balance of ${wallet.getAddress()}: ${previouseMint}`, previousMint2); + + const balance = await contract.methods.balance_of_public(wallet.getAddress()).simulate(); + const balance1 = await contract.methods.balance_of_private(wallet.getAddress()).simulate(); + console.log(`Balance of ${wallet.getAddress()}: ${balance}`, balance1); + + const secretHash = computeSecretHash(secretKey); + const receipt = await contract.methods.mint_private(BigInt(100), secretHash).send().wait(); + const receiptPublic = await contract.methods.mint_public(wallet.getAddress(),BigInt(100)).send().wait(); + console.log(`Successfully minted ${100} tokens. Transaction hash: ${receipt.txHash}, receiptPublic: ${receiptPublic.txHash}`); + const balanceMint = await contract.methods.balance_of_public(wallet.getAddress()).simulate(); + const balanceMint1 = await contract.methods.balance_of_private(wallet.getAddress()).simulate(); + console.log(`Balance of ${wallet.getAddress()}: ${balanceMint}`, balanceMint1); + + } + catch(e){ + console.error('Account error', e) + } +} + +export async function mintToken() { + try{ + console.log('minting token'); + const pxe = await getPXEClient() + await waitForPXE(pxe) + + + const account = await createAccount(); + console.log('New account created:', account); + const accounts = await getDeployedTestAccountsWallets(pxe) + console.log('Accounts', accounts) + const aliceWallet = accounts[0] + const bobWallet = accounts[1] + const alice = aliceWallet.getAddress() + const bob = bobWallet.getAddress() + console.log(`Loaded alice's account at ${alice.toShortString()}`) + console.log(`Loaded bob's account at ${bob.toShortString()}`) + const contract = await CounterContract.deploy(bobWallet).send().deployed() + console.log(`Contract successfully deployed at address ${contract.address.toShortString()}`) + + const tx =await contract.methods.claim_public(alice, 100,0,1).send().wait(); + // await tx.wait(); + console.log('Token minted', tx.getTxHash()); + } + catch(e){ + console.error('Mint error', e) + } +} \ No newline at end of file diff --git a/phantom-gate/src/hooks/useAccounts.ts b/phantom-gate/src/hooks/useAccounts.ts new file mode 100644 index 000000000..7b41e3984 --- /dev/null +++ b/phantom-gate/src/hooks/useAccounts.ts @@ -0,0 +1,75 @@ +import { getSchnorrAccount } from '@aztec/accounts/schnorr' +import { + AccountManager, + AccountWalletWithSecretKey, + Contract, + createPXEClient, + Fr, + GrumpkinScalar, waitForPXE +} from '@aztec/aztec.js' + +import { TokenContract, TokenContractArtifact, } from '@aztec/noir-contracts.js' +import { RPC_URL } from '../constants.js' +import { getPXEClient } from '../helpers/setup.js' +import { SchnorrAccountContract } from '../helpers/AccountContract.js' +import {NFTContract,NFTContractArtifact} from "@aztec/noir-contracts.js" +// import NFtcontract + +export const useAccount = () => {// const pxe = useAtomValue(pxeAtom) + const createAccount = async () => { + try { + const pxeClient = createPXEClient(RPC_URL) + await waitForPXE(pxeClient) + const secretKey = Fr.random() + const signingPrivateKey = GrumpkinScalar.random() + const wallet = await getSchnorrAccount(pxeClient!, secretKey, signingPrivateKey).waitSetup() + // const deployedContract = await wallet.deploy() + console.log('Account created', wallet.getAddress().toShortString()) + return wallet + } catch (e) { + console.error('Account error', e) + return null + } + } + + const deployToken = async (owner: AccountWalletWithSecretKey) => { + const ownerAddress = owner.getAddress() + const deployedContract = await TokenContract.deploy(owner, ownerAddress, 'TokenName', 'TKN', 18) + .send() + .deployed() + + const token = await Contract.at(deployedContract.address, TokenContractArtifact, owner) + return token + } + + const createCustomAccount = async () => { + try { + const secretKey = Fr.random(); + // const signingPrivateKey = Buffer.from('private key','hex'); + const pxe = await getPXEClient(); + + const account = new AccountManager(pxe, secretKey, new SchnorrAccountContract(GrumpkinScalar.random())); + const wallet = await account.waitSetup(); + const address = wallet.getCompleteAddress().address; + + console.log(`Account created at ${address}`); + return wallet + } + catch (e) { + console.error('Counter error', e) + } + return + } + const deployNFtToken = async (owner: AccountWalletWithSecretKey) => { + const ownerAddress = owner.getAddress() + const deployedContract = await NFTContract.deploy(owner, ownerAddress, 'Phantom', 'PHG') + .send() + .deployed() + + const nftToken = await Contract.at(deployedContract.address, NFTContractArtifact, owner) + return nftToken + } + + return { createAccount, deployToken, createCustomAccount, deployNFtToken } +} + diff --git a/phantom-gate/src/main.tsx b/phantom-gate/src/main.tsx new file mode 100644 index 000000000..18058ccc1 --- /dev/null +++ b/phantom-gate/src/main.tsx @@ -0,0 +1,13 @@ +import './style.css' + +import React from 'react' +import ReactDOM from 'react-dom/client' +// @ts-ignore +// eslint-disable-next-line +import App from './App.js' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + +) diff --git a/phantom-gate/src/style.css b/phantom-gate/src/style.css new file mode 100644 index 000000000..c71579bb9 --- /dev/null +++ b/phantom-gate/src/style.css @@ -0,0 +1,117 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.vanilla:hover { + filter: drop-shadow(0 0 2em #3178c6aa); +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +.animate-spin { + animation: spin 1s linear infinite; +} + +.animate-spin-fast { + animation: spin 0.6s linear infinite; +} + +.animate-spin-slow { + animation: spin 2s linear infinite; +} \ No newline at end of file diff --git a/phantom-gate/src/vite-env.d.ts b/phantom-gate/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/phantom-gate/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/phantom-gate/tailwind.config.js b/phantom-gate/tailwind.config.js new file mode 100644 index 000000000..89a305e02 --- /dev/null +++ b/phantom-gate/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} \ No newline at end of file diff --git a/phantom-gate/tsconfig.json b/phantom-gate/tsconfig.json new file mode 100644 index 000000000..23b557244 --- /dev/null +++ b/phantom-gate/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "jsx": "react", + "target": "ESNext", + "useDefineForClassFields": true, + "module": "NodeNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "NodeNext", + "strict": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "skipLibCheck": true + }, + "include": ["src"] +} diff --git a/phantom-gate/vite.config.ts b/phantom-gate/vite.config.ts new file mode 100644 index 000000000..a15d30eab --- /dev/null +++ b/phantom-gate/vite.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from 'vite' +import { nodePolyfills } from 'vite-plugin-node-polyfills' +import resolve from 'vite-plugin-resolve' +import react from '@vitejs/plugin-react' + +const aztecVersion = '0.51.0' + +export default defineConfig({ + plugins: [ + process.env.NODE_ENV === 'production' + ? /** @type {any} */ resolve({ + '@aztec/bb.js': `export * from "https://unpkg.com/@aztec/bb.js@${aztecVersion}/dest/browser/index.js"`, + }) + : undefined, + nodePolyfills(), + react(), + ], + build: { + target: 'esnext', + }, + optimizeDeps: { + esbuildOptions: { + target: 'esnext', + }, + }, +}) diff --git a/phantom-gate/yarn.lock b/phantom-gate/yarn.lock new file mode 100644 index 000000000..e4ef1a20a --- /dev/null +++ b/phantom-gate/yarn.lock @@ -0,0 +1,3822 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" + integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@aztec/accounts@^0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-0.57.0.tgz#ac6df18280a62e6cdb0639a387908005ca51843e" + integrity sha512-n+RdoaI5UUrGTdojGLlXtc81WfBLNLnTYOUv7o5P9G3MIn5skBT1ed6vkTCks3L/9rV/St+osl2eWavCKhaIqg== + dependencies: + "@aztec/aztec.js" "0.57.0" + "@aztec/circuit-types" "0.57.0" + "@aztec/circuits.js" "0.57.0" + "@aztec/entrypoints" "0.57.0" + "@aztec/ethereum" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/types" "0.57.0" + tslib "^2.4.0" + +"@aztec/aztec.js@0.57.0", "@aztec/aztec.js@^0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-0.57.0.tgz#46a2a94637eafcf972dc627f67817ace05dc9514" + integrity sha512-IywIWQEEdfiY7xQe3iUJXgKm8aV7isYXteouUmCz8OX1JRHzPb34TtMlu/Im91Ax+fiuadHRsILICKP7Y7vcbQ== + dependencies: + "@aztec/circuit-types" "0.57.0" + "@aztec/circuits.js" "0.57.0" + "@aztec/ethereum" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/l1-artifacts" "0.57.0" + "@aztec/protocol-contracts" "0.57.0" + "@aztec/types" "0.57.0" + axios "^1.7.2" + tslib "^2.4.0" + viem "^2.7.15" + +"@aztec/bb.js@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-0.57.0.tgz#0d3238aee14d0bd873e88405b577399595899354" + integrity sha512-6chgqPKfD21HCWkHLo/nsOAZ5t+IQh2jBqiVJZQazLO7UMZuTX5V6tFOCOpbbiroLriQqvB6D40+U6kRYGK0Ww== + dependencies: + comlink "^4.4.1" + commander "^10.0.1" + debug "^4.3.4" + tslib "^2.4.0" + +"@aztec/circuit-types@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/circuit-types/-/circuit-types-0.57.0.tgz#b20441c2b4a5da743877efc7a8f11ddc72564073" + integrity sha512-FDFrBhOlVr1PIuYYVKCYOM28/TBEGpFYkTZ3EGZEILgS9lh3eJajmNlLzBeohh67eYEapj8em2xKM2nzQrbF5Q== + dependencies: + "@aztec/circuits.js" "0.57.0" + "@aztec/ethereum" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/types" "0.57.0" + browserify-cipher "^1.0.1" + lodash.clonedeep "^4.5.0" + lodash.isequal "^4.5.0" + lodash.times "^4.3.2" + tslib "^2.5.0" + +"@aztec/circuits.js@0.57.0", "@aztec/circuits.js@^0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/circuits.js/-/circuits.js-0.57.0.tgz#1eb00dfdb158bf4b9f5cdbcc5f98d78cc055e017" + integrity sha512-cHY+35RyUcVIjR8itQuu0mHVkaXV9InkwNiHNW16m7+jAFXO0NLWXU5faleniWrpG/0hTnuFYfYzX5zzPj5mvA== + dependencies: + "@aztec/bb.js" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/types" "0.57.0" + eslint "^8.35.0" + lodash.chunk "^4.2.0" + tslib "^2.4.0" + +"@aztec/entrypoints@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-0.57.0.tgz#67bb1687ee6e4fe5a5a0348cc38cb09fc0cc8000" + integrity sha512-smu/u0RsOOGeo56gJ2ydMQogEoc/r4jWg/QAmheqnM47pClOrFrjhpWHxIIzAU6P7ZZzQCZeS1T1hyN2bRFdoA== + dependencies: + "@aztec/aztec.js" "0.57.0" + "@aztec/circuit-types" "0.57.0" + "@aztec/circuits.js" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/protocol-contracts" "0.57.0" + tslib "^2.4.0" + +"@aztec/ethereum@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-0.57.0.tgz#7564a30ae4fc65cc6f7f8c12f46be1be33301f51" + integrity sha512-uR7MGGmvUANW6RAHsVXfwVKMls27ko1WJIzenbcCXDEADU2OGvp+xLJ4OLiP7YSRCnbv/WDck+O3UTdtP5YOsQ== + dependencies: + "@aztec/foundation" "0.57.0" + dotenv "^16.0.3" + tslib "^2.4.0" + viem "^2.7.15" + +"@aztec/foundation@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-0.57.0.tgz#50cec5d06722fa5fc611fb5dd4898ef212f9e8b3" + integrity sha512-wgaluyOyG8zUmxohFIlrsPj1QmLGtkN68sbYvfcAO0bR3Bhy7jbtrkCc6I7mYkiZShg41Zlj+l/WReydzOCrZg== + dependencies: + "@aztec/bb.js" "0.57.0" + "@koa/cors" "^5.0.0" + "@noble/curves" "^1.2.0" + bn.js "^5.2.1" + debug "^4.3.4" + detect-node "^2.1.0" + elliptic "^6.5.4" + hash.js "^1.1.7" + koa "^2.14.2" + koa-bodyparser "^4.4.0" + koa-compress "^5.1.0" + koa-router "^12.0.0" + leveldown "^6.1.1" + levelup "^5.1.1" + lodash.chunk "^4.2.0" + lodash.clonedeepwith "^4.5.0" + memdown "^6.1.1" + pako "^2.1.0" + sha3 "^2.1.4" + zod "^3.22.4" + +"@aztec/l1-artifacts@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-0.57.0.tgz#8d346671ee933d69ac082211e269bb5a408ea2df" + integrity sha512-fZokAEZug2NnKXr/sWuwWlSr5BKTZcs5vm2RBu9FiV8dpsnRkyYVtaI6JXPZKeeApIh+oqHA2X0WUgxU67d67g== + dependencies: + tslib "^2.4.0" + +"@aztec/noir-contracts.js@^0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-0.57.0.tgz#7a7705a40755e4928e420cd13ba314e371d1e342" + integrity sha512-jOz+Ze1QZmRKf/tjLrXxRt5ZZTQ6b+yZ2rDptLh+pcShTKGmj6xPdkVUHKCBCVye3dxiML3vXbPNKFqlO/HfVA== + dependencies: + "@aztec/aztec.js" "0.57.0" + tslib "^2.4.0" + +"@aztec/protocol-contracts@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-0.57.0.tgz#1fc37470546f04bbf0dec23f01a714b7f2eced95" + integrity sha512-sSertpZyWIyBiFrfytpTFABiWNH5nYyyTnCmq84CsiUHBy47pTTeNmW+uqGB6o0lMtACwzKbS/YK58p7tPy7QA== + dependencies: + "@aztec/circuits.js" "0.57.0" + "@aztec/foundation" "0.57.0" + "@aztec/types" "0.57.0" + lodash.omit "^4.5.0" + tslib "^2.4.0" + +"@aztec/types@0.57.0": + version "0.57.0" + resolved "https://registry.yarnpkg.com/@aztec/types/-/types-0.57.0.tgz#c0ebcb0b1738cb3c0a1b2e9bef55366878363548" + integrity sha512-7PtIJFg0gwnl4+A02OHpyCsLdSXcskgVHrcOqusEcQ0IWI69q39fabBf6S82vgUrdvaAlynae2erz3PErHDdmQ== + dependencies: + "@aztec/ethereum" "0.57.0" + "@aztec/foundation" "0.57.0" + +"@babel/code-frame@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.9.tgz#895b6c7e04a7271a0cbfd575d2e8131751914cc7" + integrity sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ== + dependencies: + "@babel/highlight" "^7.25.9" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.9.tgz#24b01c5db6a3ebf85661b4fb4a946a9bccc72ac8" + integrity sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw== + +"@babel/core@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.9.tgz#855a4cddcec4158f3f7afadacdab2a7de8af7434" + integrity sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helpers" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.9.tgz#c7e828ebe0c2baba103b712924699c9e8a6e32f0" + integrity sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA== + dependencies: + "@babel/types" "^7.25.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.9.tgz#12e4fb2969197ef6d78ea8a2f24375ce85b425fb" + integrity sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-plugin-utils@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helpers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.9.tgz#9e26aa6fbefdbca4f8c8a1d66dc6f1c00ddadb0a" + integrity sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/highlight@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" + integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.9.tgz#8fcaa079ac7458facfddc5cd705cc8005e4d3817" + integrity sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/plugin-transform-react-jsx-self@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-jsx-source@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.9.tgz#620f35ea1f4233df529ec9a2668d2db26574deee" + integrity sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@hapi/bourne@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" + integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@koa/cors@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-5.0.0.tgz#0029b5f057fa0d0ae0e37dd2c89ece315a0daffd" + integrity sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw== + dependencies: + vary "^1.1.2" + +"@noble/curves@1.6.0", "@noble/curves@^1.2.0", "@noble/curves@^1.4.0", "@noble/curves@~1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== + dependencies: + "@noble/hashes" "1.5.0" + +"@noble/hashes@1.5.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@rollup/plugin-inject@^5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" + integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + estree-walker "^2.0.2" + magic-string "^0.30.3" + +"@rollup/pluginutils@^5.0.1": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@rollup/rollup-android-arm-eabi@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54" + integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== + +"@rollup/rollup-android-arm64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e" + integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== + +"@rollup/rollup-darwin-arm64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz#627007221b24b8cc3063703eee0b9177edf49c1f" + integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== + +"@rollup/rollup-darwin-x64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724" + integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb" + integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== + +"@rollup/rollup-linux-arm-musleabihf@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3" + integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== + +"@rollup/rollup-linux-arm64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496" + integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== + +"@rollup/rollup-linux-arm64-musl@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065" + integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d" + integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== + +"@rollup/rollup-linux-riscv64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983" + integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== + +"@rollup/rollup-linux-s390x-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58" + integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== + +"@rollup/rollup-linux-x64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b" + integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== + +"@rollup/rollup-linux-x64-musl@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127" + integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== + +"@rollup/rollup-win32-arm64-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5" + integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== + +"@rollup/rollup-win32-ia32-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2" + integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== + +"@rollup/rollup-win32-x64-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" + integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== + +"@scure/base@~1.1.7", "@scure/base@~1.1.8": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/bip32@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6" + integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw== + dependencies: + "@noble/curves" "~1.6.0" + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.7" + +"@scure/bip39@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" + integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== + dependencies: + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.8" + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/estree@1.0.6", "@types/estree@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/node@^22.3.0": + version "22.7.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.9.tgz#2bf2797b5e84702d8262ea2cf843c3c3c880d0e9" + integrity sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg== + dependencies: + undici-types "~6.19.2" + +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react-dom@^18.3.0": + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" + integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.3.4": + version "18.3.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60" + integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vitejs/plugin-react@^4.3.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz#28301ac6d7aaf20b73a418ee5c65b05519b4836c" + integrity sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA== + dependencies: + "@babel/core" "^7.25.2" + "@babel/plugin-transform-react-jsx-self" "^7.24.7" + "@babel/plugin-transform-react-jsx-source" "^7.24.7" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.2" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abitype@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" + integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== + +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +accepts@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3" + integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.20: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@^1.7.2: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-resolve@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== + dependencies: + resolve "^1.17.0" + +browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== + dependencies: + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" + integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.5" + hash-base "~3.0" + inherits "^2.0.4" + parse-asn1 "^5.1.7" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.23.3, browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytes@3.1.2, bytes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + +catering@^2.0.0, catering@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +co-body@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.2.0.tgz#afd776d60e5659f4eee862df83499698eb1aea1b" + integrity sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA== + dependencies: + "@hapi/bourne" "^3.0.0" + inflation "^2.0.0" + qs "^6.5.2" + raw-body "^2.3.3" + type-is "^1.6.16" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comlink@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981" + integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +compressible@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookies@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-ecdh@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" + integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== + dependencies: + browserify-cipher "^1.0.1" + browserify-sign "^4.2.3" + create-ecdh "^4.0.4" + create-hash "^1.2.0" + create-hmac "^1.1.7" + diffie-hellman "^5.0.3" + hash-base "~3.0.4" + inherits "^2.0.4" + pbkdf2 "^3.1.2" + public-encrypt "^4.0.3" + randombytes "^2.1.0" + randomfill "^1.0.4" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deferred-leveldown@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz#39802715fda6ec06d0159a8b28bd1c7e2b1cf0bf" + integrity sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg== + dependencies: + abstract-leveldown "^7.2.0" + inherits "^2.0.3" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-node@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diffie-hellman@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +domain-browser@^4.22.0: + version "4.23.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.23.0.tgz#427ebb91efcb070f05cffdfb8a4e9a6c25f8c94b" + integrity sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA== + +dotenv@^16.0.3: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.41: + version "1.5.45" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz#fa592ce6a88b44d23acbc7453a2feab98996e6c9" + integrity sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw== + +elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.5: + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.35.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +goober@^2.1.10: + version "2.1.16" + resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.16.tgz#7d548eb9b83ff0988d102be71f271ca8f9c82a95" + integrity sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-base@~3.0, hash-base@~3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@2.0.0, http-errors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@^1.6.3, http-errors@^1.8.1, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflation@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" + integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-timers-promises@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" + integrity sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ== + +isows@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" + integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + +koa-bodyparser@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz#a908d848e142cc57d9eece478e932bf00dce3029" + integrity sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w== + dependencies: + co-body "^6.0.0" + copy-to "^2.0.1" + type-is "^1.6.18" + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-compress@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/koa-compress/-/koa-compress-5.1.1.tgz#4f1599cfcaab23de1cd97d0a0ff9b5d05b0ffa52" + integrity sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg== + dependencies: + bytes "^3.1.2" + compressible "^2.0.18" + http-errors "^1.8.1" + koa-is-json "^1.0.0" + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-is-json@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" + integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== + +koa-router@^12.0.0: + version "12.0.1" + resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-12.0.1.tgz#a3c1c331032d442da786f0631d23e74d51b6882e" + integrity sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w== + dependencies: + debug "^4.3.4" + http-errors "^2.0.0" + koa-compose "^4.1.0" + methods "^1.1.2" + path-to-regexp "^6.2.1" + +koa@^2.14.2: + version "2.15.3" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.15.3.tgz#062809266ee75ce0c75f6510a005b0e38f8c519a" + integrity sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.9.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-errors@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-3.0.1.tgz#4bed48a33108cd83b0e39fdf9bbd84e96fbbef9f" + integrity sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ== + +level-iterator-stream@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz#85b3438e1b4c54ce5aa8c0eb973cfb628117df9e" + integrity sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +leveldown@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" + integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + +levelup@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-5.1.1.tgz#9f99699f414ac084a3f8a28fc262a1f49cd7a52c" + integrity sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg== + dependencies: + catering "^2.0.0" + deferred-leveldown "^7.0.0" + level-errors "^3.0.1" + level-iterator-stream "^5.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lib-esm@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/lib-esm/-/lib-esm-0.4.2.tgz#1f08ad1750b46c47d371d4f7e1a772b56db3324d" + integrity sha512-VGqaEGuryUbT7FLGxXg46nrSzkhLzyk+JQjYoYEORH5UtdIu3yf6DCOqh65FOR3bWOHHGINQH/vR5YGGIFBgJw== + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.clonedeepwith@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" + integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.omit@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== + +lodash.times@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.times/-/lodash.times-4.3.2.tgz#3e1f2565c431754d54ab57f2ed1741939285ca1d" + integrity sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +ltgt@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +lucide-react@^0.439.0: + version "0.439.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.439.0.tgz#eb9250e7255e56460ed37b68e807717c534395d6" + integrity sha512-PafSWvDTpxdtNEndS2HIHxcNAbd54OaqSYJO90/b63rab2HWYqDbH194j0i82ZFdWOAcf0AHinRykXRRK2PJbw== + +magic-string@^0.30.3: + version "0.30.12" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.12.tgz#9eb11c9d072b9bcb4940a5b2c2e1a217e4ee1a60" + integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memdown@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-6.1.1.tgz#ab52fae1a029affb40af60fda9d247a5733e4dc3" + integrity sha512-vh2RiuVrn6Vv73088C1KzLwy9+hhRwoZsgddYqIoVuFFrcoc2Rt+lq/KrmkFn6ulko7AtQ0AvqtYid35exb38A== + dependencies: + abstract-leveldown "^7.2.0" + buffer "^6.0.3" + functional-red-black-tree "^1.0.1" + inherits "^2.0.1" + ltgt "^2.2.0" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2": + version "1.53.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" + integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +node-gyp-build@^4.3.0: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +node-stdlib-browser@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-stdlib-browser/-/node-stdlib-browser-1.2.1.tgz#888fa104914af94143ca4d8a8980fe0ed242d2d1" + integrity sha512-dZezG3D88Lg22DwyjsDuUs7cCT/XGr8WwJgg/S3ZnkcWuPet2Tt/W1d2Eytb1Z73JpZv+XVCDI5TWv6UMRq0Gg== + dependencies: + assert "^2.0.0" + browser-resolve "^2.0.0" + browserify-zlib "^0.2.0" + buffer "^5.7.1" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + create-require "^1.1.1" + crypto-browserify "^3.11.0" + domain-browser "^4.22.0" + events "^3.0.0" + https-browserify "^1.0.0" + isomorphic-timers-promises "^1.0.1" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + pkg-dir "^5.0.0" + process "^0.11.10" + punycode "^1.4.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.1" + url "^0.11.4" + util "^0.12.4" + vm-browserify "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" + integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + hash-base "~3.0" + pbkdf2 "^3.1.2" + safe-buffer "^5.2.1" + +parseurl@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== + +pbkdf2@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.23, postcss@^8.4.41, postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +public-encrypt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@^6.12.3, qs@^6.5.2: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +raw-body@^2.3.3: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-hot-toast@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.1.tgz#df04295eda8a7b12c4f968e54a61c8d36f4c0994" + integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ== + dependencies: + goober "^2.1.10" + +react-refresh@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.17.0, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup@^4.20.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.0.tgz#c14a3576f20622ea6a5c9cad7caca5e6e9555d05" + integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.24.0" + "@rollup/rollup-android-arm64" "4.24.0" + "@rollup/rollup-darwin-arm64" "4.24.0" + "@rollup/rollup-darwin-x64" "4.24.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" + "@rollup/rollup-linux-arm-musleabihf" "4.24.0" + "@rollup/rollup-linux-arm64-gnu" "4.24.0" + "@rollup/rollup-linux-arm64-musl" "4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" + "@rollup/rollup-linux-riscv64-gnu" "4.24.0" + "@rollup/rollup-linux-s390x-gnu" "4.24.0" + "@rollup/rollup-linux-x64-gnu" "4.24.0" + "@rollup/rollup-linux-x64-musl" "4.24.0" + "@rollup/rollup-win32-arm64-msvc" "4.24.0" + "@rollup/rollup-win32-ia32-msvc" "4.24.0" + "@rollup/rollup-win32-x64-msvc" "4.24.0" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha3@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.5.0 < 2", statuses@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwindcss@^3.4.10: + version "3.4.14" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.14.tgz#6dd23a7f54ec197b19159e91e3bb1e55e7aa73ac" + integrity sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@^2.4.0, tslib@^2.5.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-is@^1.6.16, type-is@^1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^5.5.3: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" + integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg== + dependencies: + punycode "^1.4.1" + qs "^6.12.3" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.4, util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +viem@^2.7.15: + version "2.21.34" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.34.tgz#5206148a6aa659113d7844db53247a411d28569e" + integrity sha512-IR8ucya4dkVJv1jzv/qBz1TxYbSoXZuJPuqQk1/AybU9VuGdMUayittYwr0Navs97XFNml6UWGVya07apoaBmQ== + dependencies: + "@adraffy/ens-normalize" "1.11.0" + "@noble/curves" "1.6.0" + "@noble/hashes" "1.5.0" + "@scure/bip32" "1.5.0" + "@scure/bip39" "1.4.0" + abitype "1.0.6" + isows "1.0.6" + webauthn-p256 "0.0.10" + ws "8.18.0" + +vite-plugin-node-polyfills@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz#d0afcf82eb985fc02244620d7cec1ddd1c6e0864" + integrity sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA== + dependencies: + "@rollup/plugin-inject" "^5.0.5" + node-stdlib-browser "^1.2.0" + +vite-plugin-resolve@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/vite-plugin-resolve/-/vite-plugin-resolve-2.5.2.tgz#b8bcb069d3ef59dc01a6a7b4d2172d38160879c6" + integrity sha512-8twv20M+KIMxkZzAoF1eAUxxxB56NxKdYjIJ309A/30lZ3GAqgiAeGFjVVlLLEpeAcbAwfl9p7jztsQEw7C3Jg== + dependencies: + lib-esm "~0.4.1" + +vite@^5.4.0: + version "5.4.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18" + integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +webauthn-p256@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd" + integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA== + dependencies: + "@noble/curves" "^1.4.0" + "@noble/hashes" "^1.4.0" + +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^2.2.2, yaml@^2.3.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" + integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== + +ylru@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" + integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@^3.22.4: + version "3.23.8" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" + integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== From 7808f7149f11b5811b774ea95983af1b621ce603 Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Tue, 29 Oct 2024 17:52:23 +0530 Subject: [PATCH 2/9] add nft interaction of the gated system --- phantom-gate/contracts/account/Nargo.toml | 4 +- .../target/account-SchnorrAccount.json | 2 +- .../target/account-SchnorrAccount.json.bak | 2 +- .../contracts/nft-contract/Nargo.toml | 10 - .../contracts/nft-contract/src/main.nr | 310 --------- phantom-gate/package.json | 9 +- .../src/components/NftInteractions.tsx | 315 ++++++++++ .../src/components/WalletInteractions.tsx | 594 +++++++++++------- phantom-gate/src/hooks/useAccounts.ts | 4 +- phantom-gate/vite.config.ts | 2 +- phantom-gate/yarn.lock | 175 +++--- 11 files changed, 781 insertions(+), 646 deletions(-) delete mode 100644 phantom-gate/contracts/nft-contract/Nargo.toml delete mode 100644 phantom-gate/contracts/nft-contract/src/main.nr create mode 100644 phantom-gate/src/components/NftInteractions.tsx diff --git a/phantom-gate/contracts/account/Nargo.toml b/phantom-gate/contracts/account/Nargo.toml index f568688ca..0e7c0610a 100644 --- a/phantom-gate/contracts/account/Nargo.toml +++ b/phantom-gate/contracts/account/Nargo.toml @@ -5,5 +5,5 @@ authors = [""] compiler_version = ">=0.33.0" [dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/aztec" } -authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/authwit" } \ No newline at end of file +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/aztec" } +authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/authwit" } \ No newline at end of file diff --git a/phantom-gate/contracts/account/target/account-SchnorrAccount.json b/phantom-gate/contracts/account/target/account-SchnorrAccount.json index a81944555..8a6a0efe3 100644 --- a/phantom-gate/contracts/account/target/account-SchnorrAccount.json +++ b/phantom-gate/contracts/account/target/account-SchnorrAccount.json @@ -1 +1 @@ -{"transpiled":true,"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-aarch64","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+ydB3xUxff2YwgkEAIRCyoqTYpY2NndZDfYsVdU7D3JZu1ib9gbdlQUVFQUUBCQ3gSkSxVQUEBQUVFRUVBRUVB4Z/TOz2UZafs848z7z/18zptlfr73f85zzpx7vnt3726X9fdxyt5ZWYcV//16O2lVgr/Z0hqkrem/qa9zDGvVDP9/axrWahnWCg1rdQxrdaUdmrZW3/DfNTCsNTSsNTKsNQ3WUo/tgr+HBn8joeJotCIWrhARURoKl5TFi0LRorLiuIiLonhRIhyPRCri0XispKwkFioR0UiFSBaVRJKhv49js/85VyijI1zO9PO4bfczkr6gfNs5qB3tq9JhXfC6WdY/r5unvD4u+G/0/7/j5b9PkHaitJOy/1nXR3aaBqHMDtEUqGebbJxfqTWrzttA/q2aVgebqo1QZsdf//dB5wptl+KjjuFkGdMp0k6V1lbaadmbCSjT5JwOS44oY/p5xrb7GU1fMG3K01M25ckpr9umvD4jbVOeKf99lrSzpZ1j2JRVwMV3CnAjnZmNy8252dhNkZ6bc1NycFbK67NTXp+Tlpvz5L/Pl3aBtAuz/7l4byrvp6a8Pi/735vxRfLfpdLKpJUb8o6u/QRO36RJg0RKrKelvL5oExpUyH8npV0s7ZItuCBlqgGw8YoKYL0y834pzs+EKe+XpuRX5Uu/Pn4Teb9M/vtyaVdIu9LCINIW2KcuA+ZdXbALsuwMHcC+H0r196psosPq5OjztgMWAyvudtn/CAw67wZNBj1UpJ4rU01PAebnak8369WkzXpNNtHhawib9VrHN6uK+1rSZkVPAu0CX9FX13bZbua7atY/b7WlHy4jfUGKn9cFybo++HtD8PfG4O9Nwd+bg7+3BH9vDf62D/7eFvy9Pfh7R/D3zuysDd/DuyF74/cn2xvW7sj+5z0HW13xOlJXvCub6PBdhK54t+NdUcV9N6Er2iy260nFdk820eF7CMV2r+PFpuK+15NL8A3BxkBfgpEN4T5PZ+YbSRv2/myiw/cTNuwDjm9YFfcDnl8dbiIVW4dsosMdCMX2oOPFpuJ+0JOrw83BxkBfHZAN4aFsroahzI6/ppX7svG5edjxuFWNP0SI+xFPp4FbSA360Wyiw48SGvRjjjdoFfdjnk8Dt5KK7fFsosOPE4qto+PFpuLu6Mk00D7YGOhpANkQnnD8qqiu2o8QropPOh63qvEnCHE/5ek0cBupQXfKJjrcidCgn3a8Qau4n/Z8GridVGzPZBMdfoZQbJ0dLzYVd2dPpoE7go2BngaQDaGL41dFddV+inBVfNbxuFWNdyHE/Rw4bn2g/Xwe5mckyvSz67b7mUhfMH1UU+mgP5J5Xcrr61Ned83e8KOaL8h/vyjtJWndsvkfT78BV1PiBWBve5lU62j9gHfBxItA/V7xRD/gjR3xElC/7uChMr03vJzSA15Jed095XW3tN7QQ/67p7RXpb1moTfcDMxND2BuenlS28D3xEVPoH69PdEP+DaveBWo3+vk3tArpQf0Tnn9esrr19J6Qx/5777S+kl7w0JvaA/MTR9gbvp7UtvAd8hEX6B+AzzRD/imj+gH1G8guTf0T+kBA1JeD0x5/UZabxgk/z1Y2hBpQy30hjuAuRkEzM0wcm6GpeRgcMrrISmvh6blZrj89whpI6W9mb3h+VJzgnjP5DnCexKjgLk2xR3K7BBK31GEuEeTayn1672jU17fmf3vX/McI//9lrSx0sZl87/muR1QzzFkPf/t/ZcbNqHnePnvCdImSptkQc82wF43ORubZ/09FHXeBll/fw8lO8vODZ5muHOFslP8fDv4x5TstADQF8TUADJN7NtbXiTlmzmXmALcdDYLonkWpyCmBv+Yxi6I5sCCmAosiGmeFsT4bE5BTA/+MYNdEOOBrX86sCBmgC/L+Vl/P2otK02/SCgaLq4ojpZWVERCFSUl8XIRKY+XV1SUJ0ojpbFYPBRLlFWUJorCZeXhZKQsGaoorYgXibJoWUyEysW6tPMJGW9RcWmoOJ4sDkVC4Ug4GiovKS6LJkqLorFocbE8XaQsHhOivCgsymPReFiES0VRWbm851RRWrwOm99QesGH4+Gi8lhJeXlxaVF5WVlFRTKWKC6NJ0VZcakIl0WkM6WRSDwaDZVWJCvKopGSYhGNl8dlhmLloWjJRvHK1CYTQkVXFgsVhxPFZUUq8RWR4rKSUCxSHCkKJYuTZaUhEQ7Hy6My5HCopKQoVJIsioVEBTveUEWiTFSESyLlkfKKElGWlEFUyJelpUWhRLi8KCqSpSUJWYDSLxluKFKRLBPlydJweVkkUhRLbhRvJCoSxbGiZKnMbkV5RUQmXFZHpLw0EpU6RMpESVlxRUmsOByKFsfkWlTKF46WR6XKiYpIET3eqNQ5IpMlt1pI7rlEeTxcES8tKiotKQonoolkOBQuKk5WhOReS5RES+SyzElpKJQMlZYlxcb+lcaVMsXyxqP8f5JFibjcxtGSRDSelFsnmgjJ8giVlcQrEjERKy0pK4qES5PFEbkziiKhWIlgxJsXnEu9fjtljJ6S8npqyutpKa+np7yeEbwG+gePV51vpvTzHWmzsv8ef9U1QD8CznSgYmGcuzQWLY0nykN6tE89XB7fWT4iJ0qWj8ghJ4uY75me+DmZ5Of/jmyiw5kOibNJ7w/MDt4fML0Hc0tK07815XX7TbwHM0f++11p70mba+E9mDlAjeelalwcKi4uSUZDcr5NilA4JKIlJWXy6lwqKorKRXFJPFFcUS7/75RH4kUlpfICn5DTX6mIl5VHiuRl3uYHaueBh359vJ9NdFidHH3eD4DFwIr7g+x/BAad9y90VxstnXoZMcwhd2HQucOpjWd+IMyC4O/C4O+HKTUIv+PwAaljL8z+52lD6R17fkpnXpDyeuEmOvYi+e/F0j6S9nH2v9/RCmV2/FU4H2TjdX6gCbYgGXWwiBB3hyacjZgD9hPYMMQi4LmAdSM6kGswlNkhVL9j7L1PwJOH7nGfBFMpYz9qLdCTaDbQxyUkXZek6KoP9FvjwJoQS4AD3ackTT/dRK2GMjtEtSzOvv2MpMVnxH1bjbRvqwF9/Jyk6+cW9i2wJsTnwH27lKTpUuK+rZnF2bdfkLT4grhva5L2bU2gj1+SdP3Swr4F1oT4ErhvvyJp+hVx39bK4uzbZSQtlhH3bS3Svq0F9PFrkq5fW9i3wJoQXwP37TckTb8h7tvCLM6+/ZakxbfEfVtI2reFQB+Xk3RdbmHfAmtCLAfu2+9Imn5H3Ld1sjj79nuSFt8T920d0r6tA/RxBUnXFRb2LbAmxArgvl1J0nQlcd/WzeLs2x9IWqSeF+1zXdK+rQv08UeSrqnnzSLtW2BNiB+B+/YnkqY/baJWQ5kdon4WZ9+uImmxini9rU/at/WBPv5M0vVnC9dbYE2In4H79heSpr8Qr7cNsjj79leSFr8S963WAr1vGwB9XE3SdbWFfQusCbEauG9/I2n6G3HfNszi7NvfSVr8Tty3Wgv0vm0I9HENSdc1FvYtsCbEGuC+XUvSdC1x3zbK4uzbP0ha/EHct41I+7YR0Mc/Sbr+aWHfAmtC/Anct+tImq4j7tumWZx9u56kxXrivm1K2rdNgT4qIRi6qhcNsjY80PsWWBMiVYdMNd2OpOl2VXj7Vn0LjbFvs0laZFfh7VutBXrfzgZeG6qQdK1iYd8Ca0JUAe7bHJKmOYGmNr+ROBl8vdRH1SpEh9XJ0eetBiwQVtzVUh4oADrvBg/lYfiNfEZBg+A8uVKHPGnVpdWQli+tprQCabWk1ZZWKG17aXWk7SBtR2k7SdtZWl1pu0jbVdpu0upJ213aHtL2lFZfbURpDaU1ktZY2l7SmkhrGuzW1I37lz9ZG67lGdaqG9ZqGNbyDWs1DWsFhrVahrXahrVCw9r2hrU6hrUdDGs7GtZ2MqztbFira1jbxbC2q2FtN8NaPcPa7oa1PQxrexrW6hvWGhjWGhrWGhnWGhvW9jKsNTGsNa3yz/Nh9JH+RcBQZgf0qXq5gL5akVRHSOQBe/TDjn8pU8WsclEdot/fea2R+bnC+vll+cBcPOJyLqL/PLOtZmYxh1Kf/1aQybnCGz5LrhYwF4+6mYtQ+vPzam9jzMXJjZ/FV7ht54qbnuu3PTAXj7mWi7j5WYZ1tj7m2L89F3GHrT1X7N+fsbgjMBePu5OL8KaeK7nT1sQc2/QzKnfe8nNt9nmXdYG56OhCLmKb9VPssmUxh7YgZrHrlpwrtEX6id2AuXjiv81F0Rb6KeptLuboFscsdt/kuaLJrdBP7AHMxZP/VS5iW+Wn2PPfY45vZcyi/r+cqyS51fqJBsBcPGU/F6Ft8FM0NMUc2qaYRaONzyW2UT/RGJiLTjZzkdhmP8VeG8YcySBm0STlXOFkRvqJpsBcPG0pF6HMDgF8f0AA+Vak8lmmuXjGk1wAOUgA53jREZiLzp7kAjjvCeC8Ip4C5qKLJ7kAXtcEsC+LZ4C5eJaUiyrgXAD3rwDWn2Dpl/6hh4w/BAWcMZpVQcUcCdm8GY/ze8Ob8c2rEB1WJ0efd29gMbDi3rvKPwKDzvtXsamnrmRn8YutKazYErzHA4sNP6DQItB8H303VP9tERRh6to+hjul6K6P6Fr67mYLYNHvA04uY4O3qIL/SF6LKn5c7ZoAc70vLObiqM2r3b6kq91+VYgO70e42u3v+NVOxb2/51e7JrBiKyk3uEu52rUMNA+lX+1aGq52IQtXuybAq11LYNGHSMlFd31kzALXPY0/D52pf3sHTSMbXININAiDpwV001I5DhOmJNfj1rWDjjviyXSIrPEouU+EMjuEykmU0CfCQA2LPNgvRYT9Ugye0PWsUpziK0sLdD1FgfUUI+kaq7IxuaF7015AHeIwHaIVNsk1Ds6fPkqqEB0uIZBrK8fJVcXdynNy3QtWbGVhg7sUcj0g0PzAdHI9wECuB1ogV0TX0uR6ALDoDyQlF931kTEf5PhEGguaRhWwhjGghsjGe7Dj+VD1cjBhugXGTfk5Ql2H6EkWWTuHOE5GSsNDCBoeDNTwUE/elUD2r8Mc7zkqJ4cRek5rEvm1JhK11gK9h5D1dDhJ18MtEDXyk+5HwHSIhW0S9RHg/OnjyCpEh48kEPVRjhO1ivsoz4m6MazY4hUGdylEfXSg+THpRH20gaiPsUDUiK6lifpoYNEfQ0ouuusjYz7W8Wnq8KBpoIn6cKCGyMZ7nOP5UPVyHGG6BcZNIWpdh+hJFlk7xztO1ErD4wkaHgfU8ARPiBrZv050vOeonJxI6DknkcjvJCJRay3QewhZT21IuraxQNSNgDqcDNOhQtgk6pPB+dPHKVWIDp9CIOpTHSdqFfepnhN1I1ixiaTBXQpRtw00Py2dqNsaiPo0C0SN6FqaqNsCi/40UnLRXR8Z8+mOT1NtgqaBJuo2QA2RjfcMx/Oh6uUMwnQLjJtC1LoO0ZMssnbOdJyolYZnEjQ8A6jhWZ4QNbJ/ne14z1E5OZvQc84hkd85RKLWWqD3ELKeziXpeq4Fom4I1OE8mA4Rq0R9Hjh/+ji/CtHh8wlEfYHjRK3ivsBzom4IK7Zya0R9YaD5RelEfaGBqC+yQNSIrqWJ+kJg0V9ESi666yNjLnV8mjo3aBpooj4XqCGy8ZY5ng9VL2WE6RYYN4WodR2iJ1lk7ZQ7TtRKw3KChmVADROeEDWyf1U43nNUTioIPSdJIr8kkai1Fug9hKyni0m6XmyBqJHPmr8EpkOp1eddXgLOnz4urUJ0+FICUV/mOFGruC/znKgbwIqt2NrzLi8PNL8inagvNxD1FRaIGtG1NFFfDiz6K0jJRXd9ZMxXOj5NXRw0DTRRXwzUENl4r3I8H6periJMt8C4KUSt6xA9ySJrp53jRK00bEfQ8Cqghld7QtTI/nWN4z1H5eQaQs+5lkR+1xKJWmuB3kPIerqOpOt1Foi6PlCH62E6hEtsEvX14Pzp44YqRIdvIBD1jY4TtYr7Rs+Juj6s2BIxg7sUor4p0PzmdKK+yUDUN1sgakTX0kR9E7DobyYlF931kTHf4vg0dV3QNNBEfR1QQ2TjvdXxfKh6uZUw3QLjphC1rkP0JIusnfaOE7XSsD1Bw1uBGt7mCVEj+9ftjvcclZPbCT3nDhL53UEkaq0Feg8h6+lOkq53WiDqPYE63AXToSxuk6jvAudPH3dXITp8N4Go73GcqFXc93hO1HvCii0aN7hLIep7A83vSyfqew1EfZ8FokZ0LU3U9wKL/j5SctFdHxnz/Y5PU3cGTQNN1HcCNUQ23gccz4eqlwcI0y0wbgpR6zpET7LI2ungOFErDTsQNHwAqOGDnhA1sn895HjPUTl5iNBzHiaR38NEotZaoPcQsp4eIen6iAWi3gOow6MwHYqsfur7UXD+9PFYFaLDjxGI+nHHiVrF/bjnRL0H7m0na5/67hho/kQ6UXc0EPUTFoga0bU0UXcEFv0TpOSiuz4y5icdn6YeCZoGmqgfAWqIbLxPOZ4PVS9PEaZbYNwUotZ1iJ5kkbXTyXGiVhp2Imj4FFDDpz0hamT/esbxnqNy8gyh53QmkV9nIlFrLdB7CFlPXUi6drFA1LsDdXgWd4emyCZRPwvOnz6eq0J0+DkCUT/vOFGruJ/3nKh3x0FXmcFdClF3DTR/IZ2ouxqI+gULRI3oWpqouwKL/gVSctFdHxnzi45PU12CpoEm6i5ADZGN9yXH86Hq5SXCdAuMm0LUug7Rkyyydro5TtRKw24EDV8CaviyJ0SN7F+vON5zVE5eIfSc7iTy604kaq0Feg8h66kHSdceFoi6HlCHnrh5stgmUfcE508fr1YhOvwqgahfc5yoVdyveU7U9XBvO5Ua3KUQda9A897pRN3LQNS9LRA1omtpou4FLPrepOSiuz4y5tcdn6Z6BE0DTdQ9gBoiG28fx/Oh6qUPYboFxk0hal2H6EkWWTt9HSdqpWFfgoZ9gBr284Sokf3rDcd7jsrJG4Se059Efv2JRK21QO8hZD0NIOk6wAJR7wbUYSBMh7jVX88aCM6fPgZVITo8iEDUgx0nahX3YM+JejdYscWs/XrWkEDzoelEPcRA1EMtEDWia2miHgIs+qGk5KK7PjLmYY5PUwOCpoEm6gFADZGNd7jj+VD1Mpww3QLjphC1rkP0JIusnRGOE7XScARBw+FADUd6QtTI/vWm4z1H5eRNQs8ZRSK/UUSi1lqg9xCynkaTdB1tgah3BeowxlOiHgPOnz7eqkJ0+C0CUY91nKhV3GM9J+pdPSTqcYHm49OJepyBqMdbIGpE19JEPQ5Y9OM9IWpkzBMcn6ZGB00DTdSjgRoiG+9Ex/Oh6mUiYboFxk0hal2H6EkWWTuTHCdqpeEkgoYTgRpO9oSokf3rbcd7jsrJ24SeM4VEflOIRK21QO8hZD1NJek61QJR7wLUYRpMhyKrz/qeBs6fPqZXITo8nUDUMxwnahX3DM+JehdYsZVae9b3zEDzd9KJeqaBqN+xQNSIrqWJeiaw6N8hJRfd9ZExz3J8mpoaNA00UU8FaohsvLMdz4eql9mE6RYYN4WodR2iJ1lk7cxxnKiVhnMIGs4GaviuJ0SN7F/vOd5zVE7eI/ScuSTym0skaq0Feg8h62keSdd5Foi6LlCH93FEnbBJ1O+D86ePD6oQHf6AQNTzHSdqFfd8z4m6Lg66IgZ3KUS9INB8YTpRLzAQ9UILRI3oWpqoFwCLfiEpueiuj4z5Q8enqXlB00AT9TyghsjGu8jxfKh6WUSYboFxU4ha1yF6kkXWzmLHiVppuJig4SKghh95QtTI/vWx4z1H5eRjQs/5hER+nxCJWmuB3kPIelpC0nWJBaLeGajDpzAdwlbvUX8Kzp8+PqtCdPgzAlF/7jhRq7g/95yod4YVW8LaPeqlgeZfpBP1UgNRf2GBqBFdSxP1UmDRf0FKLrrrI2P+0vFpaknQNNBEvQSoIbLxfuV4PlS9fEWYboFxU4ha1yF6kkXWzjLHiVppuIyg4VdADb/2hKiR/esbx3uOysk3hJ7zLYn8viUStdYCvYeQ9bScpOtyC0S9E1CH72A6RCI2ifo7cP708X0VosPfE4h6heNEreJe4TlR7wQrtvKEwV0KUa8MNP8hnahXGoj6BwtEjehamqhXAov+B1Jy0V0fGfOPjk9Ty4OmgSbq5UANkY33J8fzoerlJ8J0C4ybQtS6DtGTLLJ2VjlO1ErDVQQNfwJq+LMnRI3sX7843nNUTn4h9JxfSeT3K5GotRboPYSsp9UkXVdbIOodgTr8BtOhwuo96t/A+dPH71WIDv9OIOo1jhO1inuN50S9I6zYhLV71GsDzf9IJ+q1BqL+wwJRI7qWJuq1wKL/g5RcdNdHxvyn49PU6qBpoIl6NVBDZONd53g+VL2sI0y3wLgpRK3rED3JImtnveNErTRcT9BwHXLwyfGDqJH9a7sct3uOyonyEb2ns4G5Tp2hsnN4RK21QO8hZD1VIelaJYdP1DsAdciB6RC1StQ54Pzpo2oO0eGqOfjzVstxm6hV3NVy/hEYdF6rRL0DbGgps0bUuYHmeTlZG9Jzbs7GRK3+IzZR7wAk6lxg0eflcJKL7vrImKs7Pk1VCZoGmqirADVENt4ajudD1UsNwnRbA0wyaP90HaInWWTt5JM1DGV2/LWX8wka1gBqWNMTokb2rwLHe47KSQGh59QikV8tIlFrLdB7CFlPtUm61rZA1HWARF0I0yFWYpOoC8H508f2OUSHtycQdR3HiVrFXcdzoq4DI+p4zOAuhah3CDTfMZ2odzAQ9Y4WiLoOkKh3ABb9jjmc5MLfRwXGvJPj01TtoGmgibo2UENk493Z8XyoetmZMN0C46YQta5D9CSLrJ26jhO10rAuQcOdgRru4glRI/vXro73HJWTXQk9ZzcS+e1GJGqtBXoPIeupHknXehaIensgUe+Ou0Njlah3B+dPH3vkEB3eg0DUezpO1CruPT0n6u1hRB21RtT1A80bpBN1fQNRN7BA1NsDibo+sOgb5HCSi+76yJgbOj5N1QuaBpqo6wE1RDbeRo7nQ9VLI8J0C4ybQtS6DtGTLLJ2GjtO1ErDxgQNGwE13MsTokb2ryaO9xyVkyaEntOURH5NiUSttUDvIWQ9NSPp2swCURcCibo57h51yCZRNwfnTx975xAd3ptA1C0cJ2oVdwvPiboQRtQlIYO7FKLeJ9B833Si3sdA1PtaIOpCIFHvAyz6fXM4yUV3fWTM+zk+TTULmgaaqJsBNUQ23v0dz4eql/0J0y0wbgpR6zpET7LI2mnpOFErDVsSNNwfqGHIE6JG9i/heM9RORGEnhMmkV+YSNRaC/QeQtZThKRrxAJR1wYSdRQ3TwqbRB0F508fRTlEh4sIRF3sOFGruIs9J+raMKIuThrcpRB1LNA8nk7UMQNRxy0QdW0gUceARR/P4SQX3fWRMZc4Pk1FgqaBJuoIUENk423leD5UvbQiTLfAuClEresQPckia+cAx4laaXgAQcNWQA0P9ISokf3rIMd7jsrJQYSeczCJ/A4mErXWAr2HkPV0CEnXQywQdS0gUR+K+8yj1V/POhScP30clkN0+DACUbd2nKhV3K09J+pauCeTJQzuUoj68EDzI9KJ+nADUR9hgahrAYn6cGDRH5HDSS666yNjPtLxaeqQoGmgifoQoIbIxnuU4/lQ9XIUYboFxk0hal2H6EkWWTtHO07USsOjCRoeBdTwGE+IGtm/jnW856icHEvoOceRyO84IlFrLdB7CFlPx5N0Pd4CURcAifoEmA4VVu9RnwDOnz5OzCE6fCKBqE9ynKhV3Cd5TtQFuB9YsnaPuk2g+cnpRN3GQNQnWyDqAiBRtwEW/ck5nOSiuz4y5lMcn6aOD5oGmqiPB2qIbLynOp4PVS+nEqZbYNwUotZ1iJ5kkbXT1nGiVhq2JWh4KlDD0zwhamT/Ot3xnqNycjqh55xBIr8ziESttUDvIWQ9nUnS9UwLRF0TSNRnwXRIFtkk6rPA+dPH2TlEh88mEPU5jhO1ivscz4m6Ju4nP8sM7lKI+txA8/PSifpcA1GfZ4GoawKJ+lxg0Z+Xw0kuuusjYz7f8WnqzKBpoIn6TKCGyMZ7geP5UPVyAWG6BcZNIWpdh+hJFlk7FzpO1ErDCwkaXgDU8CJPiBrZv0od7zkqJ6WEnlNGIr8yIlFrLdB7CFlP5SRdyy0QdT6QqBMwHUqsfuo7Ac6fPipyiA5XEIg66ThRq7iTnhN1Pu571AmDuxSivjjQ/JJ0or7YQNSXWCDqfCBRXwws+ktyOMlFd31kzJc6Pk2VB00DTdTlQA2Rjfcyx/Oh6uUywnQLjJtC1LoO0ZMssnYud5yolYaXEzS8DKjhFZ4QNbJ/Xel4z1E5uZLQc64ikd9VRKLWWqD3ELKe2pF0bWeBqGsAifpq3D1qq8/6vhqcP31ck0N0+BoCUV/rOFGruK/1nKhr4D71be1Z39cFml+fTtTXGYj6egtEXQNI1NcBi/76HE5y0V0fGfMNjk9T7YKmgSbqdkANkY33RsfzoerlRsJ0C4ybQtS6DtGTLLJ2bnKcqJWGNxE0vBGo4c2eEDWyf93ieM9RObmF0HNuJZHfrUSi1lqg9xCyntqTdG0f6GqTLqtXwcaij9tyiA7fRqDL2x2nSxX37QS6NPmK2CC3EzYxcOPR8+2qhsi47/BkmGgPjPlOx4cJFesdhGHiLseHb5WXu8g9J1MN7yYNDnf/B4NDHmlwuCeH6PA9hMHhXscHBxX3vZ4MDqqQ7yVsYuDGo+fbVQ2Rcd/nyeBwNzDm+x0fHFSs9xEGhwccHxxUXh4g95xMNexAGhw6WLiHnwu8h/8gcA/ZHJYezOEMSw/lEB1+iDAsPez4sKTiftjSsBTK7BAdAl/Rtw47AHOEzPcjjl9AVaN7hHABfdTxC6iK+VFC3I+RLnqPGT4CgtaEnTPEHn+YMPQg9/vjjte90vBxgoaPADXs6AloIa85Tzh+nVA5eYLQL58k9csnibd7tRboPYSsp6dIewit5VPAmLOzNjzQvjbHnSvUIDhPJxn/09KekdZZWhdpz0p7Ttrz0rpKe0Hai9JektZN2svSXpHWXVoPaT2lvSrtNWm9pPWW9rq0PtL6Susn7Q1p/aUNkDZQ2iBpg3P+Fil133QK5ozUtacNa88Y1job1roY1p41rD1nWHvesNbVsPaCYe1Fw9pLhrVuhrWXDWuvGNa6G9Z6GNZ6GtZeNay9ZljrZVjrbVh73bDWx7DW17DWz7D2hmGtv2FtgGFtoGFtkGFtsGGm1Rh7aPA3lNmxwZ7NtL90AvQq/RHpp4F9r3cTTq9Pz0UmMatcPAPR7++8ds78XOFAP9EFmIvXXc5F9H9+imczizmUErN4LpNzhTfQTzwPzEUfN3MRSvNTdN3GmIuTG8UsXti2c8UN+okXgbno61ou4kY/xUtbH3PsX2IW3bb2XLF/1U+8DMxFP3dyEd6En+KVrYk5tsmYRfctP1f5ZvQTPYC5eMOFXMQ266fouWUxh7YgZvHqlpwrtEX6ideAuej/3+aiaAv9FL02F3N0i2MWvTd5rmhyK/QTrwNzMeC/ykVsq/wUff495vhWxiz6/su5SpJbrZ/oB8zFQPu5CG2Dn+INU8yhbYpZ9N/4XGIb9RMDgLkYZDMXiW32UwzcMOZIBjGLQSnnCicz0k8MBuZisKVchDI7BPD9AQHkW5HKZ5nmYognuQBykADO8eINYC6GepIL4LwngPOKGAjMxTBPcgG8rglgXxZDgLkYTsoF+lEgwP0rgPUnWPqhPxeAnDGGwO7jRqw+AArn94YfHh2aQ3R4aA7+vMOAxcCKe1jOPwKDzmv1AVCDYcWWsPYAqOGB5iOCm/D/uys6PCjC1LUROfwHQCG6lr67ORxY9CPAyWVs8OE5+E9GDc/x42o3CJjrkbCYi6M2r3YjSVe7N3OIDr9JuNqNcvxqp+Ie5fnVbhCs2ErKDe5SrnajA83HpF/tRhuudmMsXO0GAa92o4FFP4aUXHTXR8b8Fq57Gj/7nPF7KEHTyAbXIBINxoKnBXTTUjkeS5iSXI9b1w467nGeTIfIGh9P7hOhzA6hcjKe0CfGAjWc4MF+mUDYLxPBE7qeVSam+MrSAl1P44H1NImk66Qc/pf8BwJ1mAzTIVphk1wng/Onj7dziA6/TSDXKY6Tq4p7iufkOhBWbGVhg7sUcp0aaD4tnVynGsh1mgVyRXQtTa5TgUU/jZRcdNdHxjzd8Yl0UtA00E/bmATUENl4ZzieD1UvMwjTLTBuypMbdB2iJ1lk7cx0nIyUhjMJGs4AaviOJ+9KIPvXLMd7jsrJLELPmU0iv9lEotZaoPcQsp7mkHSdY4GokZ90fxemQyxsk6jfBedPH+/lEB1+j0DUcx0nahX3XM+JegCs2OIVBncpRD0v0Pz9dKKeZyDq9y0QNaJraaKeByz690nJRXd9ZMwfOD5NzQmaBpqo5wA1RDbe+Y7nQ9XLfMJ0C4ybQtS6DtGTLLJ2FjhO1ErDBQQN5wM1XOgJUSP714eO9xyVkw8JPWcRifwWEYlaa4HeQ8h6WkzSdbEFou4P1OEjmA4VVh9E/xE4f/r4OIfo8McEov7EcaJWcX/iOVH3hxWbSBrcpRD1kkDzT9OJeomBqD+1QNSIrqWJegmw6D8lJRfd9ZExf+b4NLU4aBpool4M1BDZeD93PB+qXj4nTLfAuClEresQPckia2ep40StNFxK0PBzoIZfeELUyP71peM9R+XkS0LP+YpEfl8RiVprgd5DyHpaRtJ1mQWifgOow9cwHSJWifprcP708U0O0eFvCET9reNEreL+1nOifgNWbOXWiHp5oPl36US93EDU31kgakTX0kS9HFj035GSi+76yJi/d3yaWhY0DTRRLwNqiGy8KxzPh6qXFYTpFhg3hah1HaInWWTtrHScqJWGKwkargBq+IMnRI3sXz863nNUTn4k9JyfSOT3E5GotRboPYSsp1UkXVdZIGrks+Z/hulQavV5lz+D86ePX3KIDv9CIOpfHSdqFfevnhN1P1ixFVt73uXqQPPf0ol6tYGof7NA1IiupYl6NbDofyMlF931kTH/7vg0tSpoGmiiXgXUENl41zieD1UvawjTLTBuClHrOkRPssjaWes4USsN1xI0XAPU8A9PiBrZv/50vOeonPxJ6DnrSOS3jkjUWgv0HkLW03qSrustEHVfJERVRekQLrFJ1Di/NyTq7aoSHVYnR583u6rbRK3izq76j8Cg81ol6r6wZpGIGdylEHWVQPOcqlkb0nOVqhsTtfqP2ESN6FqaqKsAiz6nKie56K6PjLlqVeAGz8JvOHUVVU0DTdTrgVdOZOOt5ng+VL1Uq4qfboFxU4ha1yF6kkXWTi5Zw1Bmx197OZegYTWghnlgDfWBvgYg+1d1x3uOykl1Qs+pASYHPUPVqMojaq0Feg8h6ymfpGt+VT5R9wHqUBOmQ1ncJlHXBOdPHwVViQ4XEIi6luNEreKu5TlR94ERdTRucJdC1LUDzQvTibq2gagLLRB1HyBR1wYWfWFVTnLRXR8Z8/aOT1P5QdNAE3U+UENk463jeD5UvdQhTLfAuClEresQPckia2cHx4laabgDQcM6QA139ISokf1rJ8d7jsrJToSeszOJ/HYmErXWAr2HkPVUl6RrXQtE/TqQqHeB6VBk9VPfu4Dzp49dqxId3pVA1Ls5TtQq7t08J+rXYURdZu1T3/UCzXdPJ+p6BqLe3QJRvw4k6nrAot+9Kie56K6PjHkPx6epukHTQBN1XaCGyMa7p+P5UPWyJ2G6BcZNIWpdh+hJFlk79R0naqVhfYKGewI1bOAJUSP7V0PHe47KSUNCz2lEIr9GRKLWWqD3ELKeGpN0bWyBqHsDiXov3B2aIptEvRc4f/poUpXocBMCUTd1nKhV3E09J+reOKIuM7hLIepmgebN04m6mYGom1sg6t5Aom4GLPrmVTnJRXd9ZMx7Oz5NNQ6aBpqoGwM1RDbeFo7nQ9VLC8J0C4ybQtS6DtGTLLJ29nGcqJWG+xA0bAHUcF9PiBrZv/ZzvOeonOxH6Dn7k8hvfyJRay3QewhZTy1Jura0QNS9gEQdws2TxTaJOgTOnz5EVaLDgkDUYceJWsUd9pyoe+E+9V1qcJdC1JFA82g6UUcMRB21QNS9gEQdARZ9tConueiuj4y5yPFpqmXQNNBE3RKoIbLxFjueD1UvxYTpFhg3hah1HaInWWTtxBwnaqVhjKBhMVDDuCdEjexfJY73HJWTEkLPaUUiv1ZEotZaoPcQsp4OIOl6gAWifg1I1AfCdIhb/fWsA8H508dBVYkOH0Qg6oMdJ2oV98GeE/VrMKKOWfv1rEMCzQ9NJ+pDDER9qAWifg1I1IcAi/7Qqpzkors+MubDHJ+mDgiaBpqoDwBqiGy8rR3Ph6qX1oTpFhg3hah1HaInWWTtHO44USsNDydo2Bqo4RGeEDWyfx3peM9ROTmS0HOOIpHfUUSi1lqg9xCyno4m6Xq0BaJ+FUjUx3hK1MeA86ePY6sSHT6WQNTHOU7UKu7jPCfqVz0k6uMDzU9IJ+rjDUR9ggWifhVI1McDi/4ET4gaGfOJjk9TRwdNA03URwM1RDbekxzPh6qXkwjTLTBuClHrOkRPssjaaeM4USsN2xA0PAmo4cmeEDWyf53ieM9ROTmF0HNOJZHfqUSi1lqg9xCyntqSdG1rgah7Aon6NJgORVaf9X0aOH/6OL0q0eHTCUR9huNEreI+w3Oi7on70XZrz/o+M9D8rHSiPtNA1GdZIOqeQKI+E1j0Z1XlJBfd9ZExn+34NNU2aBpoom4L1BDZeM9xPB+qXs4hTLfAuClEresQPckia+dcx4laaXguQcNzgBqe5wlRI/vX+Y73HJWT8wk95wIS+V1AJGqtBXoPIevpQpKuF1og6h5Aor4IR9QJm0R9ETh/+iitSnS4lEDUZY4TtYq7zHOi7oEj6ojBXQpRlweaJ9KJutxA1AkLRN0DSNTlwKJPVOUkF931kTFXOD5NXRg0DTRRXwjUENl4k47nQ9VLkjDdAuOmELWuQ/Qki6ydix0naqXhxQQNk0ANL/GEqJH961LHe47KyaWEnnMZifwuIxK11gK9h5D1dDlJ18stEHV3IFFfAdMhbPUe9RXg/OnjyqpEh68kEPVVjhO1ivsqz4m6O4yoE9buUbcLNL86najbGYj6agtE3R1I1O2ARX91VU5y0V0fGfM1jk9TlwdNA03UlwM1RDbeax3Ph6qXawnTLTBuClHrOkRPssjauc5xolYaXkfQ8Fqghtd7QtTI/nWD4z1H5eQGQs+5kUR+NxKJWmuB3kPIerqJpOtNFoj6FSBR3wzTIRKxSdQ3g/Onj1uqEh2+hUDUtzpO1CruWz0n6ldgRF2eMLhLIer2gea3pRN1ewNR32aBqF8BEnV7YNHfVpWTXHTXR8Z8u+PT1E1B00AT9U1ADZGN9w7H86Hq5Q7CdAuMm0LUug7Rkyyydu50nKiVhncSNLwDqOFdnhA1sn/d7XjPUTm5m9Bz7iGR3z1EotZaoPcQsp7uJel6rwWifhlI1PfBdKiweo/6PnD+9HF/VaLD9xOI+gHHiVrF/YDnRP0yjKiFtXvUHQLNH0wn6g4Gon7QAlG/DCTqDsCif7AqJ7noro+M+SHHp6l7g6aBJup7gRoiG+/DjudD1cvDhOkWGDeFqHUdoidZZO084jhRKw0fIWj4MFDDRz0hamT/eszxnqNy8hih5zxOIr/HiUSttUDvIWQ9dSTp2tECUXcDEvUTMB2iVon6CXD+9PFkVaLDTxKI+inHiVrF/ZTnRN0NRtRl1oi6U6D50+lE3clA1E9bIOpuQKLuBCz6p6tykovu+siYn3F8muoYNA00UXcEaohsvJ0dz4eql86E6RYYN4WodR2iJ1lk7XRxnKiVhl0IGnYGavisJ0SN7F/POd5zVE6eI/Sc50nk9zyRqLUW6D2ErKeuJF27WiDql4BE/QJMh1iJTaJ+AZw/fbxYlejwiwSifslxolZxv+Q5Ub8EI+p4zOAuhai7BZq/nE7U3QxE/bIFon4JSNTdgEX/clVOcuHvowJjfsXxaapr0DTQRN0VqCGy8XZ3PB+qXroTpltg3BSi1nWInmSRtdPDcaJWGvYgaNgdqGFPT4ga2b9edbznqJy8Sug5r5HI7zUiUWst0HsIWU+9SLr2skDULwKJujfuDo1Vou4Nzp8+Xq9KdPh1AlH3cZyoVdx9PCfqF2FEHbVG1H0DzfulE3VfA1H3s0DULwKJui+w6PtV5SQX3fWRMb/h+DTVK2gaaKLuBdQQ2Xj7O54PVS/9CdMtMG4KUes6RE+yyNoZ4DhRKw0HEDTsD9RwoCdEjexfgxzvOSongwg9ZzCJ/AYTiVprgd5DyHoaQtJ1iAWifgFI1ENx96hDNol6KDh/+hhWlejwMAJRD3ecqFXcwz0n6hdgRF0SMrhLIeoRgeYj04l6hIGoR1og6heARD0CWPQjq3KSi+76yJjfdHyaGhI0DTRRDwFqiGy8oxzPh6qXUYTpFhg3hah1HaInWWTtjHacqJWGowkajgJqOMYTokb2r7cc7zkqJ28Res5YEvmNJRK11gK9h5D1NI6k6zgLRN0VSNTjcfOksEnU48H508eEqkSHJxCIeqLjRK3inug5UXeFEXVx0uAuhagnBZpPTifqSQainmyBqLsCiXoSsOgnV+UkF931kTG/7fg0NS5oGmiiHgfUENl4pzieD1UvUwjTLTBuClHrOkRPssjameo4USsNpxI0nALUcJonRI3sX9Md7zkqJ9MJPWcGifxmEIlaa4HeQ8h6mknSdaYFon4eSNTv4D7zaPXXs94B508fs6oSHZ5FIOrZjhO1inu250T9PO7JZNZ+PWtOoPm76UQ9x0DU71og6ueBRD0HWPTvVuUkF931kTG/5/g0NTNoGmiingnUENl45zqeD1UvcwnTLTBuClHrOkRPssjamec4USsN5xE0nAvU8H1PiBrZvz5wvOeonHxA6DnzSeQ3n0jUWgv0HkLW0wKSrgssEPVzQKJeCNOhwuo96oXg/Onjw6pEhz8kEPUix4laxb3Ic6J+DvfrWdbuUS8ONP8onagXG4j6IwtE/RyQqBcDi/6jqpzkors+MuaPHZ+mFgRNA03UC4AaIhvvJ47nQ9XLJ4TpFhg3hah1HaInWWTtLHGcqJWGSwgafgLU8FNPiBrZvz5zvOeonHxG6Dmfk8jvcyJRay3QewhZT0tJui61QNTPAon6C5gOySKbRP0FOH/6+LIq0eEvCUT9leNEreL+ynOifhZG1KEyg7sUol4WaP51OlEvMxD11xaI+lkgUS8DFv3XVTnJRXd9ZMzfOD5NLQ2aBpqolwI1RDbebx3Ph6qXbwnTLTBuClHrOkRPssjaWe44USsNlxM0/Bao4XeeEDWyf33veM9ROfme0HNWkMhvBZGotRboPYSsp5UkXVdaIOouQKL+AaZDidVPff8Azp8+fqxKdPhHAlH/5DhRq7h/8pyou+C+R23tU9+rAs1/TifqVQai/tkCUXcBEvUqYNH/XJWTXHTXR8b8i+PT1MqgaaCJeiVQQ2Tj/dXxfKh6+ZUw3QLjphC1rkP0JIusndWOE7XScDVBw1+BGv7mCVEj+9fvjvcclZPfCT1nDYn81hCJWmuB3kPIelpL0nWtBaLuDCTqP3D3qK0+6/sPcP708WdVosN/Eoh6neNEreJe5zlRd8Z96tvas77Xa82rZW1Iz+sNRK3+IzZRdwYS9Xpk0VfjJBfd9ZExb1fN7WlqbdA00ES9FqghsvFmO54PVS/KR/R0C4ybQtS6DtGTLLJ2qpA1DGV2/LWXlY9oDVNrJ1MNc8Aa6gN9DUD2r6qO9xyVk6qEnlMNmOvUGapaNR5Ray3QewhZT7kkXXMDXW3S5TM52Fj0kVeN6HBeNfx5qwObLCvu6tX+ERh0XsowoQq5OmETAzcePd+uaoiMu4Ynw0QuMOZ8x4cJFWsNwjBR0/HhW+WlJrnnZKphAWlwKPgPBoenSYNDrWpEh2sRBofajg8OKu7angwOqpBrEzYxcOPR8+2qhsi4Cz0ZHAqAMW/v+OCgYi0kDA51HB8cVF7qkHtOphruQBocdqjGv4ffCXgPf0fgHrI5LO1YjTMs7VSN6PBOhGFpZ8eHJRX3zpaGpVBmh9gh8BV963AHYI6Q+a7r+AVUNbq6hAvoLo5fQFXMuxDi3pV00dvV8BEQtCbsnCH2+M6EoQe533dzvO6VhrsRNKwL1LCeJ6CFvObs7vh1QuVkd0K/3IPUL/cg3u7VWqD3ELKe9iTtIbSWewJjzs7a8ED7Oj4bp2mD4Dz1ZfwNpDWU1khaY2l7SWsiram0ZtKaS9tbWgtp+0jbV9p+0vaX1lJaSJqQFpYWkRaVViStWFpMWlxaibRW0g6QdqC0g6QdXO1vkVL3Tf1gzkhda2BYa2hYa2RYa2xY28uw1sSw1tSw1syw1tywtrdhrYVhbR/D2r6Gtf0Ma/sb1loa1kKGNWFYCxvWIoa1qGGtyLBWbFiLGdbihrUSw1orw9oBhrUDDWsHGdYONsy0OcHfQ4O/ocyODfZspv2lPqBX6Y9INwD2vSlNOL0+PReZxKxy0RCi3995bZT5ucKBfqIxMBdTXc5F9H9+ir0yizmUErNoksm5whvoJ5oCczHNzVyE0vwUzbYx5uLkRjGL5tt2rrhBP7E3MBfTXctF3OinaLH1Mcf+JWaxz9aeK/av+ol9gbmY4U4uwpvwU+y3NTHHNhmz2H/Lz1W+Gf1ES2AuZrqQi9hm/RShLYs5tAUxC7El5wptkX4iDMzFO/9tLoq20E8R2VzM0S2OWUQ3ea5ociv0E0XAXMz6r3IR2yo/RfG/xxzfyphF7F/OVZLcav1EHJiL2fZzEdoGP0WJKebQNsUsWm18LrGN+okDgLmYYzMXiW32Uxy4YcyRDGIWB6WcK5zMSD9xMDAX71rKRSizQwDfHxBAvhWpfJZpLt7zJBdADhLAOV7MBOZirie5AM57AjiviNnAXMzzJBfA65oA9mXxHjAX75NygX4UCHD/CmD9CZZ+6M8FIGeMQ2D3cSNWHwCF83vDD48eWo3pcDX8eQ8DFgMr7sOqpQiMOa/VB0AdDCu2hLUHQLUOND88uAn/v7uirYMiTF07vBr/AVCIrqXvbrYGFv3h4OQyNnjravhPRrWu5sfV7iBgro+AxVwctXm1O4J0tTuyGtHhIwlXu6Mcv9qpuI/y/Gp3EKzYSsoN7lKudkcHmh+TfrU72nC1O8bC1e4g4NXuaGDRH0NKLrrrI2M+Ftc9jZ99ztS/w4KmkQ2uQSQaHAeeFtBNS+X4OMKU5HrcunbQcR/vyXSIrPETyH0ilNkhVE5OIPSJ44AanujBfjmRsF9OAk/oelY5KcVXlhboejoBWE9tSLq2qcb/kv+BQB1OhukQrbBJrieD86ePU6oRHT6FQK6nOk6uKu5TPSfXA2HFVhY2uEsh17aB5qelk2tbA7meZoFcEV1Lk2tbYNGfRkouuusjYz7d8Ym0TdA00E/baAPUENl4z3A8H6peziBMt8C4KU9u0HWInmSRtXOm42SkNDyToOEZQA3P8uRdCWT/OtvxnqNycjah55xDIr9ziESttUDvIWQ9nUvS9VwLRI38pPt5MB1iYZtEfR44f/o4vxrR4fMJRH2B40St4r7Ac6I+AFZs8QqDuxSivjDQ/KJ0or7QQNQXWSBqRNfSRH0hsOgvIiUX3fWRMZc6Pk2dGzQNNFGfC9QQ2XjLHM+HqpcywnQLjJtC1LoO0ZMssnbKHSdqpWE5QcMyoIYJT4ga2b8qHO85KicVhJ6TJJFfkkjUWgv0HkLW08UkXS+2QNStgDpcAtOhwuqD6C8B508fl1YjOnwpgagvc5yoVdyXeU7UrWDFJpIGdylEfXmg+RXpRH25gaivsEDUiK6lifpyYNFfQUouuusjY77S8Wnq4qBpoIn6YqCGyMZ7leP5UPVyFWG6BcZNIWpdh+hJFlk77RwnaqVhO4KGVwE1vNoTokb2r2sc7zkqJ9cQes61JPK7lkjUWgv0HkLW03UkXa+zQNQlQB2uh+kQsUrU14Pzp48bqhEdvoFA1Dc6TtQq7hs9J+oSWLGVJw3uUoj6pkDzm9OJ+iYDUd9sgagRXUsT9U3Aor+ZlFx010fGfIvj09R1QdNAE/V1QA2RjfdWx/Oh6uVWwnQLjJtC1LoO0ZMssnbaO07USsP2BA1vBWp4mydEjexftzvec1RObif0nDtI5HcHkai1Fug9hKynO0m63mmBqJHPmr8LpkOp1edd3gXOnz7urkZ0+G4CUd/jOFGruO/xnKjjsGIrtva8y3sDze9LJ+p7DUR9nwWiRnQtTdT3Aov+PlJy0V0fGfP9jk9TdwZNA03UdwI1RDbeBxzPh6qXBwjTLTBuClHrOkRPssja6eA4USsNOxA0fACo4YOeEDWyfz3keM9ROXmI0HMeJpHfw0Si1lqg9xCynh4h6fqIBaKOAXV4FKZDuMQmUT8Kzp8+HqtGdPgxAlE/7jhRq7gf95yoY7BiS8QM7lKIumOg+RPpRN3RQNRPWCBqRNfSRN0RWPRPkJKL7vrImJ90fJp6JGgaaKJ+BKghsvE+5Xg+VL08RZhugXFTiFrXIXqSRdZOJ8eJWmnYiaDhU0ANn/aEqJH96xnHe47KyTOEntOZRH6diUSttUDvIWQ9dSHp2sUCURcDdXgWpkNZ3CZRPwvOnz6eq0Z0+DkCUT/vOFGruJ/3nKiLYcUWjRvcpRB110DzF9KJuquBqF+wQNSIrqWJuiuw6F8gJRfd9ZExv+j4NNUlaBpoou4C1BDZeF9yPB+qXl4iTLfAuClEresQPckia6eb40StNOxG0PAloIYve0LUyP71iuM9R+XkFULP6U4iv+5EotZaoPcQsp56kHTtYYGoi4A69ITpUGT1U989wfnTx6vViA6/SiDq1xwnahX3a54TdRHubSdrn/ruFWjeO52oexmIurcFokZ0LU3UvYBF35uUXHTXR8b8uuPTVI+gaaCJugdQQ2Tj7eN4PlS99CFMt8C4KUSt6xA9ySJrp6/jRK007EvQsA9Qw36eEDWyf73heM9ROXmD0HP6k8ivP5GotRboPYSspwEkXQdYIOooUIeBuDs0RTaJeiA4f/oYVI3o8CACUQ92nKhV3IM9J+ooDrrKDO5SiHpIoPnQdKIeYiDqoRaIGtG1NFEPARb9UFJy0V0fGfMwx6epAUHTQBP1AKCGyMY73PF8qHoZTphugXFTiFrXIXqSRdbOCMeJWmk4gqDhcKCGIz0hamT/etPxnqNy8iah54wikd8oIlFrLdB7CFlPo0m6jrZA1BGgDmNw82SxTaIeA86fPt6qRnT4LQJRj3WcqFXcYz0n6gjubadSg7sUoh4XaD4+najHGYh6vAWiRnQtTdTjgEU/npRcdNdHxjzB8WlqdNA00EQ9GqghsvFOdDwfql4mEqZbYNwUotZ1iJ5kkbUzyXGiVhpOImg4EajhZE+IGtm/3na856icvE3oOVNI5DeFSNRaC/QeQtbTVJKuUy0QdRiowzSYDnGrv541DZw/fUyvRnR4OoGoZzhO1CruGZ4TdRhWbLGkwV0KUc8MNH8nnahnGoj6HQtEjehamqhnAov+HVJy0V0fGfMsx6epqUHTQBP1VKCGyMY72/F8qHqZTZhugXFTiFrXIXqSRdbOHMeJWmk4h6DhbKCG73pC1Mj+9Z7jPUfl5D1Cz5lLIr+5RKLWWqD3ELKe5pF0nWeBqAVQh/c9Jer3wfnTxwfViA5/QCDq+Y4TtYp7vudELTwk6gWB5gvTiXqBgagXWiBqRNfSRL0AWPQLPSFqZMwfOj5NzQuaBpqo5wE1RDbeRY7nQ9XLIsJ0C4ybQtS6DtGTLLJ2FjtO1ErDxQQNFwE1/MgTokb2r48d7zkqJx8Tes4nJPL7hEjUWgv0HkLW0xKSrkssEHUIqMOnMB2KrD7r+1Nw/vTxWTWiw58RiPpzx4laxf2550QdghVbqbVnfS8NNP8inaiXGoj6CwtEjehamqiXAov+C1Jy0V0fGfOXjk9TS4KmgSbqJUANkY33K8fzoerlK8J0C4ybQtS6DtGTLLJ2ljlO1ErDZQQNvwJq+LUnRI3sX9843nNUTr4h9JxvSeT3LZGotRboPYSsp+UkXZdbIOqWQB2+wxF1wiZRfwfOnz6+r0Z0+HsCUa9wnKhV3Cs8J+qWOOiKGNylEPXKQPMf0ol6pYGof7BA1IiupYl6JbDofyAlF931kTH/6Pg0tTxoGmiiXg7UENl4f3I8H6pefiJMt8C4KUSt6xA9ySJrZ5XjRK00XEXQ8Ceghj97QtTI/vWL4z1H5eQXQs/5lUR+vxKJWmuB3kPIelpN0nW1BaLeH6jDbzAdwlbvUf8Gzp8+fq9GdPh3AlGvcZyoVdxrPCfq/WHFlrB2j3ptoPkf6US91kDUf1ggakTX0kS9Flj0f5CSi+76yJj/dHyaWh00DTRRrwZqiGy86xzPh6qXdYTpFhg3hah1HaInWWTtrHecqJWG6wkarkMOPrl+EDWyf22X63bPUTlRPqL3dDYw16kzVHYuj6i1Fug9hKynKiRdq+TyiXo/oA45MB0iEZtEnQPOnz6q5hIdrpqLP2+1XLeJWsVdLfcfgUHntUrU+8GGlvKEwV0KUecGmuflZm1Iz7m5GxO1+o/YRL0fkKhzgUWfl8tJLrrrI2Ou7vg0VSVoGmiirgLUENl4azieD1UvNQjTbQ0wyaD903WInmSRtZNP1jCU2fHXXs4naFgDqGFNT4ga2b8KHO85KicFhJ5Ti0R+tYhErbVA7yFkPdUm6VrbAlHvCyTqQpgOFVbvUReC86eP7XOJDm9PIOo6jhO1iruO50S9L4yohbV71DsEmu+YTtQ7GIh6RwtEvS+QqHcAFv2OuZzkors+MuadHJ+magdNA03UtYEaIhvvzo7nQ9XLzoTpFhg3hah1HaInWWTt1HWcqJWGdQka7gzUcBdPiBrZv3Z1vOeonOxK6Dm7kchvNyJRay3QewhZT/VIutazQNT7AIl6d5gOUatEvTs4f/rYI5fo8B4Eot7TcaJWce/pOVHvAyPqMmtEXT/QvEE6Udc3EHUDC0S9D5Co6wOLvkEuJ7noro+MuaHj01S9oGmgiboeUENk423keD5UvTQiTLfAuClEresQPckia6ex40StNGxM0LARUMO9PCFqZP9q4njPUTlpQug5TUnk15RI1FoL9B5C1lMzkq7NLBB1CyBRN4fpECuxSdTNwfnTx965RIf3JhB1C8eJWsXdwnOibgEj6njM4C6FqPcJNN83naj3MRD1vhaIugWQqPcBFv2+uZzkwt9HBca8n+PTVLOgaaCJuhlQQ2Tj3d/xfKh62Z8w3QLjphC1rkP0JIusnZaOE7XSsCVBw/2BGoY8IWpk/xKO9xyVE0HoOWES+YWJRK21QO8hZD1FSLpGLBD13kCijuLu0Fgl6ig4f/ooyiU6XEQg6mLHiVrFXew5Ue8NI+qoNaKOBZrH04k6ZiDquAWi3htI1DFg0cdzOclFd31kzCWOT1ORoGmgiToC1BDZeFs5ng9VL60I0y0wbgpR6zpET7LI2jnAcaJWGh5A0LAVUMMDPSFqZP86yPGeo3JyEKHnHEwiv4OJRK21QO8hZD0dQtL1EAtE3RxI1Ifi7lGHbBL1oeD86eOwXKLDhxGIurXjRK3ibu05UTeHEXVJyOAuhagPDzQ/Ip2oDzcQ9REWiLo5kKgPBxb9Ebmc5KK7PjLmIx2fpg4JmgaaqA8BaohsvEc5ng9VL0cRpltg3BSi1nWInmSRtXO040StNDyaoOFRQA2P8YSokf3rWMd7jsrJsYSecxyJ/I4jErXWAr2HkPV0PEnX4y0QdTMgUZ+AmyeFTaI+AZw/fZyYS3T4RAJRn+Q4Uau4T/KcqJvBiLo4aXCXQtRtAs1PTifqNgaiPtkCUTcDEnUbYNGfnMtJLrrrI2M+xfFp6vigaaCJ+nighsjGe6rj+VD1ciphugXGTSFqXYfoSRZZO20dJ2qlYVuChqcCNTzNE6JG9q/THe85KienE3rOGSTyO4NI1FoL9B5C1tOZJF3PtEDUTYFEfRbuM49Wfz3rLHD+9HF2LtHhswlEfY7jRK3iPsdzom6KezKZtV/POjfQ/Lx0oj7XQNTnWSDqpkCiPhdY9OflcpKL7vrImM93fJo6M2gaaKI+E6ghsvFe4Hg+VL1cQJhugXFTiFrXIXqSRdbOhY4TtdLwQoKGFwA1vMgTokb2r1LHe47KSSmh55SRyK+MSNRaC/QeQtZTOUnXcgtE3QRI1AmYDhVW71EnwPnTR0Uu0eEKAlEnHSdqFXfSc6Jugvv1LGv3qC8ONL8knagvNhD1JRaIugmQqC8GFv0luZzkors+MuZLHZ+myoOmgSbqcqCGyMZ7meP5UPVyGWG6BcZNIWpdh+hJFlk7lztO1ErDywkaXgbU8ApPiBrZv650vOeonFxJ6DlXkcjvKiJRay3QewhZT+1IurazQNR7AYn6apgOySKbRH01OH/6uCaX6PA1BKK+1nGiVnFf6zlR7wUj6lCZwV0KUV8XaH59OlFfZyDq6y0Q9V5Aor4OWPTX53KSi+76yJhvcHyaahc0DTRRtwNqiGy8NzqeD1UvNxKmW2DcFKLWdYieZJG1c5PjRK00vImg4Y1ADW/2hKiR/esWx3uOyskthJ5zK4n8biUStdYCvYeQ9dSepGt7C0TdGEjUt8F0KLH6qe/bwPnTx+25RIdvJxD1HY4TtYr7Ds+JujHue9TWPvV9Z6D5XelEfaeBqO+yQNSNgUR9J7Do78rlJBfd9ZEx3+34NNU+aBpoom4P1BDZeO9xPB+qXu4hTLfAuClEresQPckia+dex4laaXgvQcN7gBre5wlRI/vX/Y73HJWT+wk95wES+T1AJGqtBXoPIeupA0nXDhaIuhGQqB/E3aO2+qzvB8H508dDuUSHHyIQ9cOOE7WK+2HPiboR7lPf1p71/Uig+aPpRP2IgagftUDUjYBE/Qiw6B/N5SQX3fWRMT/m+DTVIWgaaKLuANQQ2Xgfdzwfql4eJ0y3wLgpRK3rED3JImuno+NErTTsSNDwcaCGT3hC1Mj+9aTjPUfl5ElCz3mKRH5PEYlaa4HeQ8h66kTStVOgq026bFgNG4s+ns4lOvw0gS6fcZwuVdzPEOjS5CtigzxD2MTAjUfPt6saIuPu7Mkw0QkYcxfHhwkVa2fCMPGs48O3ysuz5J6TqYbPkQaH5/6DwaEBaXB4Ppfo8POEwaGr44ODirurJ4ODKuSuhE0M3Hj0fLuqITLuFzwZHJ4Dxvyi44ODivUFwuDwkuODg8rLS+Sek6mG3UiDQzcL9/DrA+/hvwzcQzaHpZdzOcPSK7lEh18hDEvdHR+WVNzdLQ1LocwO0S3wFX3rsBswR8h893D8AqoaXQ/CBbSn4xdQFXNPQtyvki56rxo+AoLWhJ0zxB7vThh6kPv9NcfrXmn4GkHDHkANe3kCWshrTm/HrxMqJ70J/fJ1Ur98nXi7V2uB3kPIeupD2kNoLfsAY1ZwVNXgqzr65gb/Y3aWHXrqC0xAdoqf/YJB/43ctADQHwjtC8xMvy0/V/lmziXeAHeM/BTtkPqt2/T5wuVJESmqiBWFikujRYniSDgRjoUS0aKkkEKES6JShmR5NJ6IhyPJcCxcvg7r31+xZ6cUv8rRuuD1G8Hr/vLvAGkDc//ePLY+0T2Q1L3AOQ6najEo2JCDc7M2/PS2+h/+THMAvVkHAjbr35/eTiYHATf+YEujXCizQyBjHpJyLhGPhMOxiPrv4omQiCZkewuHE2XRUHmotDxcURIVJcloOBopT5SXyXOWimQoWVpekoz/7ZfN9/uGkN7vG5pLdHgo4f2+YY6/36fiHubJzdHBga/o8w4nccPw3H9GxNTJQP37xux/rpA3pby+Ofvvv5u7mo6Qf0dKe9Py1fRND6+mo4L6Hp1+NR1l4Wr6JvBqOgrYTEZ7cjVFxjzG06vpGNLV9K1cosNvEa6mYx2/mqq4x3pyNR0d+Io+7zjS1XRc7sZXOHT+kE2R7esIoK8NgvOMl+ecIG2itEnSJkt7W9oUaVOlTZM2XdoMaTOlvSNtlrTZ0uZIe1fae9LmSpsn7X1pH0ibL22BtIXSPpS2SNpiaR9J+1jaJ9KWBFfn1JyPD+5Upa5NMKxNNKxNMqxNNqy9bVibYlibalibZlibblibYVibaVh7x7A2y7A227A2x7D2rmHtPcPaXMPaPMPa+4a1Dwxr8w1rCwxrCw1rHxrWFhnWFhvWPjKsfWxY+8SwtiR347uiOcHfQ4O/ocyODfZspn12PGywDIkJQL++aMIZLNNzkUnMKhcTIfr9nddJmZ8rrN+TngzMxZcu5yL6z/vwb2cWcyj1Pf0pmZwrvOH9ganAXHzlZi5C6fdEpm1jzMXJje+vTN+2c8VN92pmAHOxzLVcxM33p2Zufcyxf7vX9c7Wniv27/fNZgFz8bU7uQhv6l7h7K2JObbp+45ztvxcm72H+S4wF9+4kIvYZv0U721ZzKEtiFnM3ZJzhbZIPzEPmItv/9tcFG2hn+L9zcUc3eKYxQebPFc0uRX6ifnAXCz/r3IR2yo/xYJ/jzm+lTGLhf9yrpLkVusnPgTm4jv7uQhtg59ikSnm0DbFLBZvfC6xjfqJj4C5+N5mLhLb7Kf4eMOYIxnELD5JOVc4mZF+YgkwFyss5SKU2SGA7w8IIN+KVD7LNBcrPckFkIMEcI4X3wBz8YMnuQDOewI4r4jvgLn40ZNcAK9rAtiXxUpgLn4i5QL9AQrg/hXA+hNI/VT97iytQXC+JcE9sY+De2SLg3tmHwb30BYE99Q+CO6xzQvuub0X3IObE9yTmxXco5sZ3LObHtzDmxrc03s7uMc3Kbjnp+4DqPsK6Uf6hzoyrT3k3PNpLioPEauPNcf5veGHOj7LJTqsTo4+7+fAYmDF/XnKpgCd1+pjzZfAii1h7bHmSwPNvwg+GPC/O7VLgyJMXfsil/9Yc0TX0ndclyLvuIKTy9jgS3PxnzRamsuZYNBXu0+Qd3RhMRdHbV7tviRd7b7KJTr8FeFqt8zxq52Ke5nnV7tPYMVWUm5wl3K1+zrQ/Jv0q93XhqvdNxaudp8Ar3ZfI+9RkpKL7vrImL/FdU/jN/oz9e/zoGlkg2sQiQbLwdMCummpHC8nTEmux61rBx33d55Mh8ga/57cJ0KZHULl5HtCn1iOvI/mwX5ZQdgvK8ETup5VVqb4ytICXU/fA+vpB5KuP+RuTG7o3vQxUIcfYTpEK2yS64/g/Onjp1yiwz8RyHWV4+Sq4l7lObl+DCu2srDBXQq5/hxo/ks6uf5sINdfLJAromtpcv0ZWPS/kJKL7vrImH91fCL9IWga6GfI/gDUENl4VzueD1UvqwnTLTBuyrexdR2iJ1lk7fzmOBkpDX8jaLgaqOHvnrwrgexfaxzvOSonawg9Zy2J/NYSiVprgd5DyHr6g6TrHxaIGvnp+z9hOsTCNon6T3D+9LEul+jwOgJRr3ecqFXc6z0n6o9gxRavMLhLIWpNyNulP6NC/Q/pRK3+IzZRI7qWJmrlbKbn0kW/XR4nueiuj4w5O8/taeqPoGmgifoPYLNENt4qjudD1UuVPPx0C4ybQtS6DtGTLLJ2csgahjI7/trLyke0hlWA/bAqWEN9oK8ByP5VzfGeo3JSjdBzcoG5Tp2hcvN4RK21QO8hZD3lkXTNy+MT9WKgDtVhOlRYfUBsdXD+9FEjj+hwjTz8efOBFxZW3PkptAY6r1WiXgwjapE0uEsh6pqB5gXpRF3TQNQFFoh6MZCoawKLviCPk1x010fGXMvxaSovaBpoos4DaohsvLUdz4eql9qE6RYYN4WodR2iJ1lk7RQ6TtRKw0KChrWBGm7vCVEj+1cdx3uOykkdQs/ZgUR+OxCJWmuB3kPIetqRpOuOFoh6EZCod4LpELFK1DuB86ePnfOIDu9MIOq6jhO1iruu50S9CEbU5daIepdA813TiXoXA1HvaoGoFwGJehdg0e+ax0kuuusjY97N8Wlqx6BpoIl6R6CGyMZbz/F8qHqpR5hugXFTiFrXIXqSRdbO7o4TtdJwd4KG9YAa7uEJUSP7156O9xyVkz0JPac+ifzqE4laa4HeQ8h6akDStYEFokY+/74hTIdSq8+7bAjOnz4a5REdbkQg6saOE7WKu7HnRP0h7jF51p53uVegeZN0ot7LQNRNLBD1h0Ci3gtY9E3yOMlFd31kzE0dn6YaBE0DTdQNgBoiG28zx/Oh6qUZYboFxk0hal2H6EkWWTvNHSdqpWFzgobNgBru7QlRI/tXC8d7jspJC0LP2YdEfvsQiVprgd5DyHral6TrvhaIeiGQqPeD6RAusUnU+4Hzp4/984gO708g6paOE7WKu6XnRL0Q9yMDMYO7FKIOBZqLdKIOGYhaWCDqhUCiDgGLXuRxkovu+siYw45PU/sGTQNN1PsCNUQ23ojj+VD1EiFMt8C4KUSt6xA9ySJrJ+o4USsNowQNI0ANizwhamT/Kna856icFBN6ToxEfjEiUWst0HsIWU9xkq5xC0S9AEjUJTAdyuI2iboEnD99tGIRtXK4FYGoD3CcqFXcB3hO1AtwD8SPG9ylEPWBgeYHpRP1gQaiPsgCUS8AEvWBwKI/KI+TXHTXR8Z8sOPTVDxoGmiijgM1RDbeQxzPh6qXQwjTLTBuClHrOkRPssjaOdRxov5rzxE0PASo4WGeEDWyf7V2vOeonLQm9JzDSeR3OJGotRboPYSspyNIuh5hgajnA4n6SJgORVY/9X0kOH/6OCqP6PBRBKI+2nGiVnEf7TlRz8f9wJK1T30fE2h+bDpRH2Mg6mMtEPV8IFEfAyz6Y/M4yUV3fWTMxzk+TR0RNA00UR8B1BDZeI93PB+qXo4nTLfAuClEresQPckia+cEx4laaXgCQcPjgRqe6AlRI/vXSY73HJWTkwg9pw2J/NoQiVprgd5DyHo6maTryRaI+gMgUZ+Cu0NTZJOoTwHnTx+n5hEdPpVA1G0dJ2oVd1vPifoDHFGXGdylEPVpgeanpxP1aQaiPt0CUX8AJOrTgEV/eh4nueiuj4z5DMenqZODpoEm6pOBGiIb75mO50PVy5mE6RYYN4WodR2iJ1lk7ZzlOFErDc8iaHgmUMOzPSFqZP86x/Geo3JyDqHnnEsiv3OJRK21QO8hZD2dR9L1PAtE/T6QqM/HzZPFNon6fHD+9HFBHtHhCwhEfaHjRK3ivtBzon4f96nvUoO7FKK+KNC8NJ2oLzIQdakFon4fSNQXAYu+NI+TXHTXR8Zc5vg0dV7QNNBEfR5QQ2TjLXc8H6peygnTLTBuClHrOkRPssjaSThO1ErDBEHDcqCGFZ4QNbJ/JR3vOSonSULPuZhEfhcTiVprgd5DyHq6hKTrJRaIeh6QqC+F6RC3+utZl4Lzp4/L8ogOX0Yg6ssdJ2oV9+WeE/U8GFHHrP161hWB5lemE/UVBqK+0gJRzwMS9RXAor8yj5NcdNdHxnyV49PUJUHTQBP1JUANkY23neP5UPXSjjDdAuOmELWuQ/Qki6ydqx0naqXh1QQN2wE1vMYTokb2r2sd7zkqJ9cSes51JPK7jkjUWgv0HkLW0/UkXa+3QNRzgUR9g6dEfQM4f/q4MY/o8I0Eor7JcaJWcd/kOVHP9ZCobw40vyWdqG82EPUtFoh6LpCobwYW/S2eEDUy5lsdn6auD5oGmqivB2qIbLztHc+Hqpf2hOkWGDeFqHUdoidZZO3c5jhRKw1vI2jYHqjh7Z4QNbJ/3eF4z1E5uYPQc+4kkd+dRKLWWqD3ELKe7iLpepcFon4PSNR3w3Qosvqs77vB+dPHPXlEh+8hEPW9jhO1ivtez4n6PRhRl1p71vd9geb3pxP1fQaivt8CUb8HJOr7gEV/fx4nueiuj4z5AcenqbuCpoEm6ruAGiIbbwfH86HqpQNhugXGTSFqXYfoSRZZOw86TtRKwwcJGnYAaviQJ0SN7F8PO95zVE4eJvScR0jk9wiRqLUW6D2ErKdHSbo+aoGo3wUS9WM4ok7YJOrHwPnTx+N5RIcfJxB1R8eJWsXd0XOifhdH1BGDuxSifiLQ/Ml0on7CQNRPWiDqd4FE/QSw6J/M4yQX3fWRMT/l+DT1aNA00ET9KFBDZOPt5Hg+VL10Iky3wLgpRK3rED3JImvnaceJWmn4NEHDTkANn/GEqJH9q7PjPUflpDOh53QhkV8XIlFrLdB7CFlPz5J0fdYCUc8BEvVzMB3CVu9RPwfOnz6ezyM6/DyBqLs6TtQq7q6eE/UcGFEnrN2jfiHQ/MV0on7BQNQvWiDqOUCifgFY9C/mcZKL7vrImF9yfJp6NmgaaKJ+FqghsvF2czwfql66EaZbYNwUotZ1iJ5kkbXzsuNErTR8maBhN6CGr3hC1Mj+1d3xnqNy0p3Qc3qQyK8Hkai1Fug9hKynniRde1og6tlAon4VpkMkYpOoXwXnTx+v5REdfo1A1L0cJ2oVdy/PiXo2jKjLEwZ3KUTdO9D89XSi7m0g6tctEPVsIFH3Bhb963mc5KK7PjLmPo5PUz2DpoEm6p5ADZGNt6/j+VD10pcw3QLjphC1rkP0JIusnX6OE7XSsB9Bw75ADd/whKiR/au/4z1H5aQ/oecMIJHfACJRay3QewhZTwNJug60QNSzgEQ9CKZDhdV71IPA+dPH4Dyiw4MJRD3EcaJWcQ/xnKhnwYhaWLtHPTTQfFg6UQ81EPUwC0Q9C0jUQ4FFPyyPk1x010fGPNzxaWpg0DTQRD0QqCGy8Y5wPB+qXkYQpltg3BSi1nWInmSRtTPScaJWGo4kaDgCqOGbnhA1sn+NcrznqJyMIvSc0STyG00kaq0Feg8h62kMSdcxFoj6HSBRvwXTIWqVqN8C508fY/OIDo8lEPU4x4laxT3Oc6J+B0bUZdaIenyg+YR0oh5vIOoJFoj6HSBRjwcW/YQ8TnLRXR8Z80THp6kxQdNAE/UYoIbIxjvJ8XyoeplEmG6BcVOIWtchepJF1s5kx4laaTiZoOEkoIZve0LUyP41xfGeo3IyhdBzppLIbyqRqLUW6D2ErKdpJF2nWSDqmUCing7TIVZik6ing/Onjxl5RIdnEIh6puNEreKe6TlRz4QRdTxmcJdC1O8Ems9KJ+p3DEQ9ywJRzwQS9TvAop+Vx0ku/H1UYMyzHZ+mpgVNA03U04AaIhvvHMfzoeplDmG6BcZNIWpdh+hJFlk77zpO1ErDdwkazgFq+J4nRI3sX3Md7zkqJ3MJPWceifzmEYlaa4HeQ8h6ep+k6/sWiHoGkKg/wN2hsUrUH4Dzp4/5eUSH5xOIeoHjRK3iXuA5Uc+AEXXUGlEvDDT/MJ2oFxqI+kMLRD0DSNQLgUX/YR4nueiuj4x5kePT1PtB00AT9ftADZGNd7Hj+VD1spgw3QLjphC1rkP0JIusnY8cJ2ql4UcEDRcDNfzYE6JG9q9PHO85KiefEHrOEhL5LSEStdYCvYeQ9fQpSddPLRD1dCBRf4a7Rx2ySdSfgfOnj8/ziA5/TiDqpY4TtYp7qedEPR1G1CUhg7sUov4i0PzLdKL+wkDUX1og6ulAov4CWPRf5nGSi+76yJi/cnya+jRoGmii/hSoIbLxLnM8H6pelhGmW2DcFKLWdYieZJG187XjRK00/Jqg4TKght94QtTI/vWt4z1H5eRbQs9ZTiK/5USi1lqg9xCynr4j6fqdBaKeBiTq73HzpLBJ1N+D86ePFXlEh1cQiHql40St4l7pOVFPgxF1cdLgLoWofwg0/zGdqH8wEPWPFoh6GpCofwAW/Y95nOSiuz4y5p8cn6a+C5oGmqi/A2qIbLyrHM+HqpdVhOkWGDeFqHUdoidZZO387DhRKw1/Jmi4CqjhL54QNbJ//ep4z1E5+ZXQc1aTyG81kai1Fug9hKyn30i6/maBqKcCifp33Gcerf561u/g/OljTR7R4TUEol7rOFGruNd6TtRTcU8ms/brWX8Emv+ZTtR/GIj6TwtEPRVI1H8Ai/7PPE5y0V0fGfM6x6ep34KmgSbq34AaIhvvesfzoeplPWG6BcZNIWpdh+hJFnrRru42USsNlY9oDdcDNdwOrKE+0NcAZP/Kru52z1E5UT6i93QVYK5TZ6gq1XlErbVA7yFkPeWQdM2pzifqKUCirgrTocLqPeqq4Pzpo1p1osPVquPPm1vdbaJWcedW/0dg0HmtEvUU3K9nWbtHnRdoXr161ob0nFd9Y6JW/xGbqKcAiToPWPTVq3OSi+76yJhrOD5N5QRNA03UOUANkY033/F8qHrJJ0y3+WCSQfun6xA9ySJrp6bjRK00rEnQMB+oYYEnRI3sX7Uc7zkqJ7UIPac2ifxqE4laa4HeQ8h6KiTpWmiBqN8GEvX2MB2SRTaJentw/vRRpzrR4ToEot7BcaJWce/gOVG/DSPqUJnBXQpR7xhovlM6Ue9oIOqdLBD120Ci3hFY9DtV5yQX3fWRMe/s+DRVGDQNNFEXAjVENt66judD1UtdwnQLjJtC1LoO0ZMssnZ2cZyolYa7EDSsC9RwV0+IGtm/dnO856ic7EboOfVI5FePSNRaC/QeQtbT7iRdd7dA1JOBRL0HTIcSq5/63gOcP33sWZ3o8J4Eoq7vOFGruOt7TtSTcd+jtvap7waB5g3TibqBgagbWiDqyUCibgAs+obVOclFd31kzI0cn6Z2D5oGmqh3B2qIbLyNHc+HqpfGhOkWGDeFqHUdoidZZO3s5ThRKw33ImjYGKhhE0+IGtm/mjrec1ROmhJ6TjMS+TUjErXWAr2HkPXUnKRrcwtEPQlI1Hvj7lFbfdb33uD86aNFdaLDLQhEvY/jRK3i3sdzop6E+9S3tWd97xtovl86Ue9rIOr9LBD1JCBR7wss+v2qc5KL7vrImPd3fJpqHjQNNFE3B2qIbLwtHc+HqpeWhOkWGDeFqHUdoidZZO2EHCdqpWGIoGFLoIbCE6JG9q+w4z1H5SRM6DkREvlFiESttUDvIWQ9RUm6RgNdbdLlxFxsLPooqk50uIhAl8WO06WKu5hAlyZfERukmLCJgRuPnm9XNUTGHfNkmIgCY447PkyoWGOEYaLE8eFb5aWE3HMy1bAVaXBo9R8MDhNIg8MB1YkOH0AYHA50fHBQcR/oyeCgCvlAwiYGbjx6vl3VEBn3QZ4MDq2AMR/s+OCgYj2IMDgc4vjgoPJyCLnnZKrhoaTB4VAL9/DHA+/hHwbcQzaHpcPA+dNH6+pEh1sThqXDHR+WVNyHWxqWQpkd4tDAV/Stw0OBOULm+wjHL6Cq0R1BuIAe6fgFVMV8JCHuo0gXvaMMHwFBa8LOGWKPH04YepD7/WjH615peDRBwyOAGh7jCWghrznHOn6dUDk5ltAvjyP1y+OIt3u1Fug9hKyn40l7CK3l8eDZWh/ovT4SCIQnpMQs4pFwOBZR/108Id+4T5SH4+FwoiwaKg+VlocrSqKiJBkNRyPlifIyec5SkQwlS8tLkvG/z2UTCE8gAeGJ1YkOn0gAwpMcB0IV90kEIFTFVi3Lzoe6R+ZyGli6JpluwNRCbpP6zhT6SnkScEJIvVK22cSVcjM+l29GnL82SpttuFJuTvQ2wA14MmkCUee9axtrQUjtykUoGSoJh0pDsfLiWFlJIlwWL01GkkWRRGRbdd1csSN1PYWk6ynbruv/F/V6KknXU/+P12tbkq5tA13VxTM7y86khrx4pl7sTwuGitPVNYNxgWtDmNbaOP621rZujtBWxJ2pj2c4/raWKswzCG9PnElqCmduotmGMjvE6SQtziJpcRZRC9UIGVpkN3W7p7D2Q5X/Nu7yzfhHq/0ccNz6QH+LF1iXAphrgdRPDVJyWxvfhcjaSj03V0+p52Rcs1CapA6VZ2/qXYhQZoc4g3QROHvb368Xm/u/o3w+m9AU8khNIWcrc7Y1w1umMZ9T3c0Gg8xFal2ekzKcbGt+Nqc5Mj/npt5biETk3kjERDKRjBTFSsJlojhSXJyMJmPF8WgiWRQtTcQqRLQ0Ei6piIWSIl5RESuKlMeKkyWJ8uJkatMWiUgkmigpKxdF4eLSslA8ESkNJaOxiAT+RCSWSETixcWlkUiiOJ6Ml0hIl+gfDxXFYiWh4nCkJMzKz7kpdI26KGzu3ZzUc/pyUTjPx4vCeeSLwnmEi0INRy4K/1rEsb8e0pJENp3zHb0o1CA1nfMBF4XNvbWJzM8Fjl4UWPm54P+jt1wvDN5yvcj0lmsos+Nf73cg71Vmei7g27eUT0ZpDdGfaGZpmOm5Sh3Ph9owpYQLexlpyCkjvv15EUmLcpIW5eS3ghla1HT8rWDWfihw/K1gVu3X8uStYGBdCmCuRa3Kt4LTj7+uWShNUofdBJP6S0kXgQSR+pXPCUJTqOPJW8GlwEGworqbDaYOiSorLLwVjMxPEkj9tYDUz8pP0pCfrf1Mzebe+kXm52JS/7wYoMPm3p1C6nAJSYdLPKuHS0k6XOpZPVxG0uGyLbhV5PJgZ3AXVsepQ+PlPg6Nl5OHxssJQ+OOlobGDD8VD21yVwDPhRwadyQNJVdswdCY6afrkfm5sjpu0EMOjaz8XAm4OG7mEEuA3x29CtY/45QPYp8UvOuGvqOErPF2jt/BUDluR7jeXE269qrzbu7ZJJn6fg3Qd+X3zlkbH6jz/5sGocwOcU119328Fu2jL5trZ8dvA6mYryXEXdeRdz43c2xQmJnGfB3wAgKsG4HMBblJ/u92yv/FJnnd/9Umeb3jXyNUMV9PiPsG0uR1Q8rkxfhaqmmSD2V2COQkf6Pj9aTI70ZCPd3kwT66iRD3zaR9dPMm9lEos4PWU3Zr+n+zBupZ+vxNpn7eAhwSgbkW9UjvpN0S7KFKuub5eCt7cERQ5q2ETb+nJ5R5qwebPtNc1PekAbcH5gJYf6J+JaV70WzbV+fUObw53ob8+l2Wn1fv2zwoqNt9Kag7cI6GfS2oOzwoqDt9Kai7cI5GfC2ouzwoqLt9Kah7cI5GfS2oezwoqHt9Kaj7cI4W+VpQ93lQUPf7UlAP4Bwt9rWgHvCgoDr4UlAP4hyN+VpQD3pQUA/5UlAP4xyN+1pQD3tQUI/4UlCP4hwt8bWgHvWgoB7zpaAexzla6mtBPe5BQXX0paCewDla5mtBPeFBQT3pS0E9hXO03NeCesqDguqE9NHXRF2a7b6PT/uy85/BOVrha0E948HO71y580Mi4cHO7+LLzn8W5qjw9quIz3qw85/zpaCexxWUt5/fed6DgurqS0G9gCsobz+/84IHBfWiLwX1Eq6gvP38zkseFFQ3XwrqZVxBefv5nZc9KKhXfCmo7riC8vbzO909KKgevhRUT1xBefv5nZ4eFNSrvhTUa7iC8vbzO695UFC9fCmo3riC8vbzO709KKjXfSmoPriC8vbzO308KKi+vhRUP1xBefv5nX4eFNQblffIQuJ0D+6R9fdl5w/A7XxvPxczwIOdP9CXghqEK6iErwU1yIOCGuxLQQ3BFZS3n98Z4kFBDfWloIbhCirpa0EN86CghiN9VL8lox96pp1tmJa0bHAAwIeoips8SNjtHvh4pwc+3u2Bj/d64OP9HvjYwQMfH/LAx0c88PExD3zs6IGPT3rgYycPfHzaAx87e+BjFw98fM4DH7t64OOLHvjYzQMfX/HAxx4e+PiqBz728sDH1z3wsa8HPr7hgY/9PfBxoAc+DvbAx6Ee+Dic4GMW1MdILMtwYM4dFrxzh0LZKTnT5xwh9R4p7U1po6SNljZG2lvSxkobJ228tAnSJkqbJG2ytLelTZE2Vdo0adOlzZA2U9o70mZJmy1tjrR3pb0nba60edLel/aBtPnSFkhbKO1DaYukLZb2kbSPpX0ibYm0T6V9Ju1zaUulfSHtS2lfSVsm7Wtp30j7Vtpyad9J+17aCmkrpf0g7UdpP0lbJe1nab9I+7X63xqsrh6Ion8VRImSl7Y20rD2pmFtlGFttGFtjGHtLcPaWMPaOMPaeMPaBMPaRMPaJMPaZMPa24a1KYa1qYa1aYa16Ya1GYa1mYa1dwxrswxrsw1rcwxr7xrW3jOszTWszTOsvW9Y+8CwNt+wttCw9qFhbZFhbbFh7SPD2seGtU8Ma0sMa58a1j4zrH1uWFtqWPvCsPalYe0rw9oyw9rXhrVvDGvfGtaWG9a+M6x9b1hbYVhbaVj7wbD2o2HtJ8PaKsPaz4a1XwxrvxrWVPNrkLXhgf5Rk9Sbfw79ipwYUZ0zbGSD9QPeTBQjPYkZeHNSvOlJzMCbnWKUJzEDb56K0Z7EDLwZK8Z4EjPw5q54y5OYgTeLxVhPYgbefBbjPIkZeDNbjPckZuDNcTHBk5iBN9vFRE9iBt68F5M8iRn4YQAx2ZOYgR8uEG97EjPwwwpiiicxAz/8IKZ6EjPwwxRimicxAz+cIaZ7EjPwwx5ihicxAz88ImZ6EjPwwyjiHU9iBn64RczyJGbgh2XEbE9iBn74RszxJGbgh3nEu57EDPxwkHjPk5iBHzYScz2JGfjhJTHPk5iBH4YS73sSM/DDVeIDT2IGflhLzCfFvF1azKHMDrEAcC+7IqmO8lL1RdzqKXnZLsVPlv+Me95oHyu/PIvxsfLLsxgfK788i/Gx8suzGB8rvzyL8bHyy7MYHyu/PIvxsfLLsxgfK788i/Gx8suzGB8rvzyL8bHyy7MYHyu/PIvxsfLLsxgfK788i/HRxy/PYs4bp2n6oQd5X+SBj4s98PEjD3z82AMfP/HAxyUe+PipBz5+5oGPn3vg41IPfPzCAx+/9MDHrzzwcZkHPn7tgY/feODjtx74uNwDH7/zwMfvPfBxhQc+rvTAxx888PFHD3z8yQMfV3ng488e+PiLBz7+SnyfD+dnOGz6XONv0vffpa2RtlbaH9L+lLZO2nr1Ycga8r+Xli2tirQcaVWlVZOWKy1PWnVpNaTlS6sprUBaLWm1pRVK215aHWk7SNtR2k7SdpZWV9ou0naVtpu0etJ2l7aHtD2l1ZfWQFpDaY2kNZa2l7Qm0ppKayatubS9pbWQto+0faXtJ21/aS2lhaQJaWFpEWlRaUXSiqXFavytQbxG1oYPYVKipD+Y6XfD2hrD2lrD2h+GtT8Na+sMa+sNayop6WvbGdayDWtVDGs5hrWqhrVqhrVcw1qeYa26Ya2GYS3fsFbTsFZgWKtlWKttWCs0rG1vWKtjWNvBsLajYW0nw9rOhrW6hrXdDGv1DGu7G9b2MKztaVirb1hrYFhraFhrZFhrbFjby7DWxLDW1LDWzLDW3LC2t2GthWFtH8Pavoa1/Qxr+xvWWhrWQoY1YVgLG9YihrWoYa3IsFZsWIsZ1lSja5C14aEvCocGfzP9EgLwA+3iN0++eIF8INzvnsSMfCDcGk9iRj4Qbq0nMSMfCPeHJzEjHwj3pycxIx8It86TmJEPhFvvSczIB8IpDvEhZuQD4bbzJGbkA+GyPYkZ+UC4Kp7EjHwgXI4nMSMfCFfVk5iRD4Sr5knMyAfC5XoSM/KBcHmexIx8IFx1T2JGPhCuhicxIx8Il+9JzMgHwtX0JGbkA+EKPIkZ+UC4Wp7EjHwgXG1PYkY+EK7Qk5iRD4Tb3pOYkQ+Eq+NJzMgHwu3gSczIB8Lt6EnMyAfC7eRJzMgHwu3sSczIB8LVJcW8XVrMocwOsUuNzPXTD4Rj+rkrzM+4YNYQ8AuXYjdP9g3wC5yinicxA78QKnb3JGbgF0zFHp7EDPzCqtjTk5iBX4AV9T2JGfiFWtHAk5iBX9AVDT2JGfiFX9HIk5iBXyAWjT2JGfiFZLGXJzEDv+AsmngSM/AL06KpJzEDv4AtmnkSM/AL3aK5JzEDvyAu9vYkZuAXzkULT2IGfoFd7ONJzMAvxIt9PYkZ+AV7sZ8nMQO/sC/29yRm4AMAREtPYgY+UECEPIkZ+IACITyJGfjAAxH2JGbgAxRExJOYgQ9kEFFPYgY+4EEUeRIz8IERotiTmIEPoBAxYMzqB7XUsxWqBOfbLiXmrJS1VC1CmR2VP6gF8rHyB7UwPlb+oBbGx8of1ML4WPmDWhgfK39QC+Nj5Q9qYXys/EEtjI+VP6iF8bHyB7UwPlb+oBbGx8of1ML4WPmDWhgfK39QC+Nj5Q9qYXys/EEtxHkrf1CL4WPlD2phfKz8QS2Mj5U/qIXxsfIHtTA+Vv6gFsbHyh/UwvhY+YNaGB8rf1AL42PlD2phfKz8QS2Mj5U/qIXxsfIHtTA+Vv6gFsbHyh/Uwvjoyw9qEc8ttkvRVp+zpEZWVitpB0g7UNpB0g6Wdoj6zKa0w6S1lna4tCOkHSntKGlHSztG2rHSjpN2vLQTpJ0o7SRpbaSdLO0UaadKayvtNGmnSztD2pnSzpJ2trRzpJ0r7Txp50u7QNqF0i6SViqtTFq5tIS0CmlJaRdLu0TapdIuk3a5tCukXSntKmntpF0t7Rpp10q7Ttr10m6QdqO0m6TdXCNrwx+zKTH8wE0rw9oBhrUDDWsHGdYONqwdYlg71LB2mGGttWHtcMPaEYa1Iw1rRxnWjjasHWNYO9awdpxh7XjD2gmGtRMNaycZ1toY1k42rJ1iWDvVsNbWsHaaYe10w9oZhrUzDWtnGdauMaxda1i7zrB2vWHtBsPajYa1mwxrNwdrqUd28PfQ4K9LP+xU4skH65E/7NTKk5iRP+x0gCcxI3/Y6UBPYkb+sNNBnsSM/GGngz2JGfnDTod4EjPyh50O9SRm5A87HeZJzMgfdmrtSczIH3Y63JOYkT/sdIQnMSN/2OlIT2JG/rDTUZ7EjPxhp6M9iRn5w07HeBIz8oedjvUkZuQPOx3nSczIH3Y63pOYkT/sdIInMSN/2OlET2JG/rDTSZ7EjPxhpzaexIz8YaeTPYkZ+cNOp3gSM/KHnU71JGbkDzu19SRm5A87neZJzMgfdjrdk5iRP+x0hicxI3/Y6UxPYkb+sNNZpJjRHwo6u0bm+tn4YadzYH5u+MNOaD/P9STv53ni5/me+HmBJ35e6ImfF3niZ6knfpZ54me5J34mPPGzwhM/k574ebEnfl7iiZ+XeuLnZZ74ebknfl7hiZ9XeuLnVZ742c4TP68m+ZmTqZ9iw39ek5mfG5zt2kxjTjnbdQBe1+/LNGrqaC5CG0Z9PaJmgrPdgKm/v852IzAXjd3ORUhHfRNu/4qbgecC1rJIzUVG74lVJEvUjwrUyvrnPVVKbsi1HcrkcLdmGF+2/F/PSs33LTX+/ntr+pcC1f/wSdqa+o8aZFUWSqYNtakPDTWtoLcx5nAQs7gFqN+twE3LykU2OBdI/dobzlUWKk8UibLiRExUlBbFy8tLIkKES4tLi8vC8WRFWZGIF8XlOctLw3H5fy5cWi4qQqXFFeoiUpD1zzCeeqAH9PbABpvq7201iA6rk6PPezuwGFhx317jH4FB5zX6imgmylfUhv3fN16BOboDXPj6gq7O21D+tTkJXgO8wF8LvMBfB7yoXF+Dc1EB7SfjJHhnsF/vSp8E7zRMgncxJ8HAyeuB08edwM14V8q5womiilBJvCweLiuNxMqikbKSklJ53mIh4slEOJSIhpNFori4vKSiJCkiybKiitLiotKS4sRfV89EI0+mD6R+d3s6fdxNmj7uqUF0+B7C9HGv49OHivteT6aPuwJf0dMHMkf3kaaP+/6D6QP0Wda/zgb7jKjAfvaS+XB/QC6M08f9wX59IH36uN8wfTxg4X0oHwol043d3JP3oYZXx02C9wMb4wNAZGjuySSI1K+Dp5NgB9Ik+GANosMPEibBhxyfBFXcD3kyCT4Q+IqeBJE5epg0CT78H0yCrwMv8H2BF3jkt+r6ezgJPhLs10fTJ8FHDJPgoxYmQR8KJdON3cKTSbA/cBJ8BNgYHwVOgi08mQSR+j3m6ST4GGkSfLwG0eHHCZNgR8cnQRV3R08mwUcDX9GTIDJHT5AmwSf+g0nwFeAFvgfwAo98XkovDyfBJ4P9+lT6JPikYRJ8ysIk6EOhZLqx9/VkEuwFnASfBDbGp4CT4L6eTIJI/Tp5Ogl2Ik2CT9cgOvw0YRJ8xvFJUMX9jCeT4FOBr+hJEJmjzqRJsPN/MAk+B7zAdwVe4JFPwuzm4STYJdivz6ZPgl0Mk+CzFiZBHwol0429vyeTYDfgJNgF2BifBU6C+3syCSL1e87TSfA50iT4fA2iw88TJsGujk+CKu6unkyCzwa+oidBZI5eIE2CL/wHk2An4AX+aeAFHvkbB108nARfDPbrS+mT4IuGSfAlC5OgD4WS6cYOeTIJdgFOgi8CG+NLwEkw5MkkiNSvm6eTYDfSJPhyDaLDLxMmwVccnwRV3K94Mgm+FPiKngSROepOmgS7/weT4CPAC/xjwAs88tfrnvRwEuwR7Nee6ZNgD8Mk2NPCJOhDoWS6scOeTIJPAifBHsDG2BM4CYY9mQSR+r3q6ST4KmkSfK0G0eHXCJNgL8cnQRV3L08mwZ6Br+hJEJmj3qRJsPd/MAneC7zA3w+8wCN/l/whDyfB14P92id9EnzdMAn2sTAJ+lAomW7sqCeT4EPASfB1YGPsA5wEo55Mgkj9+no6CfYlTYL9ahAd7keYBN9wfBJUcb/hySTYJ/AVPQkic9SfNAn2tzkJBhfl24EX5TuB09vd1XFDzAgPJ8EBwX4dmD4JDjBMggOZk6BHhZLpxi52fRI0FHSmk+AAYGMcCJwEiz2ZBJH6DfJ0EhxEmgQH1yA6PJgwCQ5xfBJUcQ/xZBIcGPiKngSRORpKmgSHBpNg6oHWdxjA90gs/tdfpp/DAX4Wl4ZKKoqLY0w/RwD8LCsrjpVWxIuYfo5E5L28uCIZiYWZfr4J8LO0KJpMFkVKmX6OAvhZJEIVReFYkunnaICfJWWhouJ4vJzp5xiAnyIZjyRKSsuYfr6FyHtZhRzvRInyrW7WhjCX+hZ/6gc/Uj8OnPolsdRHB6Q+UEq9fiDl9bCU19dU3/bXd6Wc59aU18NTXo9IeT0y5fWbKa9HpbwenfJ6TMrrt4LXY+XfcdLGS5sgbaK0SdImS3u7xsbvmKDnp7eB13sNhVPkOadKmyZtekD7qbOA+t/zsjZcm2pYm2ZYmx6spR7o2xJvA+epKYBz/fWbYMmQmAr0K06C0SppucgkZpWLaRD9/s7rdCDMI/Vj7/HJhD0+Q55zprR3pM0y7PEZhr0707D2jmFtloU9Phm4l2YA9/hMoF+tPNnj7wD3+CzgHm/l0R6fRNjjs+U550h7V9p7hj0+27B35xjW3jWsvWdhj08C7qXZwD0+B+jXgZ7s8XeBe/w94B4/0KM9PpGwx+fKc86T9r60Dwx7fK5h784zrL1vWPvAwh6fCNxLc4F7fB7Qr4M92ePvA/f4B8A9frBHe3wCYY/Pl+dcIG2htA8Ne3y+Ye8uMKwtNKx9aGGPTwDupfnAPb4A6NehnuzxhcA9/iFwjx/q0R4fT9jji+Q5F0v7SNrHhj2+yLB3FxvWPjKsfWxhj48H7qVFwD2+GOhXa0/2+EfAPf4xcI+39miPjyPs8U/kOZdI+1TaZ4Y9/olh7y4xrH1qWPvMwh4fB9xLnwD3+BKgX0d4ssc/Be7xz4B7/AiP9vhYwh7/XJ5zqbQvpH1p2OOfG/buUsPaF4a1Ly3s8bHAvfQ5cI8vBfp1lCd7/AvgHv8SuMeP8miPb4c7V6hBcJ6vpJbLpH0t7Rtp30pbLu07ad9LWyFtpbQfpP0o7Sdpq6T9LO0Xab9KWy3tN2m/S1sjba20P6T9KW2dtPWqd+RLPaRlS6siLUda1fysjXrKV4Zescyw9rVh7RvD2reGteWGte8Ma98b1lYY1lYa1n4wrP1oWPvJsLbKsPazYe0Xw9qvhrXVhrXfDGu/G9bWGNbWGtb+MKz9aVhbZ1hbb1hT9ZK+tp1hLduwVsWwlmNYq5rPvwal7tlMe/1XwGvQMuA16BhLX+zI9Br0NfAa9E3m5/rfl0S+BebiWJdzEf2fn2J5ZjGHUmIW32VyrvAG+onvgbk4zs1chNL8FCu2Mebi5EYxi5Xbdq64QT/xAzAXx7uWi7jRT/Hj1scc+5eYxU9be67Yv+onVgFzcYI7uQhvwk/x89bEHNtkzOKXLT9X+Wb0E78Cc3GiC7mIbdZPsXrLYg5tQczity05V2iL9BO/A3Nx0n+bi6It9FOs2VzM0S2OWazd5Lmiya3QT/wBzEWb/yoXsa3yU/z57zHHtzJmse5fzlWS3Gr9xHpgLk62n4vQNvgpFLNudK7QNsUsttv4XGIb9RPZ+bhcnGIzF4lt9lNU2TDmSAYxi5yUc4WTGeknqgJzcaonj9YCvj8ggHwrUvks01y09SQXQA4SwDlenAjMxWme5AI47wngvCJOBubidE9yAbyuCWBfFm2BuTjD0r3CUGaHAO5fAaw/wdIvO02/TPOMnDGq5aNijoRsPjQH5/eGD83JzSc6rE6OPm8esBhYcefl/yMw6LyhTT3mDx1DVVixJRiPwAu83PADCtUDzWsEN+H/d1e0elCEqWs1DHdK0V0f0bX03c3qwKKvAU4uY4NXNzSOTOOunu/H1S4HmOt8WMzFUZtXu3zS1a5mPtHhmoSrXYHjVzsVd4HnV7scWLGVlBvcpVztagWa106/2tUyXO1qW7ja5QCvdrWARV+blFx010fGXIjrniIrC38lzguaRja4BpFosD14WkA3LZXj7QlTkutx69pBx13Hk+kQWeM7kPtEKLNDqJzsQOgT2wM13NGD/bIjYb/sBJ7Q9ayyU4qvLC3Q9bQDsJ52Jum6c/7G5IbuTVWAOtSF6RC1+nDzuuD86WOXfKLDuxDIdVfHyVXFvavn5FoFVmxlYYO7FHLdLdC8Xjq57mYg13oWyBXRtTS57gYs+nqk5KK7PjLm3R2fSHcOmgbq26Smq36m50I23j0cz4eqlz0I0y0wbsqvXeg6RE+yyNrZ03EyUhruSdBwD6CG9T15VwLZvxo43nNUThoQek5DEvk1JBK11gK9h5D11IikayMLRI38pHtjmA6xsE2ibgzOnz72yic6vBeBqJs4TtQq7iaeE3U2rNjiFQZ3KUTdNNC8WTpRNzUQdTMLRI3oWpqomwKLvhkpueiuj4y5uePTVKOgaaCJuhFQQ2Tj3dvxfKh62Zsw3QLjphC1rkP0JIusnRaOE7XSsAVBw72BGu7jCVEj+9e+jvcclZN9CT1nPxL57Uckaq0Feg8h62l/kq77WyDq7YA6tITpUCFsEnVLcP70EconOhwiELVwnKhV3MJzot4OVmwiaXCXQtThQPNIOlGHDUQdsUDUiK6liToMLPoIKbnoro+MOer4NLV/0DTQRL0/UENk4y1yPB+qXooI0y0wbgpR6zpET7LI2il2nKiVhsUEDYuAGsY8IWpk/4o73nNUTuKEnlNCIr8SIlFrLdB7CFlPrUi6trJA1FlAHQ6A6RCxStQHgPOnjwPziQ4fSCDqgxwnahX3QZ4TdRas2MqtEfXBgeaHpBP1wQaiPsQCUSO6libqg4FFfwgpueiuj4z5UMenqVZB00ATdSughsjGe5jj+VD1chhhugXGTSFqXYfoSRZZO60dJ2qlYWuChocBNTzcE6JG9q8jHO85KidHEHrOkSTyO5JI1FoL9B5C1tNRJF2PskDUyGfNHw3TodTq8y6PBudPH8fkEx0+hkDUxzpO1CruYz0n6vWwH+Astva8y+MCzY9PJ+rjDER9vAWiXg/8Nb/jgEV/fD4nueiuj4z5BMenqaOCpoEm6qOAGiIb74mO50PVy4mE6RYYN4WodR2iJ1lk7ZzkOFErDU8iaHgiUMM2nhA1sn+d7HjPUTk5mdBzTiGR3ylEotZaoPcQsp5OJel6qgWiXgck6rYwHcIlNom6LTh/+jgtn+jwaQSiPt1xolZxn+45Ua+DEXUiZnCXQtRnBJqfmU7UZxiI+kwLRL0OSNRnAIv+zHxOctFdHxnzWY5PU6cGTQNN1KcCNUQ23rMdz4eql7MJ0y0wbgpR6zpET7LI2jnHcaJWGp5D0PBsoIbnekLUyP51nuM9R+XkPELPOZ9EfucTiVprgd5DyHq6gKTrBRaI+k8gUV8I06EsbpOoLwTnTx8X5RMdvohA1KWOE7WKu9Rzov4TRtTRuMFdClGXBZqXpxN1mYGoyy0Q9Z9Aoi4DFn15Pie56K6PjDnh+DR1QdA00ER9AVBDZOOtcDwfql4qCNMtMG4KUes6RE+yyNpJOk7USsMkQcMKoIYXe0LUyP51ieM9R+XkEkLPuZREfpcSiVprgd5DyHq6jKTrZRaI+g8gUV8O06HI6qe+LwfnTx9X5BMdvoJA1Fc6TtQq7is9J+o/YERdZu1T31cFmrdLJ+qrDETdzgJR/wEk6quARd8un5NcdNdHxny149PUZUHTQBP1ZUANkY33GsfzoerlGsJ0C4ybQtS6DtGTLLJ2rnWcqJWG1xI0vAao4XWeEDWyf13veM9RObme0HNuIJHfDUSi1lqg9xCynm4k6XqjBaJeCyTqm3B3aIpsEvVN4Pzp4+Z8osM3E4j6FseJWsV9i+dEvRZH1GUGdylEfWugeft0or7VQNTtLRD1WiBR3wos+vb5nOSiuz4y5tscn6ZuDJoGmqhvBGqIbLy3O54PVS+3E6ZbYNwUotZ1iJ5kkbVzh+NErTS8g6Dh7UAN7/SEqJH96y7He47KyV2EnnM3ifzuJhK11gK9h5D1dA9J13ssEPUaIFHfi5sni20S9b3g/Onjvnyiw/cRiPp+x4laxX2/50S9Bvep71KDuxSifiDQvEM6UT9gIOoOFoh6DZCoHwAWfYd8TnLRXR8Z84OOT1P3BE0DTdT3ADVENt6HHM+HqpeHCNMtMG4KUes6RE+yyNp52HGiVho+TNDwIaCGj3hC1Mj+9ajjPUfl5FFCz3mMRH6PEYlaa4HeQ8h6epyk6+MWiPp3IFF3hOkQt/rrWR3B+dPHE/lEh58gEPWTjhO1ivtJz4n6dxhRx6z9etZTgead0on6KQNRd7JA1L8DifopYNF3yuckF931kTE/7fg09XjQNNBE/ThQQ2TjfcbxfKh6eYYw3QLjphC1rkP0JIusnc6OE7XSsDNBw2eAGnbxhKiR/etZx3uOysmzhJ7zHIn8niMStdYCvYeQ9fQ8SdfnLRD1b0Ci7uopUXcF508fL+QTHX6BQNQvOk7UKu4XPSfq3zwk6pcCzbulE/VLBqLuZoGofwMS9UvAou/mCVEjY37Z8Wnq+aBpoIn6eaCGyMb7iuP5UPXyCmG6BcZNIWpdh+hJFlk73R0naqVhd4KGrwA17OEJUSP7V0/He47KSU9Cz3mVRH6vEolaa4HeQ8h6eo2k62sWiHo1kKh7wXQosvqs717g/Omjdz7R4d4Eon7dcaJWcb/uOVGvhhF1qbVnffcJNO+bTtR9DETd1wJRrwYSdR9g0ffN5yQX3fWRMfdzfJp6LWgaaKJ+DaghsvG+4Xg+VL28QZhugXFTiFrXIXqSRdZOf8eJWmnYn6DhG0ANB3hC1Mj+NdDxnqNyMpDQcwaRyG8Qkai1Fug9hKynwSRdB1sg6l+BRD0ER9QJm0Q9BJw/fQzNJzo8lEDUwxwnahX3MM+J+lccUUcM7lKIenig+Yh0oh5uIOoRFoj6VyBRDwcW/Yh8TnLRXR8Z80jHp6nBQdNAE/VgoIbIxvum4/lQ9fImYboFxk0hal2H6EkWWTujHCdqpeEogoZvAjUc7QlRI/vXGMd7jsrJGELPeYtEfm8RiVprgd5DyHoaS9J1rAWi/gVI1ONgOoSt3qMeB86fPsbnEx0eTyDqCY4TtYp7gudE/QuMqBPW7lFPDDSflE7UEw1EPckCUf8CJOqJwKKflM9JLrrrI2Oe7Pg0NTZoGmiiHgvUENl433Y8H6pe3iZMt8C4KUSt6xA9ySJrZ4rjRK00nELQ8G2ghlM9IWpk/5rmeM9ROZlG6DnTSeQ3nUjUWgv0HkLW0wySrjMsEPXPQKKeCdMhErFJ1DPB+dPHO/lEh98hEPUsx4laxT3Lc6L+GUbU5QmDuxSinh1oPiedqGcbiHqOBaL+GUjUs4FFPyefk1x010fG/K7j09SMoGmgiXoGUENk433P8XyoenmPMN0C46YQta5D9CSLrJ25jhO10nAuQcP3gBrO84Sokf3rfcd7jsrJ+4Se8wGJ/D4gErXWAr2HkPU0n6TrfAtEvQpI1AtgOlRYvUe9AJw/fSzMJzq8kEDUHzpO1CruDz0n6lUwohbW7lEvCjRfnE7UiwxEvdgCUa8CEvUiYNEvzuckF931kTF/5Pg0NT9oGmiing/UENl4P3Y8H6pePiZMt8C4KUSt6xA9ySJr5xPHiVpp+AlBw4+BGi7xhKiR/etTx3uOysmnhJ7zGYn8PiMStdYCvYeQ9fQ5SdfPLRD1T0CiXgrTIWqVqJeC86ePL/KJDn9BIOovHSdqFfeXnhP1TzCiLrNG1F8Fmi9LJ+qvDES9zAJR/wQk6q+ARb8sn5NcdNdHxvy149PU50HTQBP150ANkY33G8fzoerlG8J0C4ybQtS6DtGTLLJ2vnWcqJWG3xI0/Aao4XJPiBrZv75zvOeonHxH6Dnfk8jveyJRay3QewhZTytIuq6wQNQ/Aol6JUyHWIlNol4Jzp8+fsgnOvwDgah/dJyoVdw/ek7UP8KIOh4zuEsh6p8CzVelE/VPBqJeZYGofwQS9U/Aol+Vz0ku/H1UYMw/Oz5NrQiaBpqoVwA1RDbeXxzPh6qXXwjTLTBuClHrOkRPssja+dVxolYa/krQ8Beghqs9IWpk//rN8Z6jcvIboef8TiK/34lErbVA7yFkPa0h6brGAlH/ACTqtbg7NFaJei04f/r4I5/o8B8Eov7TcaJWcf/pOVH/ACPqqDWiXhdovj6dqNcZiHq9BaL+AUjU64BFvz6fk1x010fGnFXT7WlqTdA00ES9BqghsvFu53g+VL0oH9HTLTBuClHrOkRPssjaySZrGMrs+GsvKx/RGqbWTqYaVgFrqA/0NQDZv3Ic7zkqJzmEnlMVmOvUGapqTR5Ray3QewhZT9VIularySfqlUCizoXpEAvZJOpccP70kVeT6HBeTfx5qwMvLKy4q9f8R2DQea0S9UoYUZeEDO5SiLpGoHl+zawN6blGzY2JWv1HbKJeCSTqGsCiz6/JSS666yNjrun4NFUtaBpooq4G1BDZeAscz4eqlwLCdAuMm0LUug7Rkyyydmo5TtRKw1oEDQuAGtb2hKiR/avQ8Z6jclJI6Dnbk8hveyJRay3QewhZT3VIutaxQNQrgES9A26eFDaJegdw/vSxY02iwzsSiHonx4laxb2T50S9AkbUxUmDuxSi3jnQvG46Ue9sIOq6Foh6BZCodwYWfd2anOSiuz4y5l0cn6bqBE0DTdR1gBoiG++ujudD1cuuhOkWGDeFqHUdoidZZO3s5jhRKw13I2i4K1DDep4QNbJ/7e54z1E52Z3Qc/Ygkd8eRKLWWqD3ELKe9iTpuqcFov4eSNT1YTpErf56Vn1w/vTRoCbR4QYEom7oOFGruBt6TtTf455MZu3XsxoFmjdOJ+pGBqJubIGovwcSdSNg0TeuyUkuuusjY97L8Wlqz6BpoIl6T6CGyMbbxPF8qHppQphugXFTiFrXIXqSRdZOU8eJWmnYlKBhE6CGzTwhamT/au54z1E5aU7oOXuTyG9vIlFrLdB7CFlPLUi6trBA1N8BiXofmA4VVu9R7wPOnz72rUl0eF8CUe/nOFGruPfznKi/w/16lrV71PsHmrdMJ+r9DUTd0gJRfwck6v2BRd+yJie56K6PjDnk+DTVImgaaKJuAdQQ2XiF4/lQ9SII0y0wbgpR6zpET7LI2gk7TtRKwzBBQwHUMOIJUSP7V9TxnqNyEiX0nCIS+RURiVprgd5DyHoqJulabIGolwOJOgbTIVlkk6hj4PzpI16T6HCcQNQljhO1irvEc6JeDiPqUJnBXQpRtwo0PyCdqFsZiPoAC0S9HEjUrYBFf0BNTnLRXR8Z84GOT1PFQdNAE3UxUENk4z3I8XyoejmIMN0C46YQta5D9CSLrJ2DHSdqpeHBBA0PAmp4iCdEjexfhzrec/7KCaHnHEYiv8OIRK21QO8hZD21Juna2gJRfwsk6sNhOpRY/dT34eD86eOImkSHjyAQ9ZGOE7WK+0jPifpb3PeorX3q+6hA86PTifooA1EfbYGovwUS9VHAoj+6Jie56K6PjPkYx6ep1kHTQBN1a6CGyMZ7rOP5UPVyLGG6BcZNIWpdh+hJFlk7xzlO1ErD4wgaHgvU8HhPiBrZv05wvOeonJxA6DknksjvRCJRay3QewhZTyeRdD3JAlF/AyTqNrh71Faf9d0GnD99nFyT6PDJBKI+xXGiVnGf4jlRf4P71Le1Z32fGmjeNp2oTzUQdVsLRP0NkKhPBRZ925qc5KK7PjLm0xyfpk4KmgaaqE8CaohsvKc7ng9VL6cTpltg3BSi1nWInmSRtXOG40StNDyDoOHpQA3P9ISokf3rLMd7jsrJWYSeczaJ/M4mErXWAr2HkPV0DknXcwJdbdLl1zWwsejj3JpEh88l0OV5jtOlivs8Al2afEVskPMImxi48ej5dlVDZNznezJMnAOM+QLHhwkV6/mEYeJCx4dvlZcLyT0nUw0vIg0OF/0Hg8My0uBQWpPocClhcChzfHBQcZd5MjioQi4jbGLgxqPn21UNkXGXezI4XASMOeH44KBiLScMDhWODw4qLxXknpOphknS4JC0cA//K+A9/IuBe8jmsHRxTc6wdElNosOXEIalSx0fllTcl1oalkKZHSIZ+Iq+dZgE5giZ78scv4CqRncZ4QJ6ueMXUBXz5YS4ryBd9K4wfAQErQk7Z4g9filh6EHu9ysdr3ul4ZUEDS8DaniVJ6CFvOa0c/w6oXLSjtAvryb1y6uJt3u1Fug9hKyna0h7CK3lNcCYtW8NUnytmv/3dVO9zkl5XSXldXbK6+1SXmelvF5f45/X61Je/5ny+o+U12tTXq9Jef17yuvfUl6vTnn9a8rrX1Je/5zyelXK659SXv+Y8vqHlNcrU16vSHn9fcrr71JeL095/W3K629SXn+d8npZyuuvUl5/kPL6/ZTX81Jez015/V7K63dTXs9JeT075fWslNfvpLyemfJ6Rsrr6Smvp6W8npryekrK6y9TXn+R8nppyuvPU15/lvL605TXS1Jef5Ly+uOU1x+lvF6c8npRyusPU14vTHm9IOX1/OC13rjXyj12nbTrpd0g7UZpN0m7Wdot0m6V1l7abdJul3aHtDul3SXtbmn3SLtX2n3S7pf2gLQO0h6U9pC0h6U9Iu1RaY9Je1xaR2lPSHtS2lPSOkl7Wtoz0jpL6yLtWWnPSXteWldpL0h7UdpL0rpJe1naK0Efl1vxf8yo/n2LbL7rgte3prxunx3s6ZT/tl/uP//7G8Hr7vK8PaT1rPn3HShbn1XvSerLWVg/w6lavBq8t/BazUAQfZFV/8OfaQ6gP5feE3CB+Ptz6cnkq8CLzWuWhtRQZodAxtwr5VwiHgmHYxH138UTIRFNlIfj4XCiLBoqD5WWhytKoqIkGQ1HI+WJ8jJ5zlKRDCVLy0uS8b/9svlOZi/SO5m9axId7k14J/N1x9/JVHG/XvMfgUHnpbwb8VrgK/q8fUhE1Kfmxlc4dP6QTZHta3egrw2C8/SV5+wn7Q1p/aUNkDZQ2iBpg6UNkTZU2jBpw6WNkDZS2pvSRkkbLW2MtLekjZU2Ttp4aROkTZQ2SdpkaW9LmyJtqrRp0qZLmxFcnVNz3rdmCvEEf/sZ1t4wrPU3rA0wrA00rA0yrA02rA0xrA01rA0zrA03rI0wrI00rL1pWBtlWBttWBtjWHvLsDbWsDbOsDbesDbBsDbRsDbJsDbZsPa2YW2KYW2qYW2aYW26YW1GzY3foc4J/h4a/A1ldmywZzPts31hg2VI9AP6lWzKGSzTc5FJzCoXb0D0+zuv/TM/VzjQTwwA5uJil3MR/Z+fYmBmMYdSYhaDMjlXeAP9xGBgLi5xMxehND/FkG2MuTi5Ucxi6LadK27QTwwD5uJS13IRN/ophm99zLF/iVmM2Npzxf5VPzESmIvL3MlFeBN+ije3JubYJmMWo7b8XOWb0U+MBubichdyEdusn2LMlsUc2oKYxVtbcq7QFuknxgJzccV/m4uiLfRTjNtczNEtjlmM3+S5osmt0E9MAObiyv8qF7Gt8lNM/PeY41sZs5j0L+cqSW61fmIyMBdX2c9FaBv8FG+bYg5tU8xiysbnEtuon5gKzEU7m7lIbLOfYtqGMUcyiFlMTzlXOJmRfmIGMBdXW8pFKLNDAN8fEEC+Fal8lvGnVzzJBZCDBHCOF5cDc3GtJ7kAznsCOK+Iq4C5uM6TXACvawLYl8U1wFxcT8oF+gMUwP0rgPUnkPqp+pWny2oQnG9GcE9sWnCPbEpwz2xycA9tYnBPbXxwj21scM9tTHAPblRwT25kcI9ueHDPbmhwD29wcE9vYHCPr39wz0/dB1D3FdIP9CePkXPPzJqoPESsPmIW5/eGH+p4pybRYXVy9HlnAYuBFfeslE0BOq/VR8zOgBVbwtojZmcHms8JPhjwvzu1s4MiTF2bU5P/iFlE19J3XGcDi34OOLmMDT67Jv6TRrNrciYY9NVuOjDX78JiLo7avNq9S7ravVeT6PB7hKvdXMevdiruuZ5f7abDiq2k3OAu5Wo3L9D8/fSr3TzD1e59C1e76cCr3Txg0b9PSi666yNj/gDXPY3frszUv1lB08gG1yASDeaDpwV001I5nk+YklyPW9cOOu4FnkyHyBpfSO4TocwOoXKykNAn5gM1/NCD/fIhYb8sAk/oelZZlOIrSwt0PS0E1tNikq6La25MbujeNA2ow0cwHaIVNsn1I3D+9PFxTaLDHxPI9RPHyVXF/Ynn5DoNVmxlYYO7FHJdEmj+aTq5LjGQ66cWyBXRtTS5LgEW/aek5KK7PjLmzxyfSBcHTQP9PL/FQA2Rjfdzx/Oh6uVzwnQLjJvybWxdh+hJFlk7Sx0nI6XhUoKGnwM1/MKTdyWQ/etLx3uOysmXhJ7zFYn8viIStdYCvYeQ9bSMpOsyC0SN/PT91zAdYmGrP39GIupvahId/oZA1N86TtQq7m89J+qpsGKLVxjcpRD18kDz79KJermBqL+zQNSIrqWJejmw6L8jJRfd9ZExf+/4NLUsaBpool4G1BDZeFc4ng9VLysI0y0wbgpR6zpET7LI2lnpOFErDVcSNFwB1PAHT4ga2b9+dLznqJz8SOg5P5HI7yciUWst0HsIWU+rSLquskDUU4A6/AzTocLqA2J/BudPH7/UJDr8C4Gof3WcqFXcv3pO1FNgxSaSBncpRL060Py3dKJebSDq3ywQNaJraaJeDSz630jJRXd9ZMy/Oz5NrQqaBpqoVwE1RDbeNY7nQ9XLGsJ0C4ybQtS6DtGTLLJ21jpO1ErDtQQN1wA1/MMTokb2rz8d7zkqJ38Ses46EvmtIxK11gK9h5D1tJ6k63oLRP02EqIKUDpErBI1zu8NiXq7AqLD6uTo82YXuE3UKu7sgn8EBp3XKlG/DWsW5daIukqgeY7ekbpDVSnYmKjVf8QmakTX0kRdBVj0OQWc5KK7PjLmqgXADZ6F33DqKqqaBpqo1wOvnMjGW83xfKh6qVaAn26BcVOIWtchepJF1k4uWcNQZsdfezmXoGE1oIZ5YA31gb4GIPtXdcd7jspJdULPqQEmBz1D1SjgEbXWAr2HkPWUT9I1v4BP1Mjn39eE6VBq9XmXNcH500dBAdHhAgJR13KcqFXctTwn6skwoi629rzL2oHmhelEXdtA1IUWiHoykKhrA4u+sICTXHTXR8a8vePTVH7QNNBEnQ/UENl46zieD1UvdQjTLTBuClHrOkRPssja2cFxolYa7kDQsA5Qwx09IWpk/9rJ8Z6jcrIToefsTCK/nYlErbVA7yFkPdUl6VrXAlFPAhL1LjAdwiU2iXoXcP70sWsB0eFdCUS9m+NEreLezXOingQj6kTM4C6FqOsFmu+eTtT1DES9uwWingQk6nrAot+9gJNcdNdHxryH49NU3aBpoIm6LlBDZOPd0/F8qHrZkzDdAuOmELWuQ/Qki6yd+o4TtdKwPkHDPYEaNvCEqJH9q6HjPUflpCGh5zQikV8jIlFrLdB7CFlPjUm6NrZA1BOBRL0XTIeyuE2i3gucP300KSA63IRA1E0dJ2oVd1PPiXoijKijcYO7FKJuFmjePJ2omxmIurkFop4IJOpmwKJvXsBJLrrrI2Pe2/FpqnHQNNBE3RioIbLxtnA8H6peWhCmW2DcFKLWdYieZJG1s4/jRK003IegYQughvt6QtTI/rWf4z1H5WQ/Qs/Zn0R++xOJWmuB3kPIempJ0rWlBaKeACTqEEyHIquf+g6B86cPUUB0WBCIOuw4Uau4w54T9QQYUZdZ+9R3JNA8mk7UEQNRRy0Q9QQgUUeARR8t4CQX3fWRMRc5Pk21DJoGmqhbAjVENt5ix/Oh6qWYMN0C46YQta5D9CSLrJ2Y40StNIwRNCwGahj3hKiR/avE8Z6jclJC6DmtSOTXikjUWgv0HkLW0wEkXQ+wQNTjgUR9IO4OTZFNoj4QnD99HFRAdPggAlEf7DhRq7gP9pyox+OIuszgLoWoDwk0PzSdqA8xEPWhFoh6PJCoDwEW/aEFnOSiuz4y5sMcn6YOCJoGmqgPAGqIbLytHc+HqpfWhOkWGDeFqHUdoidZZO0c7jhRKw0PJ2jYGqjhEZ4QNbJ/Hel4z1E5OZLQc44ikd9RRKLWWqD3ELKejibperQFoh4HJOpjcPNksU2iPgacP30cW0B0+FgCUR/nOFGruI/znKjH4T71XWpwl0LUxwean5BO1McbiPoEC0Q9DkjUxwOL/oQCTnLRXR8Z84mOT1NHB00DTdRHAzVENt6THM+HqpeTCNMtMG4KUes6RE+yyNpp4zhRKw3bEDQ8CajhyZ4QNbJ/neJ4z1E5OYXQc04lkd+pRKLWWqD3ELKe2pJ0bWuBqMcCifo0mA5xq7+edRo4f/o4vYDo8OkEoj7DcaJWcZ/hOVGPhRF1zNqvZ50ZaH5WOlGfaSDqsywQ9VggUZ8JLPqzCjjJRXd9ZMxnOz5NtQ2aBpqo2wI1RDbecxzPh6qXcwjTLTBuClHrOkRPssjaOddxolYankvQ8Byghud5QtTI/nW+4z1H5eR8Qs+5gER+FxCJWmuB3kPIerqQpOuFFoj6LSBRX+QpUV8Ezp8+SguIDpcSiLrMcaJWcZd5TtRveUjU5YHmiXSiLjcQdcICUb8FJOpyYNEnPCFqZMwVjk9TFwZNA03UFwI1RDbepOP5UPWSJEy3wLgpRK3rED3JImvnYseJWml4MUHDJFDDSzwhamT/utTxnqNycimh51xGIr/LiESttUDvIWQ9XU7S9XILRD0GSNRXwHQosvqs7yvA+dPHlQVEh68kEPVVjhO1ivsqz4l6DIyoS60967tdoPnV6UTdzkDUV1sg6jFAom4HLPqrCzjJRXd9ZMzXOD5NXR40DTRRXw7UENl4r3U8H6periVMt8C4KUSt6xA9ySJr5zrHiVppeB1Bw2uBGl7vCVEj+9cNjvcclZMbCD3nRhL53Ugkaq0Feg8h6+kmkq43WSDq0UCivhlH1AmbRH0zOH/6uKWA6PAtBKK+1XGiVnHf6jlRj8YRdcTgLoWo2wea35ZO1O0NRH2bBaIeDSTq9sCiv62Ak1x010fGfLvj09RNQdNAE/VNQA2RjfcOx/Oh6uUOwnQLjJtC1LoO0ZMssnbudJyolYZ3EjS8A6jhXZ4QNbJ/3e14z1E5uZvQc+4hkd89RKLWWqD3ELKe7iXpeq8Foh4FJOr7YDqErd6jvg+cP33cX0B0+H4CUT/gOFGruB/wnKhHwYg6Ye0edYdA8wfTibqDgagftEDUo4BE3QFY9A8WcJKL7vrImB9yfJq6N2gaaKK+F6ghsvE+7Hg+VL08TJhugXFTiFrXIXqSRdbOI44TtdLwEYKGDwM1fNQTokb2r8cc7zkqJ48Res7jJPJ7nEjUWgv0HkLWU0eSrh0tEPWbQKJ+AqZDJGKTqJ8A508fTxYQHX6SQNRPOU7UKu6nPCfqN2FEXZ4wuEsh6k6B5k+nE3UnA1E/bYGo3wQSdSdg0T9dwEkuuusjY37G8WmqY9A00ETdEaghsvF2djwfql46E6ZbYNwUotZ1iJ5kkbXTxXGiVhp2IWjYGajhs54QNbJ/Ped4z1E5eY7Qc54nkd/zRKLWWqD3ELKeupJ07WqBqEcCifoFmA4VVu9RvwDOnz5eLCA6/CKBqF9ynKhV3C95TtQjYUQtrN2j7hZo/nI6UXczEPXLFoh6JJCouwGL/uUCTnLRXR8Z8yuOT1Ndg6aBJuquQA2Rjbe74/lQ9dKdMN0C46YQta5D9CSLrJ0ejhO10rAHQcPuQA17ekLUyP71quM9R+XkVULPeY1Efq8RiVprgd5DyHrqRdK1lwWiHgEk6t4wHaJWibo3OH/6eL2A6PDrBKLu4zhRq7j7eE7UI2BEXWaNqPsGmvdLJ+q+BqLuZ4GoRwCJui+w6PsVcJKL7vrImN9wfJrqFTQNNFH3AmqIbLz9Hc+Hqpf+hOkWGDeFqHUdoidZZO0McJyolYYDCBr2B2o40BOiRvavQY73HJWTQYSeM5hEfoOJRK21QO8hZD0NIek6xAJRDwcS9VCYDrESm0Q9FJw/fQwrIDo8jEDUwx0nahX3cM+JejiMqOMxg7sUoh4RaD4ynahHGIh6pAWiHg4k6hHAoh9ZwEku/H1UYMxvOj5NDQmaBpqohwA1RDbeUY7nQ9XLKMJ0C4ybQtS6DtGTLLJ2RjtO1ErD0QQNRwE1HOMJUSP711uO9xyVk7cIPWcsifzGEolaa4HeQ8h6GkfSdZwFoh4GJOrxuDs0Vol6PDh/+phQQHR4AoGoJzpO1CruiZ4T9TAYUUetEfWkQPPJ6UQ9yUDUky0Q9TAgUU8CFv3kAk5y0V0fGfPbjk9T44KmgSbqcUANkY13iuP5UPUyhTDdAuOmELWuQ/Qki6ydqY4TtdJwKkHDKUANp3lC1Mj+Nd3xnqNyMp3Qc2aQyG8Gkai1Fug9hKynmSRdZ1og6qFAon4Hd486ZJOo3wHnTx+zCogOzyIQ9WzHiVrFPdtzoh4KI+qSkMFdClHPCTR/N52o5xiI+l0LRD0USNRzgEX/bgEnueiuj4z5PcenqZlB00AT9UyghsjGO9fxfKh6mUuYboFxU4ha1yF6kkXWzjzHiVppOI+g4Vyghu97QtTI/vWB4z1H5eQDQs+ZTyK/+USi1lqg9xCynhaQdF1ggaiHAIl6IW6eFDaJeiE4f/r4sIDo8IcEol7kOFGruBd5TtRDYERdnDS4SyHqxYHmH6UT9WIDUX9kgaiHAIl6MbDoPyrgJBfd9ZExf+z4NLUgaBpool4A1BDZeD9xPB+qXj4hTLfAuClEresQPckia2eJ40StNFxC0PAToIafekLUyP71meM9R+XkM0LP+ZxEfp8TiVprgd5DyHpaStJ1qQWiHgwk6i9wn3m0+utZX4Dzp48vC4gOf0kg6q8cJ2oV91eeE/Vg3JPJrP161rJA86/TiXqZgai/tkDUg4FEvQxY9F8XcJKL7vrImL9xfJpaGjQNNFEvBWqIbLzfOp4PVS/fEqZbYNwUotZ1iJ5kkbWz3HGiVhouJ2j4LVDD7zwhamT/+t7xnqNy8j2h56wgkd8KIlFrLdB7CFlPK0m6rrRA1IOARP0DTIcKq/eofwDnTx8/FhAd/pFA1D85TtQq7p88J+pBuF/PsnaPelWg+c/pRL3KQNQ/WyDqQUCiXgUs+p8LOMlFd31kzL84Pk2tDJoGmqhXAjVENt5fHc+HqpdfCdMtMG4KUes6RE+yyNpZ7ThRKw1XEzT8Fajhb54QNbJ//e54z1E5+Z3Qc9aQyG8Nkai1Fug9hKyntSRd11og6oFAov4DpkOyyCZR/wHOnz7+LCA6/CeBqNc5TtQq7nWeE/VAGFGHygzuUoh6vda8VtaG9LzeQNTqP2IT9UAgUa9HFn0tTnLRXR8Z83a13J6m1gZNA03Ua4EaIhtvtuP5UPWifERPt8C4KUSt6xA9ySJrpwpZw1Bmx197WfmI1jC1djLVMAesoT7Q1wBk/6rqeM9ROalK6DnVgLlOnaGq1eIRtdYCvYeQ9ZRL0jW3Fp+oBwCJOg+mQ4nVT33ngfOnj+q1iA5Xr4U/bw3ghYUVd41a/wgMOq9Voh6A+x61tU995wea10wn6vxaGxN1TQtEPQBI1PnAoq9Zi5NcdNdHxlzg+DSVGzQNNFHnAjVENt5ajudD1UstwnQLjJtC1LoO0ZMssnZqO07USsPaBA1rATUs9ISokf1re8d7jsrJ9oSeU4dEfnWIRK21QO8hZD3tQNJ1BwtE3R9I1DvCdEhafdb3juD86WOnWkSHdyIQ9c6OE7WKe2fPibo/7lPf1p71XTfQfJd0oq5rIOpdLBB1fyBR1wUW/S61OMlFd31kzLs6Pk3tEDQNNFHvANQQ2Xh3czwfql52I0y3wLgpRK3rED3JImunnuNErTSsR9BwN6CGu3tC1Mj+tYfjPUflZA9Cz9mTRH57Eolaa4HeQ8h6qk/StX6gq026fKMmNhZ9NKhFdLgBgS4bOk6XKu6GBLo0+YrYIA0Jmxi48ej5dlVDZNyNPBkm6gNjbuz4MKFibUQYJvZyfPhWedmL3HMy1bAJaXBo8h8MDv1Ig0PTWkSHmxIGh2aODw4q7maeDA6qkJsRNjFw49Hz7aqGyLibezI4NAHGvLfjg4OKtTlhcGjh+OCg8tKC3HMy1XAf0uCwj4V7+H2B9/D3Be4hm8PSvrU4w9J+tYgO70cYlvZ3fFhSce9vaVgKZXaIfQJf0bcO9wHmCJnvlo5fQFWja0m4gIYcv4CqmEOEuAXpoicMHwFBa8LOGWKP708YepD7Pex43SsNwwQNWwI1jHgCWshrTtTx64TKSZTQL4tI/bKIeLtXa4HeQ8h6KibtIbSWxeDZWh/ovd4DCISxlJhFPBIOxyLqv4snQiKaKA/Hw+FEWTRUHiotD1eUREVJMhqORsoT5WXynKUiGUqWlpck43+fyyYQxkhAGK9FdDhOAMISx4FQxV1CAEJVbNWy7Hyou0dNTgNL1yTTDZhayK1S35lCXylLgBNC6pWy1SaulJvxuXwz4vy1UVptw5Vyc6K3Am7AA0gTiDrvXdtYC0JqVy5CyVBJOFQaipUXx8pKEuGyeGkykiyKJCLbquvmih2p64EkXQ/cdl3/v6jXg0i6HvR/vF4PJul6cKCrunhmZ9mZ1JAXz9SL/SHBUHGoumYwLnCtCNNaK8ff1trWzRHairgz9fEwx9/WUoV5GOHtidakptB6E802lNkhDiVpcThJi8OJWqhGyNDivqZu9xTWfrj/v427fDP+0Wr/AXDc+kB/ixdYlwKYa4HUTw1SuVnmdyGytlLPzdVT6jkZ1yyUJqlD5RGbehcilNkhDiNdBI7Y9vfrxeb+7yifjyA0hYdJTSFnK3O2NcNbpjEfWcvNBoPMRWpdHpkynGxrfjanOTI/R6XeW4hE5N5IxEQykYwUxUrCZaI4UlycjCZjxfFoIlkULU3EKkS0NBIuqYiFkiJeUREripTHipMlifLiZGrTFolIJJooKSsXReHi0rJQPBEpDSWjsYgE/kQklkhE4sXFpZFIojiejJdISJfoHw8VxWIloeJwpCTMys9RKXSNuihs7t2c1HP6clE42seLwtHki8LRhIvCo45cFP61iGN/PaQliWw6xzh6UXiU1HSOAVwUNvfWJjI/xzp6UWDl59j/j95yPS54y/V401uuocyOf73fgbxXmem5gG/fUj4ZpTVEf6KZpWGm5zrB8XyoDXMC4cJ+ImnIOZH49ufxJC1OImlxEvmtYIYWjzv+VjBrP3R0/K1gVu0/4clbwcC6FMBciycq3wpOP/66ZqE0SR122zCp/wTSRaANkfqVz20ITeFpT94KPgE4CJ5cy80G8zSJKk+28FYwMj+nAKn/CSD1s/JziiE/W/uZms299YvMz6mk/nkqQIfNvTuF1KEtSYe2ntXDaSQdTvOsHk4n6XD6FtwqcnmwM7gLq+PUofEMH4fGM8hD4xmEobGzpaExw0/FQ5vcmcBzIYfGzqSh5MwtGBoz/XQ9Mj9n1cINesihkZWfswAXx80cYgbwu6Nnw/pnnPJB7JLgXTf0HSVkjZ/j+B0MleNzCNebc0nXXnXevODfTbM2PlD/N/X50HpfU919H89DD5K+FO2zjt9eUTGfR4j7OUfeUdzMsUFhZhrz+cDGDKwbgcwFuUn+7zbF/8Umef7/1SZ5geNfz1MxX0CI+0LSRHNhrX+etsb4uqdpQg5ldgjkhHyR4/WkiOoiQj2VerCPSglxl5H2Udkm9lEos4PWU15o+n+zBl609LmWTP0sBw6JwFyLF0nvUJVX0jXdxwR7cERQZoKw6V/2hDITHmz6THPxiicNuAKYC2D9iVcqKd2LZluBbLa+XhVv8yBRycpEhcQdHiTq4spEhcRdHiTqkspEhcQ9HiTq0spEhcR9HiTqsspEhcQDHiTq8spEhcSDHiTqispEhcTDHiTqyspEhcSjHiTqqspEhcTjHiSqXWWiQuIJDxJ1dWWiQuIpDxJ1TWWiJExmu+/jtZWJColnPNhR11UmSt4O9GBHXV+ZqJB41oMddUNlokLieQ8SdWNlokLiBQ8SdVNlokLiJQ8SdXNlokLiZQ8SdUtlokKiuweJurUyUSHR04NEta9MVEi85kGibqtMVEj09iBRt1cmKiT6eJCoOyoTFRL9PEjUnZWJConTPXiv767KRIXEAA921N2ViQqJQR4k6p7KRIXEEA8SdW9lokJimAeJug+ZKPUMTf2lVO1sw7SkZYMDAD7kQqC/6M9IWNIDHy/2wMdLPPDxUg98vMwDHy/3wMcrPPDxSg98vMoDH9t54OPVHvh4jQc+XuuBj9d54OP1Hvh4gwc+3uiBjzd54OPNHvh4iwc+3uqBj+098PE2D3y83QMf7/DAxzs98PEuD3y82wMf7/HAx3s98PE+go9ZUB8jsSzDgTl3WPDO/c8vk2+Xcs77pd4PSOsg7UFpD0l7WNoj0h6V9pi0x6V1lPaEtCelPSWtk7SnpT0jrbO0LtKelfactOeldZX2grQXpb0krZu0l6W9Iq27tB7Sekp7Vdpr0npJ6y3tdWl9pPWV1k/aG9L6SxsgbaC0QdIGSxsibai0YdKGSxshbaS0N6WNkjZa2hhpb0kbK22ctPHSJkibKG2StMm1/tbg7VqBKPqpjUqUvLS1BwxrHQxrDxrWHjKsPWxYe8Sw9qhh7THD2uOGtY6GtScMa08a1p4yrHUyrD1tWHvGsNbZsNbFsPasYe05w9rzhrWuhrUXDGsvGtZeMqx1M6y9bFh7xbDW3bDWw7DW07D2mmGtl2Gtt2HtdcNaH8NaX8NaP8PaG4a1/oa1AYa1gYa1QYa1wYa1IYa1oYa1YYa14Ya1EYa1kYa1Nw1rowxrow1rYwxrbxnWxhrWxhnWxhvWJhjWJhrWJhnWJhvWVPNrkLXhgX7oZOrNP4ee8i3ur8UZNrLB+gFvJooHPIkZeHNSdPAkZuDNTvGgJzEDb56KhzyJGXgzVjzsSczAm7viEU9iBt4sFo96EjPw5rN4zJOYgTezxeOexAy8OS46ehIz8Ga7eMKTmIE378WTnsQM/DCAeMqTmIEfLhCdPIkZ+GEF8bQnMQM//CCe8SRm4IcpRGdPYgZ+OEN08SRm4Ic9xLOexAz88Ih4zpOYgR9GEc97EjPwwy2iqycxAz8sI17wJGbgh2/Ei57EDPwwj3jJk5iBHw4S3TyJGfhhI/GyJzEDP7wkXvEkZuCHoUR3T2IGfrhK9PAkZuCHtURPUszbpcUcyuwQrwLuZVck1VFeqr6IWz0lL9ul+Mnyn3HPG+1j5ZdnMT5WfnkW42Pll2cxPlZ+eRbjY+WXZzE+Vn55FuNj5ZdnMT5WfnkW42Pll2cxPlZ+eRbjY+WXZzE+Vn55FuNj5ZdnMT5WfnkW42Pll2cxPvr45VnMeeM0TXt5kPfeHvj4ugc+9vHAx74e+NjPAx/f8MDH/h74OMADHwd64OMgD3wc7IGPQzzwcagHPg7zwMfhHvg4wgMfR3rg45se+DjKAx9He+DjGA98fMsDH8d64OM4D3wc74GPEzzwcaIHPk7ywMfJxPf5cH6Gw6bPNU6Rvk+VNk3adGkzpM2U9o60WdJmS5sj7V1p70mbK22etPelfSBtvrQF0hZK+1DaImmLpX0k7WNpn0hbIu1TaZ9J+1zaUmlfSPtS2lfSlkn7Wto30r6Vtlzad9K+l7ZC2kppP0j7UdpP0lZJ+1naL9J+lbZa2m/Sfpe2RtpaaX9I+1PaOmnrpWXVlnFLy5ZWRVqOtKq1/9agWu2sDR/CpERJfzDTVMPaNMPadMPaDMPaTMPaO4a1WYa12Ya1OYa1dw1r7xnW5hrW5hnW3jesfWBYm29YW2BYW2hY+9Cwtsiwttiw9pFh7WPD2ieGtSWGtU8Na58Z1j43rC01rH1hWPvSsPa1Ye0bw9q3hrXlhrXvDGvfG9ZWGNZWGtZ+MKz9aFj7ybC2yrD2s2HtF8Par4a11Ya13wxrvxvW1hjW1hrW/jCs/WlYW2dYW29YU80ofW07w1q2Ya2KYS3HsFbVsKYaXYOsDQ99UTg0+JvplxCAH2gXU0gXVnTMyAfCTfUkZuQD4aZ5EjPygXDTPYkZ+UC4GZ7EjHwg3ExPYkY+EO4dT2JGPhBulicxIx8IN9uTmJEPhJvjSczIB8K960nMyAfCvedJzMgHws31JGbkA+HmeRIz8oFw73sSM/KBcB94EjPygXDzPYkZ+UC4BZ7EjHwg3EJPYkY+EO5DT2JGPhBukScxIx8It9iTmJEPhPvIk5iRD4T72JOYkQ+E+8STmJEPhFviSczIB8J96knMyAfCfeZJzMgHwn3uSczIB8It9SRm5APhvvAkZuQD4b4kxbxdWsyhzA7xVa3M9dMPhGP6uQzmZ1wwawj4hUvxtSf7BvgFTvGNJzEDvxAqvvUkZuAXTMVyT2IGfmFVfOdJzMAvwIrvPYkZ+IVascKTmIFf0BUrPYkZ+IVf8YMnMQO/QCx+9CRm4BeSxU+exAz8grNY5UnMwC9Mi589iRn4BWzxiycxA7/QLX71JGbgF8TFak9iBn7hXPzmSczAL7CL3z2JGfiFeLHGk5iBX7AXaz2JGfiFffGHJzEDHwAg/vQkZuADBcQ6T2IGPqBArPckZuADD4T6Xp8PMQMfoCC28yRm4AMZRLYnMQMf8CCqeBIz8IERIseTmIEPoBBVgTGrH9SqkfX394/VsV1KzFkpa6lahDI7Kn9QC+Rj5Q9qYXys/EEtjI+VP6iF8bHyB7UwPlb+oBbGx8of1ML4WPmDWhgfK39QC+Nj5Q9qYXys/EEtjI+VP6iF8bHyB7UwPlb+oBbGx8of1ML4WPmDWojzVv6gFsPHyh/UwvhY+YNaGB8rf1AL42PlD2phfKz8QS2Mj5U/qIXxsfIHtTA+Vv6gFsbHyh/UwvhY+YNaGB8rf1AL42PlD2phfKz8QS2Mj5U/qIXx0Zcf1CKeW2yXoq0+Z676TRdp1aXVkJYvraa0Amm1pNWWVihte2l1pO0gbUdpO0nbWVpdabtI21XabtLqSdtd2h7S9pRWX/0+jLSG0hpJayxtL2lNpDWV1kxac2l7S2shbR9p+0rbT9r+0lpKC0kT0sLSItKi0oqkFUuLSYtLK5HWStoB0g6UdpC0g6Udoj57Ku0waa2lHS7tCGlHSjsq/Ue6cg0/cJNnWKtuWKthWMs3rNU0rBUY1moZ1mob1goNa9sb1uoY1nYwrO1oWNvJsLazYa2uYW0Xw9quhrXdDGv1DGu7G9b2MKztaVirb1hrYFhraFhrZFhrbFjby7DWxLDW1LB2iGHtUMPaYYa11oa1ww1rRxjWjjSsHRWspR7Zwd9Dg78u/bBTricfrEf+sFOeJzEjf9ipuicxI3/YqYYnMSN/2Cnfk5iRP+xU05OYkT/sVOBJzMgfdqrlSczIH3aq7UnMyB92KvQkZuQPO23vSczIH3aq40nMyB922sGTmJE/7LSjJzEjf9hpJ09iRv6w086exIz8Yae6nsSM/GGnXTyJGfnDTrt6EjPyh5128yRm5A871fMkZuQPO+3uSczIH3baw5OYkT/stKcnMSN/2Km+JzEjf9ipgScxI3/YqaEnMSN/2KmRJzEjf9ipsScxI3/YaS9PYkb+sFMTT2JG/rBTU1LM6A8FNauduX42ftipOczPDX/YCe3n3p7kvYUnfu7jiZ/7euLnfp74ub8nfrb0xM+QJ34KT/wMe+JnxBM/o574WeSJn8We+BnzxM+4J36WeOJnK0/8PMATPw/0xM+DPPHzYJKfOZn6KTb85yGZ+bnB2Q7NNOaUsx0G4HX9vkzPpo7mIrRh1K0RNROc7XBM/f11tiOAuXjV7VyEdNRH4vavOAp4LmAti9RcZPSeWEWyRP2ogHz783/vqVJyQ67tUCaHuzXD+LLl/3pWar6Prv3332PSvxSo/odP0tbUf9Qgq7JQMm2ovX1oqGkFvY0xh4OYxdFA/Y4BblpWLrLBuUDqd6zhXGWh8kSRKCtOxERFaVG8vLwkIkS4tLi0uCwcT1aUFYl4UVyes7w0HJf/58Kl5aIiVFpcoS4iBVn/DOOpB3pAPxbYYFP9Pa420WF1cvR5jwcWAyvu42v/IzDovEZfEc1E+YrasPq8yBydAC58fUFX520o/9qcBA8BXuAPBV7gDwNeVFrX5lxUQPvJOAmeGOzXk9InwRMNk+BJzEkwcLI1cPo4EbgZT0o5VzhRVBEqiZfFw2WlkVhZNFJWUlIqz1ssRDyZCIcS0XCySBQXl5dUlCRFJFlWVFFaXFRaUpz46+qZ6OnJ9IHUr42n00cb0vRxcm2iwycTpo9THJ8+VNyneDJ9nBT4ip4+kDk6lTR9nPofTB+gz7L+dTbYZ0QF9rOXzIf7A3JhnD7aBvv1tPTpo61h+jjNwvtQPhRKphu7jyfvQ91XCzcJtgU2xtOAyNDHk0kQqd/pnk6Cp5MmwTNqEx0+gzAJnun4JKjiPtOTSfC0wFf0JIjM0VmkSfCs/2ASvB14gb8DeIFHfqvuLg8nwbOD/XpO+iR4tmESPMfCJOhDoWS6sft5MgneBZwEzwY2xnOAk2A/TyZBpH7nejoJnkuaBM+rTXT4PMIkeL7jk6CK+3xPJsFzAl/RkyAyRxeQJsEL/oNJ8BbgBf5W4AUe+byU2zycBC8M9utF6ZPghYZJ8CILk6APhZLpxu7vySR4G3ASvBDYGC8CToL9PZkEkfqVejoJlpImwbLaRIfLCJNgueOToIq73JNJ8KLAV/QkiMxRgjQJJv6DSfAG4AX+RuAFHvkkzJs9nAQrgv2aTJ8EKwyTYNLCJOhDoWS6sQd6MgneDJwEK4CNMQmcBAd6Mgki9bvY00nwYtIkeEltosOXECbBSx2fBFXcl3oyCSYDX9GTIDJHl5Emwcv+g0nwGuAF/lrgBR75GwfXezgJXh7s1yvSJ8HLDZPgFRYmQR8KJdONPdiTSfB64CR4ObAxXgGcBAd7Mgki9bvS00nwStIkeFVtosNXESbBdo5Pgirudp5MglcEvqInQWSOriZNglf/B5PglcAL/FXACzzy1+uu9nASvCbYr9emT4LXGCbBay1Mgj4USqYbe6gnk+DVwEnwGmBjvBY4CQ71ZBJE6nedp5PgdaRJ8PraRIevJ0yCNzg+Caq4b/BkErw28BU9CSJzdCNpErzxP5gELwVe4C8DXuCRv0t+hYeT4E3Bfr05fRK8yTAJ3mxhEvShUDLd2MM9mQSvAE6CNwEb483ASXC4J5MgUr9bPJ0EbyFNgrfWJjp8K2ESbO/4JKjibu/JJHhz4Ct6EkTm6DbSJHibzUkwuCgngRfli4HT2yW1cEPM/R5OgrcH+/WO9EnwdsMkeAdzEvSoUDLd2CNdnwQNBZ3pJHg7sDHeAZwER3oyCSL1u9PTSfBO0iR4V22iw3cRJsG7HZ8EVdx3ezIJ3hH4ip4EkTm6hzQJ3hNMgup13awNL/Kpb/2k3hBM/ZhY6pcHUr9SmvqgEfX6tJTXw2r88/qa6tv++qSUcx6T8np4yvlHpLwemfL6zZTXo1Jej055PSbl9VvB63vl/537pN0v7QFpHaQ9KO0haQ/X3niSRu+rh4F1oIeFR+Q5H5X2mLTHgykwtUbU/56XteHao4a1xwxrjwdrqQf67aqHgfvsEcC5/v795JB4FOjXKNKQUiUtF5nErHLxGES/v/P6OHDIQ+rH3uMPEfZ4R3nOJ6Q9Ke0pwx7vaNi7TxjWnjSsPWVhjz8E3EsdgXv8CaBfYzzZ408C9/hTwD0+xqM9/iBhj3eS53xa2jPSOhv2eCfD3n3asPaMYa2zhT3+IHAvdQLu8aeBfo31ZI8/A9zjnYF7fKxHe7wDYY93ked8Vtpz0p437PEuhr37rGHtOcPa8xb2eAfgXuoC3OPPAv0a78kefw64x58H7vHxHu3xBwh7vKs85wvSXpT2kmGPdzXs3RcMay8a1l6ysMcfAO6lrsA9/gLQr4me7PEXgXv8JeAen+jRHr+fsMe7yXO+LO0Vad0Ne7ybYe++bFh7xbDW3cIevx+4l7oB9/jLQL8me7LHXwHu8e7APT7Zoz1+H2GP95Dn7CntVWmvGfZ4D8Pe7WlYe9Ww9pqFPX4fcC/1AO7xnkC/pniyx18F7vHXgHt8ikd7/F7CHu8lz9lb2uvS+hj2eC/D3u1tWHvdsNbHwh6/F7iXegH3eG+gX9M82eOvA/d4H+Aen+bRHt8Od65Qg+A8faWW/aS9Ia2/tAHSBkobJG2wtCHShkobJm24tBHSRkp7U9ooaaOljZH2lrSx0sZJGy9tgrSJ0iZJmyztbWlTpE2VNk3adGkzDD2lr6FX9DOsvWFY629YG2BYG2hYG2RYG2xYG2JYG2pYG2ZYG25YG2FYG2lYe9OwNsqwNtqwNsaw9pZhbaxhbZxhbbxhbYJhbaJhbZJhbbJh7W3D2hTD2lTD2jTD2nTD2gwL16DUPZtpr+8LvAb1A16DZlj6wG+m16A3gNeg/pmf638fHh4AzMVMl3MR/Z+fYmBmMYdSYhaDMjlXeAP9xGBgLt5xMxehND/FkG2MuTi5Ucxi6LadK27QTwwD5mKWa7mIG/0Uw7c+5ti/xCxGbO25Yv+qnxgJzMVsd3IR3oSf4s2tiTm2yZjFqC0/V/lm9BOjgbmY40IuYpv1U4zZsphDWxCzeGtLzhXaIv3EWGAu3v1vc1G0hX6KcZuLObrFMYvxmzxXNLkV+okJwFy891/lIrZVfoqJ/x5zfCtjFpP+5Vwlya3WT0wG5mKu/VyEtsFP8bYp5tA2xSymbHwusY36ianAXMyzmYvENvsppm0YcySDmMX0lHOFkxnpJ2YAc/G+J49cAb4/IIB8K1L5LNNcfOBJLoAcJIBzvJgDzMV8T3IBnPcEcF4Rc4G5WOBJLoDXNQHsy+IDYC4WWrpXGMrsEMD9K4D1J1j6Zafpl/H78cj3k2H3WiMhmw9TwPm94cMU3qlNdFidHH3eWcBiYMU9q/Y/AoPOG9rU45/QMcyAFVuC8WikwMsNP6AwO9B8TnAT/n93RWcHRZi6NsdwpxTd9RFdS9/dnI18hxScXMYGn21oHBm/S1/bj6vddOQ7sLCYi6M2r3bvkq5279UmOvwe4Wo31/GrnYp7rudXu+mwYispN7hLudrNCzR/P/1qN89wtXvfwtVuOvBqNw/5niIpueiuj4z5A1z3FFlZ+CvxrKBpZINrEIkG88HTArppqRzPJ0xJrsetawcd9wJPpkNkjS8k94lQZodQOVlI6BPzgRp+6MF++ZCwXxaBJ3Q9qyxK8ZWlBbqeFgLraTFJ18W1NyY3dG+aBtThI5gOUasPvf0InD99fFyb6PDHBHL9xHFyVXF/4jm5ToMVW1nY4C6FXJcEmn+aTq5LDOT6qQVyRXQtTa5LgEX/KSm56K6PjPkzxyfSxUHTQH2b1HTVz/RcyMb7ueP5UPXyOWG6BcZNeQq6rkP0JIusnaWOk5HScClBw8+BGn7hybsSyP71peM9R+XkS0LP+YpEfl8RiVprgd5DyHpaRtJ1mQWiRn7S/WuYDrGwTaL+Gpw/fXxTm+jwNwSi/tZxolZxf+s5UU+FFVu8wuAuhaiXB5p/l07Uyw1E/Z0FokZ0LU3Uy4FF/x0pueiuj4z5e8enqWVB00AT9TKghsjGu8LxfKh6WUGYboFxU4ha1yF6kkXWzkrHiVppuJKg4Qqghj94QtTI/vWj4z1H5eRHQs/5iUR+PxGJWmuB3kPIelpF0nWVBaKeAtThZ5gOFcImUf8Mzp8+fqlNdPgXAlH/6jhRq7h/9Zyop8CKTSQN7lKIenWg+W/pRL3aQNS/WSBqRNfSRL0aWPS/kZKL7vrImH93fJpaFTQNNFGvAmqIbLxrHM+Hqpc1hOkWGDeFqHUdoidZZO2sdZyolYZrCRquAWr4hydEjexffzrec1RO/iT0nHUk8ltHJGqtBXoPIetpPUnX9RaI+m0kRBWidIhYJWqc3xsS9XaFRIfVydHnzS50m6hV3NmF/wgMOq9Von4b1izKrRF1lUDznMKsDem5SuHGRK3+IzZRI7qWJuoqwKLPKeQkF931kTFXLQRu8Cz8hlNXUdU00ES9HnjlRDbeao7nQ9VLtUL8dAuMm0LUug7RkyyydnLJGoYyO/7ay7kEDasBNcwDa6gP9DUA2b+qO95zVE6qE3pODTA56BmqRiGPqLUW6D2ErKd8kq75hXyiRj5rviZMh1Krz7usCc6fPgoKiQ4XEIi6luNEreKu5TlRT4YRdbG1513WDjQvTCfq2gaiLrRA1JOBRF0bWPSFhZzkors+MubtHZ+m8oOmgSbqfKCGyMZbx/F8qHqpQ5hugXFTiFrXIXqSRdbODo4TtdJwB4KGdYAa7ugJUSP7106O9xyVk50IPWdnEvntTCRqrQV6DyHrqS5J17oWiHoSkKh3gekQLrFJ1LuA86ePXQuJDu9KIOrdHCdqFfdunhP1JBhRJ2IGdylEXS/QfPd0oq5nIOrdLRD1JCBR1wMW/e6FnOSiuz4y5j0cn6bqBk0DTdR1gRoiG++ejudD1cuehOkWGDeFqHUdoidZZO3Ud5yolYb1CRruCdSwgSdEjexfDR3vOSonDQk9pxGJ/BoRiVprgd5DyHpqTNK1sQWinggk6r1gOpTFbRL1XuD86aNJIdHhJgSibuo4Uau4m3pO1BNhRB2NG9ylEHWzQPPm6UTdzEDUzS0Q9UQgUTcDFn3zQk5y0V0fGfPejk9TjYOmgSbqxkANkY23heP5UPXSgjDdAuOmELWuQ/Qki6ydfRwnaqXhPgQNWwA13NcTokb2r/0c7zkqJ/sRes7+JPLbn0jUWgv0HkLWU0uSri0tEPUEIFGHYDoUWf3UdwicP32IQqLDgkDUYceJWsUd9pyoJ8CIuixkcJdC1JFA82g6UUcMRB21QNQTgEQdARZ9tJCTXHTXR8Zc5Pg01TJoGmiibgnUENl4ix3Ph6qXYsJ0C4ybQtS6DtGTLLJ2Yo4TtdIwRtCwGKhh3BOiRvavEsd7jspJCaHntCKRXysiUWst0HsIWU8HkHQ9wAJRjwcS9YG4OzRFNon6QHD+9HFQIdHhgwhEfbDjRK3iPthzoh6PI+oyg7sUoj4k0PzQdKI+xEDUh1og6vFAoj4EWPSHFnKSi+76yJgPc3yaOiBoGmiiPgCoIbLxtnY8H6peWhOmW2DcFKLWdYieZJG1c7jjRK00PJygYWughkd4QtTI/nWk4z1H5eRIQs85ikR+RxGJWmuB3kPIejqapOvRFoh6HJCoj8HNk8U2ifoYcP70cWwh0eFjCUR9nONEreI+znOiHof71HepwV0KUR8faH5COlEfbyDqEywQ9TggUR8PLPoTCjnJRXd9ZMwnOj5NHR00DTRRHw3UENl4T3I8H6peTiJMt8C4KUSt6xA9ySJrp43jRK00bEPQ8CSghid7QtTI/nWK4z1H5eQUQs85lUR+pxKJWmuB3kPIempL0rWtBaIeCyTq02A6xK3+etZp4Pzp4/RCosOnE4j6DMeJWsV9hudEPRZG1DFrv551ZqD5WelEfaaBqM+yQNRjgUR9JrDozyrkJBfd9ZExn+34NNU2aBpoom4L1BDZeM9xPB+qXs4hTLfAuClEresQPckia+dcx4laaXguQcNzgBqe5wlRI/vX+Y73HJWT8wk95wIS+V1AJGqtBXoPIevpQpKuF1og6reARH2Rp0R9ETh/+igtJDpcSiDqMseJWsVd5jlRv+UhUZcHmifSibrcQNQJC0T9FpCoy4FFn/CEqJExVzg+TV0YNA00UV8I1BDZeJOO50PVS5Iw3QLjphC1rkP0JIusnYsdJ2ql4cUEDZNADS/xhKiR/etSx3uOysmlhJ5zGYn8LiMStdYCvYeQ9XQ5SdfLLRD1GCBRXwHTocjqs76vAOdPH1cWEh2+kkDUVzlO1Cruqzwn6jEwoi619qzvdoHmV6cTdTsDUV9tgajHAIm6HbDory7kJBfd9ZExX+P4NHV50DTQRH05UENk473W8XyoermWMN0C46YQta5D9CSLrJ3rHCdqpeF1BA2vBWp4vSdEjexfNzjec1RObiD0nBtJ5Hcjkai1Fug9hKynm0i63mSBqEcDifpmHFEnbBL1zeD86eOWQqLDtxCI+lbHiVrFfavnRD0aR9QRg7sUom4faH5bOlG3NxD1bRaIejSQqNsDi/62Qk5y0V0fGfPtjk9TNwVNA03UNwE1RDbeOxzPh6qXOwjTLTBuClHrOkRPssjaudNxolYa3knQ8A6ghnd5QtTI/nW34z1H5eRuQs+5h0R+9xCJWmuB3kPIerqXpOu9Foh6FJCo74PpELZ6j/o+cP70cX8h0eH7CUT9gONEreJ+wHOiHgUj6oS1e9QdAs0fTCfqDgaiftACUY8CEnUHYNE/WMhJLrrrI2N+yPFp6t6gaaCJ+l6ghsjG+7Dj+VD18jBhugXGTSFqXYfoSRZZO484TtRKw0cIGj4M1PBRT4ga2b8ec7znqJw8Rug5j5PI73EiUWst0HsIWU8dSbp2tEDUbwKJ+gmYDpGITaJ+Apw/fTxZSHT4SQJRP+U4Uau4n/KcqN+EEXV5wuAuhag7BZo/nU7UnQxE/bQFon4TSNSdgEX/dCEnueiuj4z5GcenqY5B00ATdUeghsjG29nxfKh66UyYboFxU4ha1yF6kkXWThfHiVpp2IWgYWeghs96QtTI/vWc4z1H5eQ5Qs95nkR+zxOJWmuB3kPIeupK0rWrBaIeCSTqF2A6VFi9R/0COH/6eLGQ6PCLBKJ+yXGiVnG/5DlRj4QRtbB2j7pboPnL6UTdzUDUL1sg6pFAou4GLPqXCznJRXd9ZMyvOD5NdQ2aBpqouwI1RDbe7o7nQ9VLd8J0C4ybQtS6DtGTLLJ2ejhO1ErDHgQNuwM17OkJUSP716uO9xyVk1cJPec1Evm9RiRqrQV6DyHrqRdJ114WiHoEkKh7w3SIWiXq3uD86eP1QqLDrxOIuo/jRK3i7uM5UY+AEXWZNaLuG2jeL52o+xqIup8Foh4BJOq+wKLvV8hJLrrrI2N+w/FpqlfQNNBE3QuoIbLx9nc8H6pe+hOmW2DcFKLWdYieZJG1M8BxolYaDiBo2B+o4UBPiBrZvwY53nNUTgYRes5gEvkNJhK11gK9h5D1NISk6xALRD0cSNRDYTrESmwS9VBw/vQxrJDo8DACUQ93nKhV3MM9J+rhMKKOxwzuUoh6RKD5yHSiHmEg6pEWiHo4kKhHAIt+ZCEnufD3UYExv+n4NDUkaBpooh4C1BDZeEc5ng9VL6MI0y0wbgpR6zpET7LI2hntOFErDUcTNBwF1HCMJ0SN7F9vOd5zVE7eIvScsSTyG0skaq0Feg8h62kcSddxFoh6GJCox+Pu0Fgl6vHg/OljQiHR4QkEop7oOFGruCd6TtTDYEQdtUbUkwLNJ6cT9SQDUU+2QNTDgEQ9CVj0kws5yUV3fWTMbzs+TY0LmgaaqMcBNUQ23imO50PVyxTCdAuMm0LUug7RkyyydqY6TtRKw6kEDacANZzmCVEj+9d0x3uOysl0Qs+ZQSK/GUSi1lqg9xCynmaSdJ1pgaiHAon6Hdw96pBNon4HnD99zCokOjyLQNSzHSdqFfdsz4l6KIyoS0IGdylEPSfQ/N10op5jIOp3LRD1UCBRzwEW/buFnOSiuz4y5vccn6ZmBk0DTdQzgRoiG+9cx/Oh6mUuYboFxk0hal2H6EkWWTvzHCdqpeE8goZzgRq+7wlRI/vXB473HJWTDwg9Zz6J/OYTiVprgd5DyHpaQNJ1gQWiHgIk6oW4eVLYJOqF4Pzp48NCosMfEoh6keNEreJe5DlRD4ERdXHS4O7/Y+9M4K2a3j6eREVRt7rdW7dbIZWKs+98KZoVRSJFpjsaQxRFURRFpSRCUYQQzZpTmtM8p3kuMs/zuxZ7aXcsGs7vt6z1/s/+fJ6P/V+vd3ue3/OsZz/fs8/dh0LUm3zNN4cT9SYNUW82QNTjgUS9CVj0m0twkovu+siYt1g+Ta33mwaaqNcDNUQ23q2W50PWy1bCdAuMm0LUqg7RkyyydrZZTtRSw20EDbcCNdzuCFEj+9cOy3uOzMkOQs/ZSSK/nUSiVlqg9xCynnaRdN1lgKjHAYl6N0yHFKO/nrUbnD917ClBdHgPgaj3Wk7UMu69jhP1ONybyYz9etY+X/P94US9T0PU+w0Q9TggUe8DFv3+Epzkors+MuYDlk9Tu/ymgSbqXUANkY33Y8vzIevlY8J0C4ybQtSqDtGTLLJ2PrGcqKWGnxA0/Bio4UFHiBrZvz61vOfInHxK6DmfkcjvMyJRKy3QewhZT5+TdP3cAFGPBRL1FzAd8ow+o/4CnD91fFmC6PCXBKL+ynKilnF/5ThRj8X9epaxZ9Rf+5p/E07UX2uI+hsDRD0WSNRfA4v+mxKc5KK7PjLmby2fpj73mwaaqD8HaohsvN9Zng9ZL98Rpltg3BSiVnWInmSRtfO95UQtNfyeoOF3QA1/cISokf3rR8t7jszJj4Se8xOJ/H4iErXSAr2HkPX0M0nXnw0Q9RggUf8C0yE/1SRR/wLOnzp+LUF0+FcCUf9mOVHLuH9znKjHwIg6lK1xl0LUvyvNSxY4nJ5/1xC1/JfYRD0GSNS/I4u+JCe56K6PjPmEknZPUz/7TQNN1D8DNUQ23oKW50PWi/QRPd0C46YQtapD9CSLrJ0TyRqGIjv+2MvSR7SGwdqJVMNCYA3Vgb4HIPvXSZb3HJmTkwg952RgroMz1MkleUSttEDvIWQ9FSbpWrgkn6hHA4m6CEyHTKPf+i4Czp86ipYkOly0JP66pwBvLKy4Tyl5SGDQdY0S9Wjc31Eb+9b3qb7mxcKJ+tSSfyfqYgaIejSQqE8FFn2xkpzkors+Mubilk9Thf2mgSbqwkANkY33NMvzIevlNMJ0C4ybQtSqDtGTLLJ2TrecqKWGpxM0PA2oYQlHiBrZv0pa3nNkTkoSek4MifxiiESttEDvIWQ9lSLpWsoAUb8LJOrSMB3yjb7ruzQ4f+ooU5LocBkCUcdaTtQy7ljHifpd3Le+Qxp3KURd1tc8Lpyoy2qIOs4AUb8LJOqywKKPK8lJLrrrI2OOt3yaKuU3DTRRlwJqiGy85SzPh6yXcoTpFhg3hahVHaInWWTtlLecqKWG5QkalgNqmOAIUSP7VwXLe47MSQVCz0kkkV8ikaiVFug9hKyniiRdK/q6mqTLd07HxqKOSiWJDlci0GVly+lSxl2ZQJc6XxEbpDJhEwM3Hj3ftmqIjPsMR4aJisCYz7R8mJCxnkEYJs6yfPiWeTmL3HMi1bAKaXCo8h8MDqNIg8PZJYkOn00YHKpaPjjIuKs6MjjIQq5K2MTAjUfPt60aIuOu5sjgUAUYc3XLBwcZazXC4HCO5YODzMs55J4TqYY1SINDDQPP8N8GPsOvCdxDJoelmiU5w1KtkkSHaxGGpXMtH5Zk3OcaGpZCkR1eDd9X9KPDGsAcIfN9nuU3UNnoziPcQEOW30BlzCFC3B7ppudpvgKC1oSdM8QeP5cw9CD3e5LldS81TCJoeB5Qw2RHQAt5z0mx/D4hc5JC6JeppH6ZSnzcq7RA7yFkPaWR9hBayzRgzMq3SgFfF5/+531Tni8KnC8MnC8InM8PnM8LnM8NnM8JnH8QOJ8dOJ8VOH8/cD4zcD4jcD49cD4tcD41cD4lcD45cD4pcP5e4Hxi4HxC4Hx84Hxc4Hxs4HxM4Hx04PzdwPk7gfNRgfO3A+cvBM6fD5wPDpw/Fzh/NnA+KHD+TOB8YOD86cD5gMB5/8D5U4HzfoHzvoHzPoHzJwPnbwXO3wycjwycvxE4fz1w/lrgfETg/NXA+SuB8+GB82GB85cD5y8FzocGzocEzl/0z9XGTRd7LENYprDzhV0grLawOsIuFHaR3IPC6gmrL6yBsIbCGglrLOxiYU2ENRV2ibBLhTUT1lzYZcIuF9ZC2BXCWgq7UthVwloJu1pYa2FthF0j7FphbYVdJ+x6YTcIu1HYTcKyhGULyxGWKyxPWL7fx08tcIgZ5f++TzTf3/zz+wPnnQr++c+CgX93VOFD//d3/PObxXVvEXZryT+fQJn6rvqtpL5cAOtnUlCL2/zPFm4v6QuibrLy//BrmAPo76XfCrhB/Pm99Pz824A3m9sNDamhyA4PGfMdgWt5GclJSenJ8t/LyA15Kbk5SRlJSbnZKaGcUFZOUl5mipeZn5KUkpyTm5Mtrpnl5Yfys3Iy8zP+9MvkJ5l3kD7JbFeS6HA7wieZd1r+SaaM+86ShwQGXZfyacTtvq/o695FIqK7Sv79DofOH7Ipsn29GehrJf86d4trthd2j7B7hXUQ1lHYfcLuF9ZJWGdhDwh7UFgXYV2FPSTsYWHdhHUX9oiwR4X1ENZT2GPCHhfWS1hvYU8Ie1JYH2F9hfUT9pR/dw7m/O6Sh6ZCtdZes3aPZu1ezVoHzVpHzdp9mrX7NWudNGudNWsPaNYe1Kx10ax11aw9pFl7WLPWTbPWXbP2iGbtUc1aD81aT83aY5q1xzVrvTRrvTVrT2jWntSs9dGs9dWs9dOsPVXy759QF/L/Wdf/Zyiy47A9G2mfvRs2WIa89kC/9p/NGSzDcxFJzDIX90D0+zOv90Z+rSRfP68DMBcHbM5Fyl9+eh0jizkUiNm7L5JrJR2mn3c/MBcf25mLUJifXqfjjDkt/28xe52P71oZGv28B4C5+MS2XGRo/fQePPaY0/8hZq/LsV4r/R/187oCc3HQnlwk/Yuf3kPHEnP6v8bsPXz018o5gn5eN2AuPrUhF+lH9NPrfnQxh44iZu+Ro7lW6Kj08x4F5uKz/zYXqUfpp9fjSDGnHHXMXs9/vVZK/jHo5z0GzMXn/1Uu0o/JT+/xf4454xhj9nr9w7Uy849ZP683MBdfmM9F6Dj89J7QxRw6rpi9J/9+Le849fP6AHPxpclc5B63n17fw2NOjiBmr1/gWkn5EennPQXMxVeGchGK7PCAnw94QL71gnwWaS6+diQXQA7ygHO89ykwF984kgvgvOcB5xXvC2AuvnUkF8D7mgfsy97XwFx8R8oF+gsUwP3rAevPQ+on6zdNWCX/ek/5z8T6+s/InvSfmfX2n6E97j9T6+k/Y3vUf+bW3X8G97D/TK6r/4zuQf+ZXWf/Gd79/jO9jv4zvnv9Z37yOYB8rhB+oL95jJx7+pdE5SHZ6CtmcX4f/qWOASWJDsuLo6/7NLAYWHE/HdgUoOsafcXsU7BiyzX2itmBvubP+F8M+OtJ7UC/CINrz5Tkv2IW0bXUE9eBwKJ/BpxcxgYfWBL/TaOBJTkTDPpu1w+Y60GwmNNSTN7tBpHuds+WJDr8LOFu95zldzsZ93OO3+36wYotM0fjLuVuN9jX/Pnwu91gzd3ueQN3u37Au91gYNE/T0ouuusjY34B1z29AgXwd+Kn/aZREFyDSDR4ETwtoJuWzPGLhCnJ9rhV7aDjHuLIdIis8aHkPhGK7PBkToYS+sSLQA1fcmC/vETYLy+DJ3Q1q7wc8JWlBbqehgLraRhJ12El/05u6N7UF6jDcJgOKXkmyXU4OH/qeKUk0eFXCOT6quXkKuN+1XFy7QsrtuwkjbsUch3ha/5aOLmO0JDrawbIFdG1FLmOABb9a6Tkors+MubXLZ9Ih/lNA/0+v2FADZGN9w3L8yHr5Q3CdAuMm/LX2KoO0ZMssnZGWk5GUsORBA3fAGr4piOfSiD711uW9xyZk7cIPedtEvm9TSRqpQV6DyHraRRJ11EGiBr57ft3YDqkJxn9+TMSUb9bkujwuwSiHm05Ucu4RztO1H1gxZaRp3GXQtRjfM3HhhP1GA1RjzVA1IiupYh6DLDox5KSi+76yJjHWT5NjfKbBpqoRwE1RDbe8ZbnQ9bLeMJ0C4ybQtSqDtGTLLJ2JlhO1FLDCQQNxwM1nOgIUSP713uW9xyZk/cIPWcSifwmEYlaaYHeQ8h6mkzSdbIBon4SqMMUmA55Rl8QOwWcP3VMLUl0eCqBqKdZTtQy7mmOE/WTsGLz8jXuUoh6uq/5jHCinq4h6hkGiBrRtRRRTwcW/QxSctFdHxnzTMunqcl+00AT9WSghsjG+77l+ZD18j5hugXGTSFqVYfoSRZZO7MsJ2qp4SyChu8DNZztCFEj+9cHlvccmZMPCD1nDon85hCJWmmB3kPIeppL0nWuAaJ+AqjDPJgOyUaJeh44f+qYX5Lo8HwCUS+wnKhl3AscJ+onYMWWY4yoF/qaLwon6oUaol5kgKgRXUsR9UJg0S8iJRfd9ZExL7Z8mprrNw00Uc8FaohsvB9ang9ZLx8Spltg3BSiVnWInmSRtbPEcqKWGi4haPghUMOljhA1sn8ts7znyJwsI/Sc5STyW04kaqUFeg8h62kFSdcVBoga+f77lTAdsoy+73IlOH/qWFWS6PAqAlGvtpyoZdyrHSfq3rBiSzP2vss1vuZrw4l6jYao1xogakTXUkS9Blj0a0nJRXd9ZMzrLJ+mVvhNA03UK4AaIhvvesvzIetlPWG6BcZNIWpVh+hJFlk7GywnaqnhBoKG64EabnSEqJH96yPLe47MyUeEnrOJRH6biESttEDvIWQ9bSbputkAUfcC6rAFpkNSpkmi3gLOnzq2liQ6vJVA1NssJ2oZ9zbHiboXrNhy0zXuUoh6u6/5jnCi3q4h6h0GiBrRtRRRbwcW/Q5SctFdHxnzTsunqc1+00AT9WaghsjGu8vyfMh62UWYboFxU4ha1SF6kkXWzm7LiVpquJug4S6ghnscIWpk/9prec+ROdlL6Dn7SOS3j0jUSgv0HkLW036SrvsNEPXjQB0OwHTIzjBJ1AfA+VPHxyWJDn9MIOpPLCdqGfcnjhP147BiS8nQuEsh6oO+5p+GE/VBDVF/aoCoEV1LEfVBYNF/SkouuusjY/7M8mlqv9800ES9H6ghsvF+bnk+ZL18TphugXFTiFrVIXqSRdbOF5YTtdTwC4KGnwM1/NIRokb2r68s7zkyJ18Res7XJPL7mkjUSgv0HkLW0zckXb8xQNSPAXX4FqZDqtFvfX8Lzp86vitJdPg7AlF/bzlRy7i/d5yoH8N97GTsW98/+Jr/GE7UP2iI+kcDRI3oWoqofwAW/Y+k5KK7PjLmnyyfpr7xmwaaqL8BaohsvD9bng9ZLz8Tpltg3BSiVnWInmSRtfOL5UQtNfyFoOHPQA1/dYSokf3rN8t7jszJb4Se8zuJ/H4nErXSAr2HkPVUIIajq7wum6h7AnU4AaZDSqpJoj4BnL+/chVDdLhgDP66J8bYTdQy7hNjDgkMuq5Rou6Jg65sjbsUoi7ka35STIHD6blQzN+JWv5LbKJGdC1F1IWARX9SDCe56K6PjPnkGLunqQJ+00ATdQGghsjGW9jyfMh6KRyDn26BcVOIWtUhepJF1k4RsoahyI4/9nIRgoaFgRoWBWuoDvQ9ANm/TrG858icnELoOaeSyO/UGB5RKy3QewhZT8VIuhYzQNQ9gERdHDdPppkk6uLg/KnjtBiiw6cRiPp0y4laxn2640TdA/fF4CyNuxSiLuFrXjKcqEtoiLqkAaLuASTqEsCiLxnDSS666yNjjrF8mirmNw00URcDaohsvKUsz4esl1KE6RYYN4WoVR2iJ1lk7ZS2nKilhqUJGpYCaljGEaJG9q9Yy3uOzEksoeeUJZFfWSJRKy3QewhZT3EkXeMMEPWjQKKOh+mQYfTXs+LB+VNHuRiiw+UIRF3ecqKWcZd3nKgfhRF1urFfz0rwNa8QTtQJGqKuYICoHwUSdQKw6CvEcJKL7vrImBMtn6bi/KaBJuo4oIbIxlvR8nzIeqlImG6BcVOIWtUhepJF1k4ly4laaliJoGFFoIaVHSFqZP86w/KeI3NyBqHnnEkivzOJRK20QO8hZD2dRdL1LANE/QiQqKs4StRVwPlTx9kxRIfPJhB1VcuJWsZd1XGifsRBoq7ma149nKiraYi6ugGifgRI1NWARV/dEaJGxnyO5dPUWX7TQBP1WUANkY23huX5kPVSgzDdAuOmELWqQ/Qki6ydmpYTtdSwJkHDGkANazlC1Mj+da7lPUfm5FxCzzmPRH7nEYlaaYHeQ8h6CpF0DRkg6u5AovZgOqQafde3B86fOpJiiA4nEYg62XKilnEnO07U3WFEnWXsXd8pvuap4USdoiHqVANE3R1I1CnAok+N4SQX3fWRMadZPk2F/KaBJuoQUENk4023PB+yXtIJ0y0wbgpRqzpET7LI2smwnKilhhkEDdOBGmY6QtTI/nW+5T1H5uR8Qs+5gER+FxCJWmmB3kPIeqpN0rW2AaLuBiTqOjiizjVJ1HXA+VPHhTFEhy8kEPVFlhO1jPsix4m6G46okzXuUoi6rq95vXCirqsh6noGiLobkKjrAou+Xgwnueiuj4y5vuXTVG2/aaCJujZQQ2TjbWB5PmS9NCBMt8C4KUSt6hA9ySJrp6HlRC01bEjQsAFQw0aOEDWyfzW2vOfInDQm9JyLSeR3MZGolRboPYSspyYkXZsYIOqHgUTdFKZDktFn1E3B+VPHJTFEhy8hEPWllhO1jPtSx4n6YRhR5xp7Rt3M17x5OFE30xB1cwNE/TCQqJsBi755DCe56K6PjPkyy6epJn7TQBN1E6CGyMZ7ueX5kPVyOWG6BcZNIWpVh+hJFlk7LSwnaqlhC4KGlwM1vMIRokb2r5aW9xyZk5aEnnMlifyuJBK10gK9h5D1dBVJ16sMEPVDQKJuBdMhOdkkUbcC508dV8cQHb6aQNStLSdqGXdrx4n6IRhR5+Rq3KUQdRtf82vCibqNhqivMUDUDwGJug2w6K+J4SQX3fWRMV9r+TR1ld800ER9FVBDZONta3k+ZL20JUy3wLgpRK3qED3JImvnOsuJWmp4HUHDtkANr3eEqJH96wbLe47MyQ2EnnMjifxuJBK10gK9h5D1dBNJ15sMEHVXIFFnwXTIM/qMOgucP3VkxxAdziYQdY7lRC3jznGcqLvCiNoz9ow619c8L5yoczVEnWeAqLsCiToXWPR5MZzkors+MuZ8y6epm/ymgSbqm4AaIhvvzZbnQ9bLzYTpFhg3hahVHaInWWTt3GI5UUsNbyFoeDNQw1sdIWpk/7rN8p4jc3IboefcTiK/24lErbRA7yFkPd1B0vUOA0TdBUjU7WA6pBgl6nbg/Knjzhiiw3cSiPouy4laxn2X40TdBUbU2caI+m5f8/bhRH23hqjbGyDqLkCivhtY9O1jOMlFd31kzPdYPk3d4TcNNFHfAdQQ2XjvtTwfsl7uJUy3wLgpRK3qED3JImung+VELTXsQNDwXqCGHR0hamT/us/yniNzch+h59xPIr/7iUSttEDvIWQ9dSLp2skAUT8IJOrOMB3SM00SdWdw/tTxQAzR4QcIRP2g5UQt437QcaJ+EEbUGekadylE3cXXvGs4UXfREHVXA0T9IJCouwCLvmsMJ7nwz1GBMT9k+TTVyW8aaKLuBNQQ2Xgftjwfsl4eJky3wLgpRK3qED3JImunm+VELTXsRtDwYaCG3R0hamT/esTyniNz8gih5zxKIr9HiUSttEDvIWQ99SDp2sMAUT8AJOqeuCc0Rom6Jzh/6ngshujwYwSiftxyopZxP+44UT8AI+oUY0Tdy9e8dzhR99IQdW8DRP0AkKh7AYu+dwwnueiuj4z5CcunqR5+00ATdQ+ghsjG+6Tl+ZD18iRhugXGTSFqVYfoSRZZO30sJ2qpYR+Chk8CNezrCFEj+1c/y3uOzEk/Qs95ikR+TxGJWmmB3kPIeupP0rW/AaLuDCTqAbhn1CGTRD0AnD91PB1DdPhpAlEPtJyoZdwDHSfqzjCizgxp3KUQ9TO+5oPCifoZDVEPMkDUnYFE/Qyw6AfFcJKL7vrImJ+1fJrq7zcNNFH3B2qIbLzPWZ4PWS/PEaZbYNwUolZ1iJ5kkbUz2HKilhoOJmj4HFDD5x0hamT/esHyniNz8gKh57xIIr8XiUSttEDvIWQ9DSHpOsQAUXcCEvVQ3DzpmSTqoeD8qeOlGKLDLxGI+mXLiVrG/bLjRN0JRtRp+Rp3KUQ9zNd8eDhRD9MQ9XADRN0JSNTDgEU/PIaTXHTXR8b8iuXT1BC/aaCJeghQQ2TjfdXyfMh6eZUw3QLjphC1qkP0JIusnRGWE7XUcARBw1eBGr7mCFEj+9frlvccmZPXCT3nDRL5vUEkaqUFeg8h62kkSdeRBoj6fiBRv4n7zqPRX896E5w/dbwVQ3T4LQJRv205Ucu433acqO/HvZnM2K9njfI1fyecqEdpiPodA0R9P5CoRwGL/p0YTnLRXR8Z87uWT1Mj/aaBJuqRQA2RjXe05fmQ9TKaMN0C46YQtapD9CSLrJ0xlhO11HAMQcPRQA3HOkLUyP41zvKeI3MyjtBzxpPIbzyRqJUW6D2ErKcJJF0nGCDq+4BEPRGmQ57RZ9QTwflTx3sxRIffIxD1JMuJWsY9yXGivg/361nGnlFP9jWfEk7UkzVEPcUAUd8HJOrJwKKfEsNJLrrrI2Oeavk0NcFvGmiingDUENl4p1meD1kv0wjTLTBuClGrOkRPssjamW45UUsNpxM0nAbUcIYjRI3sXzMt7zkyJzMJPed9Evm9TyRqpQV6DyHraRZJ11kGiLojkKhnw3TITzVJ1LPB+VPHBzFEhz8gEPUcy4laxj3HcaLuCCPqULbGXQpRz/U1nxdO1HM1RD3PAFF3BBL1XGDRz4vhJBfd9ZExz7d8mprlNw00Uc8CaohsvAssz4eslwWE6RYYN4WoVR2iJ1lk7Sy0nKilhgsJGi4AarjIEaJG9q/FlvccmZPFhJ7zIYn8PiQStdICvYeQ9bSEpOsSA0TdAUjUS2E6ZBr91vdScP7UsSyG6PAyAlEvt5yoZdzLHSfqDri/ozb2re8VvuYrw4l6hYaoVxog6g5Aol4BLPqVMZzkors+MuZVlk9TS/ymgSbqJUANkY13teX5kPWymjDdAuOmELWqQ/Qki6ydNZYTtdRwDUHD1UAN1zpC1Mj+tc7yniNzso7Qc9aTyG89kaiVFug9hKynDSRdNxgg6nuBRL0R94za6Lu+N4Lzp46PYogOf0Qg6k2WE7WMe5PjRH0v7lvfxt71vdnXfEs4UW/WEPUWA0R9L5CoNwOLfksMJ7noro+Meavl09QGv2mgiXoDUENk491meT5kvWwjTLfAuClEreoQPckia2e75UQtNdxO0HAbUMMdjhA1sn/ttLznyJzsJPScXSTy20UkaqUFeg8h62k3Sdfdvq4m6fKekthY1LEnhujwHgJd7rWcLmXcewl0qfMVsUH2EjYxcOPR822rhsi49zkyTOwGxrzf8mFCxrqPMEwcsHz4lnk5QO45kWr4MWlw+Pg/GBzakwaHT2KIDn9CGBwOWj44yLgPOjI4yEI+SNjEwI1Hz7etGiLj/tSRweFjYMyfWT44yFg/JQwOn1s+OMi8fE7uOZFq+AVpcPjCwDP8u4HP8L8E7iGTw9KXMZxh6asYosNfEYalry0flmTcXxsalkKRHd4Xvq/oR4dfAHOEzPc3lt9AZaP7hnAD/dbyG6iM+VtC3N+Rbnrfab4CgtaEnTPEHv+aMPQg9/v3lte91PB7gobfADX8wRHQQt5zfrT8PiFz8iOhX/5E6pc/ER/3Ki3QewhZTz+T9hBay5/Bs7U60Hv9FiAQ/hKI2ctITkpKT5b/XkZuyEvJzUnKSErKzU4J5YSycpLyMlO8zPyUpJTknNycbHHNLC8/lJ+Vk5mf8ee1TALhLyQg/DWG6PCvBCD8zXIglHH/RgBCWWwnFzDzpe5bSnIaWLgmkW7AYCH/HvxkCn2n/A04IQTvlL//y53yCD7nHEGcPzbK78dxpzyS6L8jN2ApzgQir9vtOGvBE9rleKH8UGZSKCuUnpOWnp2Zm5SdkZWfnJ+anJt8vLoeqdiRup5A0vWE49f1/0W9FiTpWvB/vF5PJOl6oq+rvHkWLGBmUkPePIM3+0Kl/vznSeKfJzBucL8TprXfLf9Y63g3R+gY4o7Ux5NLcTUMRXZ4sjClj+jcFCY1hcL/0mxDkR3eSSQtipC0KELUQjZChhYnV7W7p9D2w38bd84R/OPVPjhudaD/ihdYlx4w1x5SPzlIFS6g/xSiwDHqeaR6Cl6Tcc9CaRIcKouW+pdPIUKRHd7JpJtA0Olj9Nk70n9H+lyU0BSKkZpCoWPM2bEMb5HGfEopOxsMMhfBujwlMJwcb36OpDkyP6cGruUlJ4u9kZvu5efmJ6emZyZle2nJaWn5KfnpaRkpufmpKVm56XleSlZyUmZeeijfy8jLS09NzklPy8/MzUnLDzZtLzc5OSU3MzvHS01Ky8oOZeQmZ4XyU9KTBfDnJqfn5iZnpKVlJSfnpmXkZ2QKSBfonxFKTU/PDKUlJWcmsfJzaoCuUTeFI32aE7ymKzeFYi7eFIqRbwrFCDeF0yy5KfxjEaf/8ZKWfGTTKW7pTeE0UtMpDrgpHOmjTWR+TrP0psDKz2n/jz5yPd3/yLWE7iPXUGTHPz7vQD6rjPRawI9vKd+MUhqiv9HM0jDSa5UsZXc+5IYpSbixx5CGnBjix58lSFqUImlRivxRMEOLEpZ/FMzaDyUt/yiYVfsxjnwUDKxLD5hrLyb6UXD48cc9C6VJcNgtzaT+kqSbQGki9UufSxOaQqwjHwWXBFJlmVJ2NphYElWWMfBRMDI/sUDqjwFSPys/sZr8HOt3ao700S8yP2VJ/bMsQIcjfTqF1CGOpEOcY/UQT9Ih3rF6KEfSodxRPCqyebDTuAur4+DQWN7FobE8eWgsTxga4wwNjRF+Kx7a5BKA10IOjXGkoSThKIbGSL9dj8xPhVK4QQ85NLLyUwFwczzC4T0F/NvRRFj/zKB8EVs+tZD1iH6ihKzxipY/wZA5rki431Qi3XvldYv4/zutwN8P1H9TXQ+td/ui9vtYGT1IulK05Sx/vCJjrkyIu7wlnyge4TisMCON+QxgYwbWjYfMBblJ/vWY4n+xSZ7xv9okz7T8z/NkzGcS4j6LNNGcVerQ29YYf+6pm5BDkR0eckKuYnk9SaKqQqinsx3YR2cT4q5K2kdV/2UfhSI7aD0lser/Zg1UNPS9lkj9rAYcEoG59iqSPqGqFqVruo/V2YMjgjKrEzb9GY5QZnUHNn3EQ7wjDfgcYC6A9eedGaV0J5rtOchm6+pdsYsDiaoRTVTIe8iBRNWMJirkdXMgUbWiiQp5jziQqHOjiQp5PRxI1HnRRIW8xxxIVCiaqJDXy4FEedFEhbwnHEhUUjRRIa+PA4lKjiYq5PVzIFEp0USFvP4OJCo1mqiQ97QDiUqLJirk3VrQfh/To4kKeYMc2FEZ0USFvFwHdlRmNFEhb7ADO+r8aKJC3gsOJOqCaKJC3hAHElU7mqiQ95IDiaoTTVTIG+ZAoi6MJirkveJAoi6KJirkjXAgUXWjiQp5rzuQqHrRRIW8kQ4kqn40USHvLQcS1SCaqJA3yoFENYwmKuS1cuCzvkbRRIW80Q7sqMbRRIW8sQ4k6uJookLeeAcS1SSaqJA30YFENUUmSr5DU/1RqnK2cljSCoIDAL7kwkP/oT8jYTUc8LGmAz7WcsDHcx3w8TwHfAw54KPngI9JDviY7ICPKQ74mOqAj2kO+JjugI8ZDviY6YCP5zvg4wUO+FjbAR/rOODjhQ74eJEDPtZ1wMd6DvhY3wEfGzjgY0MHfGzkgI+NHfDxYgd8bOKAj00JPhaA+picXkBzYK6d5PGufeiXyU8IXPMSofelwpoJay7sMmGXC2sh7AphLYVdKewqYa2EXS2stbA2wq4Rdq2wtsKuE3a9sBuE3SjsJmFZwrKF5QjLFZYnLF/YzcJuEXarsNuE3S7sDmHthN0p7C5hdwtrL+weYfcK6yCso7D7hN0vrJOwzsIeEPagsC7Cugp7SNjDwroJ6y7sEWGPCushrKewx4Q9LqyXsN6l/tTgiVK+KOqtjVKUImFrl2rWmmnWmmvWLtOsXa5Za6FZu0Kz1lKzdqVm7SrNWivN2tWatdaatTaatWs0a9dq1tpq1q7TrF2vWbtBs3ajZu0mzVqWZi1bs5ajWcvVrOVp1vI1azdr1m7RrN2qWbtds3aHZq2dZu1OzdpdmrW7NWvtNWv3aNbu1ax10Kx11Kzdp1m7X7PWSbPWWbP2gGbtQc1aF81aV83aQ5q1hzVr3TRr3TVrj2jWHtWs9dCs9dSsPaZZe1yz1kuz1luzJptfpQKHH+iXTgYf/ln0lm/vklKcYaMgWD/gw0TvUkdiBj6c9Jo5EjPwYafX3JGYgQ9PvcsciRn4MNa73JGYgQ93vRaOxAx8WOxd4UjMwIfPXktHYgY+zPaudCRm4MNx7ypHYgY+bPdaORIz8OG9d7UjMQO/DOC1diRm4JcLvDaOxAz8soJ3jSMxA7/84F3rSMzAL1N4bR2JGfjlDO86R2IGftnDu96RmIFfHvFucCRm4JdRvBsdiRn45RbvJkdiBn5ZxstyJGbgl2+8bEdiBn6Zx8txJGbgl4O8XEdiBn7ZyMtzJGbgl5e8fEdiBn4ZyrvZkZiBX67ybnEkZuCXtbxbSTGfEBZzKLLDuw3wLDsvXx45WfIPcYsG8nJCwE+W/4xn3mgfo388i/Ex+sezGB+jfzyL8TH6x7MYH6N/PIvxMfrHsxgfo388i/Ex+sezGB+jfzyL8TH6x7MYH6N/PIvxMfrHsxgfo388i/Ex+sezGB+jfzyL8dHFP57FXDeDpukdDuS9nQM+3umAj3c54OPdDvjY3gEf73HAx3sd8LGDAz52dMDH+xzw8X4HfOzkgI+dHfDxAQd8fNABH7s44GNXB3x8yAEfH3bAx24O+NjdAR8fccDHRx3wsYcDPvZ0wMfHHPDxcQd87OWAj72Jn/Ph/ExK0n2v8Unhex9hfYX1E/aUsP7CBgh7WthAYc8IGyTsWWHPCRss7HlhLwh7UdgQYUOFvSTsZWHDhA0X9oqwV4WNEPaasNeFvSFspLA3hb0l7G1ho4S9I+xdYaOFjRE2Vtg4YeOFTRA2Udh7wiYJmyxsirCpwqYJmy5shrCZwt4XNkvYbGEfCJsjbK6wecLmC1sgbKGwRcIWl/pTgw9LFTj8JUxSlPAXM/XRrPXVrPXTrD2lWeuvWRugWXtaszZQs/aMZm2QZu1ZzdpzmrXBmrXnNWsvaNZe1KwN0awN1ay9pFl7WbM2TLM2XLP2imbtVc3aCM3aa5q11zVrb2jWRmrW3tSsvaVZe0ez9q5mbbRmbYxmbaxmbZxmbbxmbYJmbaJm7T3N2iTN2mTN2hTN2lTN2jTN2nTN2gzN2kzN2vuatVmatdmatQ80a3M0a3M1a/M0a/M1aws0aws1a4s0a4s1a7LRVSpw+KFuCnX9f0b6RwjAL7R7T5bi3FjRMSNfCNfHkZiRL4Tr60jMyBfC9XMkZuQL4Z5yJGbkC+H6OxIz8oVwAxyJGflCuKcdiRn5QriBjsSMfCHcM47EjHwh3CBHYka+EO5ZR2JGvhDuOUdiRr4QbrAjMSNfCPe8IzEjXwj3giMxI18I96IjMSNfCDfEkZiRL4Qb6kjMyBfCveRIzMgXwr3sSMzIF8INcyRm5AvhhjsSM/KFcK84EjPyhXCvOhIz8oVwIxyJGflCuNcciRn5QrjXHYkZ+UK4NxyJGflCuJGOxIx8IdybjsSMfCHcW6SYTwiLORTZ4b1dKnL91AvhmH6OgvmZ4TFrCPgHl947juwb4B9weu86EjPwD0K90Y7EDPwDU2+MIzED/2DVG+tIzMA/gPXGORIz8A9qvfGOxAz8A11vgiMxA//g15voSMzAPyD23nMkZuAfJHuTHIkZ+AfO3mRHYgb+wbQ3xZGYgX+A7U11JGbgH3R70xyJGfgH4t50R2IG/sG5N8ORmIF/wO7NdCRm4B/Ee+87EjPwD+y9WY7EDPyDfW+2IzEDXwDgfeBIzMAXCnhzHIkZ+IICb64jMQNfeODNcyRm4AsUvPmOxAx8IYO3wJGYgS948BY6EjPwhRHeIkdiBr6AwlsMjFn+oNYpBf78+2N5nBCIuUBgLahFKLIj+oNaIB+jP6iF8TH6g1oYH6M/qIXxMfqDWhgfoz+ohfEx+oNaGB+jP6iF8TH6g1oYH6M/qIXxMfqDWhgfoz+ohfEx+oNaGB+jP6iF8TH6g1oYH6M/qIW4bvQHtRg+Rn9QC+Nj9Ae1MD5Gf1AL42P0B7UwPkZ/UAvjY/QHtTA+Rn9QC+Nj9Ae1MD5Gf1AL42P0B7UwPkZ/UAvjY/QHtTA+Rn9QC+Nj9Ae1MD668oNaxGt7JwS0VddcInRZKmyZsOXCVghbKWyVsNXC1ghbK2ydsPXCNgjbKOwjYZuEbRa2RdhWYduEbRe2Q9hOYbuE7Ra2R9heYfuE7Rd2QNjHwj4RdlDYp8I+E/a5sC+EfSnsK2FfC/tG2LfCvhP2vbAfhP0o7CdhPwv7Rdivwn4T9ruwAqVFfMIKCjtRWCFhJwk7WVhhYUWEFRV2irBTSxc4/MdspBjhP3CzVLO2TLO2XLO2QrO2UrO2SrO2WrO2RrO2VrO2TrO2XrO2QbO2UbP2kWZtk2Zts2Zti2Ztq2Ztm2Ztu2Zth2Ztp2Ztl2Ztt2Ztj2Ztr2Ztn2Ztv2btgGbtY83aJ5o1Wazhaydp1k7WrBXWrBXRrBXVrJ2iWTvVXwseBf1/1vX/adMPOy0hNXh0zMgfdlrqSMzIH3Za5kjMyB92Wu5IzMgfdlrhSMzIH3Za6UjMyB92WuVIzMgfdlrtSMzIH3Za40jMyB92WutIzMgfdlrnSMzIH3Za70jMyB922uBIzMgfdtroSMzIH3b6yJGYkT/stMmRmJE/7LTZkZiRP+y0xZGYkT/stNWRmJE/7LTNkZiRP+y03ZGYkT/stMORmJE/7LTTkZiRP+y0y5GYkT/stNuRmJE/7LTHkZiRP+y015GYkT/stM+RmJE/7LTfkZiRP+x0wJGYkT/s9LEjMSN/2OkTUszoLwUdLBW5fiZ+2OlTmJ+H/7AT2s/PHMn75474+YUjfn7piJ9fOeLn1474+Y0jfn7riJ/fOeLn9474+YMjfv7oiJ8/OeLnz474+Ysjfv7qiJ+/OeLn7474Kb9M74KfJzjiZ0FH/DyR5GehSP30Dv+fhSLz87CrnRRpzIGrnVwa97nM2VUtzUXo8KgLI2rGv1oRTP39cbWiwFxUtTsXIRX1Kbj9650KvBawlr1gLiL6TCwvP1P+qMBpBQ59pkrJDbm2Q5Ec9tYM448t/+pZwXwXK/3nP4uH/1Gg/D9sDVuT/1KlAtFCibShnuNCQw0r6OOMOcmP2SsG1K84cNOyclEQnAukfqdprpUdyslN9bLTctO9vKzUjJyczGTPS8pKy0rLTsrIz8tO9TJSM8Q1c7KSMsR/Likrx8sLZaXlyZtI8QKHhvHggR7QTwM22KC/p5cmOiwvjr5uCWAxsOIuUfqQwKDran1FNBPpK2rDqusic1QSXPjqhi6vW1n80+QkWAh4gz8JeIM/GXhTKVyac1MB7SftJBjj79dS4ZNgjGYSLMWcBH0nCwOnjxjgZiwVuFZSbmpeKDMjOyMpOys5PTslOTszM0tcN83zMvJzk0K5KUn5qV5aWk5mXma+l5yfnZqXlZaalZmW+8fdM/dsR6YPpH6lHZ0+SpOmjzKliQ6XIUwfsZZPHzLuWEemj1K+r+jpA5mjsqTpo+x/MH2Avsv6x9Vg3xH1sN+9ZL7cH5AL7fQR5+/X+PDpI04zfcQb+BzKhUKJ+AU1jnwO1bQUbhKMAzbGeCAy1HRkEkTqV87RSbAcaRIsX5rocHnCJJhg+SQo405wZBKM931FT4LIHFUgTYIV/oNJsD7wBt8AeINH/lVdIwcnwUR/v1YMnwQTNZNgRQOToAuFEvEr7ByZBBsBJ8FEYGOsCJwEz3VkEkTqV8nRSbASaRKsXJrocGXCJHiG5ZOgjPsMRybBir6v6EkQmaMzSZPgmf/BJHgh8AZ/EfAGj3xfSj0HJ8Gz/P1aJXwSPEszCVYxMAm6UCgRv+TWkUmwHnASPAvYGKsAJ8GQI5MgUr+zHZ0EzyZNglVLEx2uSpgEq1k+Ccq4qzkyCVbxfUVPgsgcVSdNgtX/g0nwfOAN/gLgDR75Jsw6Dk6C5/j7tUb4JHiOZhKsYWASdKFQIn4NviOTYB3gJHgOsDHWAE6CSY5Mgkj9ajo6CdYkTYK1ShMdrkWYBM+1fBKUcZ/ryCRYw/cVPQkic3QeaRI87z+YBNOAN/h04A0e+RsHmQ5OgiF/v3rhk2BIMwl6BiZBFwol4h/KcWQSzAROgiFgY/SAk2CKI5MgUr8kRyfBJNIkmFya6HAyYRJMsXwSlHGnODIJer6v6EkQmaNU0iSY+h9MgknAG3wy8AaP/PW6VAcnwTR/v6aHT4Jpmkkw3cAk6EKhRPxTeo5MgqnASTAN2BjTgZNgmiOTIFK/DEcnwQzSJJhZmuhwJmESPN/ySVDGfb4jk2C67yt6EkTm6ALSJHjBfzAJngu8wZ8HvMEjf5fcc3ASrO3v1zrhk2BtzSRYx8Ak6EKhRHwndmQS9ICTYG1gY6wDnAQzHJkEkfpd6OgkeCFpEryoNNHhiwiTYF3LJ8E/EuXIJFjH9xU9CSJzVI80CdYzOQn6N+UawJtyTeD0VqsUboi5xMFJsL6/XxuET4L1NZNgA+Yk6FChRLqxz7d9EtQUdKSTYH1gY2wAnATPd2QSROrX0NFJsCFpEmxUmuhwI8Ik2NjySVDG3diRSbCB7yt6EkTm6GLSJHixPwn+8W7BAoff5IMf/QQfCAa/Jhb844Hgn5QGXzQiz+MD5xNPOXTevujxn5cKXLN44Py9wPUnBc4nB86nBM6nBs6nBc6nB85n+OdNxH+nqbBLhF0qrJmw5sIuE3Z56b9P0uh9dTmwDtSw0EJc8wphLYVd6U+BwRqR//ciBQ5fu0Kz1lKzdqW/FjzQH1ddDtxnLQDX+vP3k0PeFUC/apOGlBPDchFJzDIXLSH6/ZnXK4FDHlI/9h6/jLDHrxLXbCXsamGtNXv8Ks3ebaVZu1qz1trAHr8MuJeuAu7xVsiPZx3Z41cD93hr4B6/0KE93pywx9uIa14j7FphbTV7vI1m716jWbtWs9bWwB5vDtxLbYB7/BqgX3Ud2ePXAvd4W+Aer+vQHm9G2OPXiWteL+wGYTdq9vh1mr17vWbtBs3ajQb2eDPgXroOuMevB/pV35E9fgNwj98I3OP1HdrjlxL2+E3imlnCsoXlaPb4TZq9m6VZy9as5RjY45cC99JNwD2ehfwA3ZE9ng3c4znAPd7QoT1+CWGP54pr5gnLF3azZo/navZunmYtX7N2s4E9fglwL+UC93ge0K/GjuzxfOAevxm4xxs7tMebEvb4LeKatwq7Tdjtmj1+i2bv3qpZu02zdruBPd4UuJduAe7xW4F+NXFkj98G3OO3A/d4E4f2eBPCHr9DXLOdsDuF3aXZ43do9m47zdqdmrW7DOzxJsC9dAdwj7cD+nWJI3v8TuAevwu4x5H6qT09LKAj6tpFoteLXi96vej1oteLXi96vej1otez+XpeVL/o9aLXi14ver3o9aLXi17vf/t6WenY66VkYa+XkYu9Xk5Ifd599omHPvuuEjg/K3B+ZuD8jMB55cB5pcB5xcB5YuC8QuA8IXBePnBeLnAeHziPC5yXDZzHBs7LBM5LB85LBc5jAuclA+clAuenB85PC5wXD5wXC5yfGjg/JXBeNHBeJHBeOHA+rtCh87GB8zGB89GB83cD5+8EzkcFzt8OnL8VOH8zcD4ycP5G4Pz1wPlrgfMRgfNXA+evBM6HB86HBc5fDpy/FDgfGjgfEjh/MXD+QuD8+cD54MD5c4HzZwPngwLnzwTOBwbOLzz50HmdwHntwPkFgfPzA+eZgfOMwHl64DwtcJ4aOE8JnCcHzpMC517gPBQ4Py9wfm7gvFbgvGbgvEbg/JzAefXAebXAedXA+dmB8yqB87MC52cGzs8InFcOnFcKnFcMnN8YePYW/F5s8Huzwe/Vtg2cB78rH/wuffC79q0D58G/nwn+fU3w72+uDJwH/6Yu+Dd3wb/JuytwHnyOGHzOGHwOeXvgPPjdguB3D4LfTbg5cB78vlHw+0jB7yvlBM6D30EMfkdRfYdxTIE/j7vF/24v7B5h9wrrIKyjsPuE3S+sk7DOwh4Q9qCwLsK6CntI2MPCugnrLuwRYY8K6yGsp7DHhD0urJew3sKeEPaksD7C+grrJ+wpYf2FDRD2tLCBwp4RNkjYs8KeEzZY2PPCXhD2orAhwoYKe0nYy8KGCRsu7BVhrwobIew1Ya8Le0PYSGFvCntL2NvCRgl7R9i7wkYLGyNsrLBxwsYLmyBsorD3hE0SNlnYFGFThU0TNl3YDGEzhb0vbJaw2cI+EDZH2Fxh84TNF7ZA2EJhi4QtFvahsCXClgpbJmy5sBXCVgpbJWy1sDXC1gpbJ2y9sA3CNgr7SNgmYZuFbRG2Vdg2YduF7RC2U9guYbuF7RG2V9g+YfuFHRD2sbBPhB0U9qmwz4R9LuwLYV8K+0rY18K+EfatsO+EfS/sB2E/CvtJ2M/CfhH2q7DfhP0urEAZUVfCCgo7UVghYScJO1lYYWFFhBUVdoqwU4UVE1Zc2GnCThdWQlhJYTHCSgkrLayMsFhhZYXFCYsXVk5YeWEJwioISxRWscyfb9Ip6Ne2OtR5Xf+fkT7HXiv+AxsL/v26ocgOT14TdK3DvsNRqcyf/6xcxhdDfbFB/h+6ha1V9teYwp1IFC5SH6UmR3mtnCNcy6tcBpdQWdiFC+hfEVXgGPU8kt/Ba6KLvBJQk+AmPyO8uOXCCWECob4poiuWI/jqHSmYM8rg/DqzDKwYDv+F+0BzYGlaGagDUtOzjkHTI/23gpqe5WvK/tbdO4VxG6+Sf50qwvezhVUVVk1YdWHnCKshrKawWsLOFXaesJAwT1iSsGRhKcJShaUJSxeWISxT2PnCLhBWW1gdYRcKu0hqL6yesPrCGghr6G/4oJbSHzXZqrWzNWtVNWvVNGvVNWvnaNZqaNZqatZqadbO1aydp1kLadY8zVqSZi1Zs5aiWUvVrKVp1tI1axmatUzN2vmatQs0a7U1a3U0axdq1i7SrNXVrNXTrNXXrDXQrDX014IH+luhwT0b8e9xA3qh+lbo2cC+2szQK/gi/VZoVYh+f+a1WuTX+ut1ftWBuWhucy5SDg2o50QWcyg47NaI5FpJhw/ONYG5uMzOXITCYaHWccaclv938Dj3+K6VoYOY84C5uNy2XGTowS107DGn/xMEesd6rfR/BsokYC5a2JOLpH+D6ORjiTn934E8BfihRCowF1fYkIv0I/rppR1dzKGjiNlLP5prhY5KPy8DmIuW/20uUo/STy/zSDGnHHXM3vn/eq2U/GPQz7sAmIsr/6tcpB+Tn17tf4454xhj9ur8w7Uy849ZP+9CYC6uMp+L0HH46V2kizl0XDF7df9+Le849fPqAXPRymQuco/bT6/+4TEnRxCz1yBwraT8iPTzGgJzcbUjP4IE/HzAA/KtF+SzSHPR2pFcADnIA87x3hXAXLRxJBfAec8DziveVcBcXONILoD3NQ/Yl73WwFxca+iv90ORHR5w/3rA+vNY+hUM0y/iN6oBZ4xGsIf9ySGTP2+C8/vwLyk0LkN0uHEZ/HUvBhYDK+6LyxwSGHTd0L/9IBs6hoawYstl/FiZ7+XhXylr4mve1H8I/9dT0SZ+EQbXmmqelKK7PqJrqaebTYBF3xScXMYGb1IG/1W/JmXcuNs1AOb6EljMaSkm73aXkO52l5YhOnwp4W7XzPK7nYy7meN3uwawYsvM0bhLuds19zW/LPxu11xzt7vMwN2uAfBu1xz5nQVSctFdHxnz5bju+ccXr9F34ov9plEQXININGgBnhbQTUvmuAVhSrI9blU76LivcGQ6RNZ4S3KfCEV2eDInLQl9ogXyuboD++VKwn65Cjyh//VrcwFfWVqg66kl8nk0SddWZf5ObujeVB/5LBimQ4rRn6G+Gpw/dbQuQ3S4NYFc21hOrjLuNo6Ta31YsWUnadylkOs1vubXhpPrNRpyvdYAuSK61l+/Bwgs+mtJyUV3fWTMbS2fSFv5TQP9F6atgBoiG+91ludD1st1hOkWGLf25oWolzaESRZZO9dbTkZSw+sJGl4H1PAGRz6VQPavGy3vOTInNxJ6zk0k8ruJSNRKC/QeQtZTFknXLANEjfymezZMh/Qkk0SdDc6fOnLKEB3OIRB1ruVELePOdZyo68GKLSNP4y6FqPN8zfPDiTpPQ9T5Boga0bX++tVOYNHnk5KL7vrImG+2fJrK8psGmqizgBoiG+8tludD1ssthOkWGDeFqFUdoidZZO3cajlRSw1vJWh4C1DD2xwhamT/ut3yniNzcjuh59xBIr87iESttEDvIWQ9tSPp2s4AUdcF6nAnTIc8zyRR3wnOnzruKkN0+C4CUd9tOVHLuO92nKjrworNy9e4SyHq9r7m94QTdXsNUd9jgKgRXUsRdXtg0d9DSi666yNjvtfyaaqd3zTQRN0OqCGy8XawPB+yXjoQpltg3BSiVnWInmSRtdPRcqKWGnYkaNgBqOF9jhA1sn/db3nPkTm5n9BzOpHIrxORqJUW6D2ErKfOJF07GyDqi4A6PADTIdkoUT8Azp86HixDdPhBAlF3sZyoZdxdHCfqi2DFlmOMqLv6mj8UTtRdNUT9kAGiRnQtRdRdgUX/ECm56K6PjPlhy6epzn7TQBN1Z6CGyMbbzfJ8yHrpRphugXFTiFrVIXqSRdZOd8uJWmrYnaBhN6CGjzhC1Mj+9ajlPUfm5FFCz+lBIr8eRKJWWqD3ELKeepJ07WmAqJHvmn8MpkOW0fddPgbOnzoeL0N0+HECUfeynKhl3L0cJ+oLYcWWZux9l719zZ8IJ+reGqJ+wgBRI7qWIurewKJ/gpRcdNdHxvyk5dNUT79poIm6J1BDZOPtY3k+ZL30IUy3wLgpRK3qED3JImunr+VELTXsS9CwD1DDfo4QNbJ/PWV5z5E5eYrQc/qTyK8/kaiVFug9hKynASRdBxgg6jpAHZ6G6ZCUaZKonwbnTx0DyxAdHkgg6mcsJ2oZ9zOOE3UdWLHlpmvcpRD1IF/zZ8OJepCGqJ81QNSIrqWIehCw6J8lJRfd9ZExP2f5NDXAbxpooh4A1BDZeAdbng9ZL4MJ0y0wbgpRqzpET7LI2nnecqKWGj5P0HAwUMMXHCFqZP960fKeI3PyIqHnDCGR3xAiUSst0HsIWU9DSboONUDUtYE6vATTITvDJFG/BM6fOl4uQ3T4ZQJRD7OcqGXcwxwn6tqwYkvJ0LhLIerhvuavhBP1cA1Rv2KAqBFdSxH1cGDRv0JKLrrrI2N+1fJpaqjfNNBEPRSoIbLxjrA8H7JeRhCmW2DcFKJWdYieZJG185rlRC01fI2g4Qighq87QtTI/vWG5T1H5uQNQs8ZSSK/kUSiVlqg9xCynt4k6fqmAaK+AKjDWzAdUo1+6/stcP7U8XYZosNvE4h6lOVELeMe5ThRX4D72MnYt77f8TV/N5yo39EQ9bsGiBrRtRRRvwMs+ndJyUV3fWTMoy2fpt70mwaaqN8EaohsvGMsz4eslzGE6RYYN4WoVR2iJ1lk7Yy1nKilhmMJGo4BajjOEaJG9q/xlvccmZPxhJ4zgUR+E4hErbRA7yFkPU0k6TrRAFGfD9ThPdwTmlSTRP0eOH/qmFSG6PAkAlFPtpyoZdyTHSfq83HQla1xl0LUU3zNp4YT9RQNUU81QNSIrqWIegqw6KeSkovu+siYp1k+TU30mwaaqCcCNUQ23umW50PWy3TCdAuMm0LUqg7RkyyydmZYTtRSwxkEDacDNZzpCFEj+9f7lvccmZP3CT1nFon8ZhGJWmmB3kPIeppN0nW2AaLOBOrwAW6eTDNJ1B+A86eOOWWIDs8hEPVcy4laxj3XcaLOxH3slKVxl0LU83zN54cT9TwNUc83QNSIrqWIeh6w6OeTkovu+siYF1g+Tc32mwaaqGcDNUQ23oWW50PWy0LCdAuMm0LUqg7RkyyydhZZTtRSw0UEDRcCNVzsCFEj+9eHlvccmZMPCT1nCYn8lhCJWmmB3kPIelpK0nWpAaLOAOqwDKZDhtFfz1oGzp86lpchOrycQNQrLCdqGfcKx4k6A1Zs6cZ+PWulr/mqcKJeqSHqVQaIGtG1FFGvBBb9KlJy0V0fGfNqy6eppX7TQBP1UqCGyMa7xvJ8yHpZQ5hugXFTiFrVIXqSRdbOWsuJWmq4lqDhGqCG6xwhamT/Wm95z5E5WU/oORtI5LeBSNRKC/QeQtbTRpKuGw0QdTpQh48cJeqPwPlTx6YyRIc3EYh6s+VELePe7DhRpztI1Ft8zbeGE/UWDVFvNUDUiK6liHoLsOi3OkLUyJi3WT5NbfSbBpqoNwI1RDbe7ZbnQ9bLdsJ0C4ybQtSqDtGTLLJ2dlhO1FLDHQQNtwM13OkIUSP71y7Le47MyS5Cz9lNIr/dRKJWWqD3ELKe9pB03WOAqNOAOuyF6ZBq9F3fe8H5U8e+MkSH9xGIer/lRC3j3u84UafBii3L2Lu+D/iafxxO1Ac0RP2xAaJGdC1F1AeARf8xKbnoro+M+RPLp6k9ftNAE/UeoIbIxnvQ8nzIejlImG6BcVOIWtUhepJF1s6nlhO11PBTgoYHgRp+5ghRI/vX55b3HJmTzwk95wsS+X1BJGqlBXoPIevpS5KuXxog6lSgDl/hiDrXJFF/Bc6fOr4uQ3T4awJRf2M5Ucu4v3GcqFNx0JWscZdC1N/6mn8XTtTfaoj6OwNEjehaiqi/BRb9d6Tkors+MubvLZ+mvvSbBpqovwRqiGy8P1ieD1kvPxCmW2DcFKJWdYieZJG186PlRC01/JGg4Q9ADX9yhKiR/etny3uOzMnPhJ7zC4n8fiEStdICvYeQ9fQrSddfDRB1ClCH32A6JBl9Rv0bOH/q+L0M0eHfCURdINZuopZxSx8LYK9rlKhTYMWWa+wZ9Qm+5gVjCxxOz/L/EE7U8l9iEzWiaymiPgFY9AVjOclFd31kzCfGAhtQAfyG+9VvGmii/hX58SMwH4Usz4esl0Kx+OkWGDeFqFUdoidZZO2cRNYwFNnxx14+iaBhIaCGJ4M1VAf6HoDsX4Ut7zkyJ4UJPacIMNfBGapILI+olRboPYSsp6IkXYvG8ok6GajDKTAdkpNNEvUp4Pyp49RYosOnxuKvW8xyopZxF3OcqJNhRJ2Tq3GXQtTFfc1PCyfq4hqiPs0AUScDibo4sOhPi+UkF931kTGfbvk0VdRvGmiiLgrUENl4S1ieD1kvJQjTbQkwyaD9U3WInmSRtVPScqKWGpYkaFgCqGGMI0SN7F+lLO85MielCD2nNIn8ShOJWmmB3kPIeipD0rWMAaJOAhJ1LEyHPKPPqGPB+VNH2Viiw2UJRB1nOVHLuOMcJ+okGFF7xp5Rx/ualwsn6ngNUZczQNRJQKKOBxZ9uVhOctFdHxlzecunqTJ+00ATdRmghsjGm2B5PmS9JBCmW2DcFKJWdYieZJG1U8FyopYaViBomADUMNERokb2r4qW9xyZk4qEnlOJRH6ViESttEDvIWQ9VSbpWtkAUXtAoj4DpkOKUaI+A5w/dZwZS3T4TAJRn2U5Ucu4z3KcqD0YUWcbI+oqvuZnhxN1FQ1Rn22AqD0gUVcBFv3ZsZzkors+Muaqlk9Tlf2mgSbqykANkY23muX5kPVSjTDdAuOmELWqQ/Qki6yd6pYTtdSwOkHDakANz3GEqJH9q4blPUfmpAah59QkkV9NIlErLdB7CFlPtUi61jJA1CEgUZ8L0yE90yRRnwvOnzrOiyU6fB6BqEOWE7WMO+Q4UYdgRJ2RrnGXQtSer3lSOFF7GqJOMkDUISBRe8CiT4rlJBf+OSow5mTLp6laftNAE3UtoIbIxptieT5kvaQQpltg3BSiVnWInmSRtZNqOVFLDVMJGqYANUxzhKiR/Svd8p4jc5JO6DkZJPLLIBK10gK9h5D1lEnSNdMAUZ8HJOrzcU9ojBL1+eD8qeOCWKLDFxCIurblRC3jru04UZ8HI+oUY0Rdx9f8wnCirqMh6gsNEPV5QKKuAyz6C2M5yUV3fWTMF1k+TWX6TQNN1JlADZGNt67l+fijXgjTLTBuClGrOkRPssjaqWc5UUsN6xE0rAvUsL4jRI3sXw0s7zkyJw0IPachifwaEolaaYHeQ8h6akTStZEBoj4XSNSNcc+oQyaJujE4f+q4OJbo8MUEom5iOVHLuJs4TtTnwog6M6Rxl0LUTX3NLwkn6qYaor7EAFGfCyTqpsCivySWk1x010fGfKnl01Qjv2mgiboRUENk421meT5kvTQjTLfAuClEreoQPckia6e55UQtNWxO0LAZUMPLHCFqZP+63PKeI3NyOaHntCCRXwsiUSst0HsIWU9XkHS9wgBR1wISdUvcPOmZJOqW4Pyp48pYosNXEoj6KsuJWsZ9leNEXQtG1Gn5GncpRN3K1/zqcKJupSHqqw0QdS0gUbcCFv3VsZzkors+MubWlk9TV/hNA03UVwA1RDbeNpbnQ9ZLG8J0C4ybQtSqDtGTLLJ2rrGcqKWG1xA0bAPU8FpHiBrZv9pa3nNkTtoSes51JPK7jkjUSgv0HkLW0/UkXa83QNQ1gUR9A+47j0Z/PesGcP7UcWMs0eEbCUR9k+VELeO+yXGirol7M5mxX8/K8jXPDifqLA1RZxsg6ppAos4CFn12LCe56K6PjDnH8mnqer9poIn6eqCGyMaba3k+ZL3kEqZbYNwUolZ1iJ5kkbWTZzlRSw3zCBrmAjXMd4Sokf3rZst7jszJzYSecwuJ/G4hErXSAr2HkPV0K0nXWw0QdQ0gUd8G0yHP6DPq28D5U8ftsUSHbycQ9R2WE7WM+w7HiboG7tezjD2jbudrfmc4UbfTEPWdBoi6BpCo2wGL/s5YTnLRXR8Z812WT1O3+k0DTdS3AjVENt67Lc+HrJe7CdMtMG4KUas6RE+yyNppbzlRSw3bEzS8G6jhPY4QNbJ/3Wt5z5E5uZfQczqQyK8DkaiVFug9hKynjiRdOxog6nOARH0fTIf8VJNEfR84f+q4P5bo8P0Eou5kOVHLuDs5TtTnwIg6lK1xl0LUnX3NHwgn6s4aon7AAFGfAyTqzsCifyCWk1x010fG/KDl01RHv2mgibojUENk4+1ieT5kvXQhTLfAuClEreoQPckia6er5UQtNexK0LALUMOHHCFqZP962PKeI3PyMKHndCORXzciUSst0HsIWU/dSbp2N0DU1YFE/QhMh0yj3/p+BJw/dTwaS3T4UQJR97CcqGXcPRwn6uq4v6M29q3vnr7mj4UTdU8NUT9mgKirA4m6J7DoH4vlJBfd9ZExP275NNXdbxpoou4O1BDZeHtZng9ZL70I0y0wbgpRqzpET7LI2ultOVFLDXsTNOwF1PAJR4ga2b+etLznyJw8Seg5fUjk14dI1EoL9B5C1lNfkq59DRB1NSBR98M9ozb6ru9+4Pyp46lYosNPEYi6v+VELePu7zhRV8N969vYu74H+Jo/HU7UAzRE/bQBoq4GJOoBwKJ/OpaTXHTXR8Y80PJpqq/fNNBE3ReoIbLxPmN5PmS9PEOYboFxU4ha1SF6kkXWziDLiVpqOIig4TNADZ91hKiR/es5y3uOzMlzhJ4zmER+g4lErbRA7yFkPT1P0vV5X1eTdFm1DDYWdbwQS3T4BQJdvmg5Xcq4XyTQpc5XxAZ5kbCJgRuPnm9bNUTGPcSRYeJ5YMxDLR8mZKxDCMPES5YP3zIvL5F7TqQavkwaHF7+DwaHs0mDw7BYosPDCIPDcMsHBxn3cEcGB1nIwwmbGLjx6Pm2VUNk3K84Mji8DIz5VcsHBxnrK4TBYYTlg4PMywhyz4lUw9dIg8NrBp7hVwE+w38duIdMDkuvx3KGpTdiiQ6/QRiWRlo+LMm4RxoalkKRHd5rvq/oR4evAXOEzPeblt9AZaN7k3ADfcvyG6iM+S1C3G+Tbnpva74CgtaEnTPEHh9JGHqQ+32U5XUvNRxF0PBNoIbvOAJayHvOu5bfJ2RO3iX0y9Gkfjma+LhXaYHeQ8h6GkPaQ2gtxwBjLljg8APt66jCOE0r+dcZK+IfJ2y8sAnCJgp7T9gkYZOFTRE2Vdg0YdOFzRA2U9j7wmYJmy3sA2FzhM0VNk/YfGELhC0UtkjYYmEfClsibKmwZcKWC1sR+6dIwX0z1p8zgmvjNGvjNWsTNGsTNWvvadYmadYma9amaNamatamadama9ZmaNZmatbe16zN0qzN1qx9oFmbo1mbq1mbp1mbr1lboFlbqFlbpFlbrFn7ULO2RLO2VLO2TLO2XLO2QjPTFvL/Wdf/Zyiy47A9G2l/GQvoVeor0uOAfe+2qpxeH56LSGKWuRgP0e/PvE6I/FpJvn7eRGAubrc5Fyl/+em9F1nMoUDM3qRIrpV0mH7eZGAu7rAzF6EwP70pxxlzWv7fYvamHt+1MjT6edOAuWhnWy4ytH5604895vR/iNmbcazXSv9H/byZwFzcaU8ukv7FT+/9Y4k5/V9j9mYd/bVyjqCfNxuYi7tsyEX6Ef30Pji6mENHEbM352iuFToq/by5wFzc/d/mIvUo/fTmHSnmlKOO2Zv/r9dKyT8G/bwFwFy0/69ykX5MfnoL/znmjGOM2Vv0D9fKzD9m/bzFwFzcYz4XoePw0/tQF3PouGL2lvz9Wt5x6uctBebiXpO5yD1uP71lh8ecHEHM3vLAtZLyI9LPWwHMRQdDuQhFdnjAzwc8IN96QT6L+PWwjuQCyEEecI737gLm4j5HcgGc9zzgvOLdA8zF/Y7kAnhf84B92esIzEUnUi7QrwIB7l8PWH8eSz/09wKQM8ZK2HPcZKMvgML5ffiXR1fFEh1eFYu/7mpgMbDiXh17SGDQdY2+AGoFrNhyjb0Aao2v+Vr/IfxfT0XX+EUYXFsby38BFKJrqaeba4BFvxacXMYGXxOL/2bUmlg37nbLgbleB4s5LcXk3W4d6W63Ppbo8HrC3W6D5Xc7GfcGx+92y2HFlpmjcZdyt9voa/5R+N1uo+Zu95GBu91y4N1uI7DoPyIlF931kTFvwnVP7XefI/Vvtd80CoJrEIkGm8HTArppyRxvJkxJtsetagcd9xZHpkNkjW8l94lQZIcnc7KV0Cc2AzXc5sB+2UbYL9vBE7qaVbYHfGVpga6nrcB62kHSdUcs/4/8lwF12AnTISXPJLnuBOdPHbtiiQ7vIpDrbsvJVca923FyXQYrtuwkjbsUct3ja743nFz3aMh1rwFyRXQtRa57gEW/l5RcdNdHxrzP8ol0h9800G/b2AHUENl491ueD1kv+wnTLTBuypsbVB2iJ1lk7RywnIykhgcIGu4HavixI59KIPvXJ5b3HJmTTwg95yCJ/A4SiVppgd5DyHr6lKTrpwaIGvlN989gOqQnmSTqz8D5U8fnsUSHPycQ9ReWE7WM+wvHiXoprNgy8jTuUoj6S1/zr8KJ+ksNUX9lgKgRXUsR9ZfAov+KlFx010fG/LXl09SnftNAE/WnQA2Rjfcby/Mh6+UbwnQLjJtC1KoO0ZMssna+tZyopYbfEjT8Bqjhd44QNbJ/fW95z5E5+Z7Qc34gkd8PRKJWWqD3ELKefiTp+qMBol4C1OEnmA55Rl9E/xM4f+r4OZbo8M8Eov7FcqKWcf/iOFEvgRWbl69xl0LUv/qa/xZO1L9qiPo3A0SN6FqKqH8FFv1vpOSiuz4y5t8tn6Z+9JsGmqh/BGoIbbxl7c6HrBfpI3q6BcZNIWpVh+hJFlk7J5A1DEV2/LGXpY9oDYO1E/FbwsEaqgN9D0D2rxMt7zkyJycSek4hYK6DM1ShsjyiVlqg9xCynk4i6XpSWT5RfwjU4WSYDslGifpkcP7UUbgs0eHCZfHXLQK8sbDiLlL2kMCg6xol6g9hAJJjjKiL+pqfUrbA4fRctOzfiVr+S2yi/hBI1EWBRX9KWU5y0V0fGfOplk9TJ/lNA03UJwE1RDbeYpbnQ9ZLMcJ0WwxMMmj/VB2iJ1lk7RS3nKilhsUJGhYDaniaI0SN7F+nW95zZE5OJ/ScEiTyK0EkaqUFeg8h66kkSdeSBoga+a75GJgOWUbfdxkDzp86SpUlOlyKQNSlLSdqGXdpx4l6MYyo04y977KMr3lsOFGX0RB1rAGiXgwk6jLAoo8ty0kuuusjYy5r+TRV0m8aaKIuCdQQ2XjjLM+HrJc4wnQLjJtC1KoO0ZMssnbiLSdqqWE8QcM4oIblHCFqZP8qb3nPkTkpT+g5CSTySyAStdICvYeQ9VSBpGsFA0S9CEjUiTAdkjJNEnUiOH/qqFiW6HBFAlFXspyoZdyVHCfqRTCizk3XuEsh6sq+5meEE3VlDVGfYYCoFwGJujKw6M8oy0kuuusjYz7T8mmqgt800ERdAaghsvGeZXk+ZL2cRZhugXFTiFrVIXqSRdZOFcuJWmpYhaDhWUANz3aEqJH9q6rlPUfmpCqh51QjkV81IlErLdB7CFlP1Um6VjdA1AuBRH0OTIfsDJNEfQ44f+qoUZbocA0CUde0nKhl3DUdJ+qFMKJOydC4SyHqWr7m54YTdS0NUZ9rgKgXAom6FrDozy3LSS666yNjPs/yaaq63zTQRF0dqCGy8YYsz4eslxBhugXGTSFqVYfoSRZZO57lRC019AgahoAaJjlC1Mj+lWx5z5E5SSb0nBQS+aUQiVppgd5DyHpKJemaaoCoFwCJOg2mQ6rRb32ngfOnjvSyRIfTCUSdYTlRy7gzHCfqBbgfWDL2re9MX/Pzw4k6U0PU5xsg6gVAos4EFv35ZTnJRXd9ZMwXWD5NpfpNA03UqUANkY23tuX5kPVSmzDdAuOmELWqQ/Qki6ydOpYTtdSwDkHD2kANL3SEqJH96yLLe47MyUWEnlOXRH51iUSttEDvIWQ91SPpWs8AUc8HEnV93BOaVJNEXR+cP3U0KEt0uAGBqBtaTtQy7oaOE/V8HFFna9ylEHUjX/PG4UTdSEPUjQ0Q9XwgUTcCFn3jspzkors+MuaLLZ+m6vlNA03U9YAaIhtvE8vzIeulCWG6BcZNIWpVh+hJFlk7TS0naqlhU4KGTYAaXuIIUSP716WW9xyZk0sJPacZifyaEYlaaYHeQ8h6ak7StbkBop4HJOrLcPNkmkmivgycP3VcXpbo8OUEom5hOVHLuFs4TtTzcN/6ztK4SyHqK3zNW4YT9RUaom5pgKjnAYn6CmDRtyzLSS666yNjvtLyaaq53zTQRN0cqCGy8V5leT5kvVxFmG6BcVOIWtUhepJF1k4ry4laatiKoOFVQA2vdoSokf2rteU9R+akNaHntCGRXxsiUSst0HsIWU/XkHS9xgBRzwUS9bUwHTKM/nrWteD8qaNtWaLDbQlEfZ3lRC3jvs5xop4LI+p0Y7+edb2v+Q3hRH29hqhvMEDUc4FEfT2w6G8oy0kuuusjY77R8mnqGr9poIn6GqCGyMZ7k+X5kPVyE2G6BcZNIWpVh+hJFlk7WZYTtdQwi6DhTUANsx0hamT/yrG858ic5BB6Ti6J/HKJRK20QO8hZD3lkXTNM0DUc4BEne8oUeeD86eOm8sSHb6ZQNS3WE7UMu5bHCfqOQ4S9a2+5reFE/WtGqK+zQBRzwES9a3Aor/NEaJGxny75dNUnt800ESdB9QQ2XjvsDwfsl7uIEy3wLgpRK3qED3JImunneVELTVsR9DwDqCGdzpC1Mj+dZflPUfm5C5Cz7mbRH53E4laaYHeQ8h6ak/Stb0Bov4ASNT3wHRINfqu73vA+VPHvWWJDt9LIOoOlhO1jLuD40T9AYyos4y967ujr/l94UTdUUPU9xkg6g+ARN0RWPT3leUkF931kTHfb/k01d5vGmiibg/UENl4O1meD1kvnQjTLTBuClGrOkRPssja6Ww5UUsNOxM07ATU8AFHiBrZvx60vOfInDxI6DldSOTXhUjUSgv0HkLWU1eSrl0NEPVsIFE/hCPqXJNE/RA4f+p4uCzR4YcJRN3NcqKWcXdznKhn44g6WeMuhai7+5o/Ek7U3TVE/YgBop4NJOruwKJ/pCwnueiuj4z5Ucunqa5+00ATdVeghsjG28PyfMh66UGYboFxU4ha1SF6kkXWTk/LiVpq2JOgYQ+gho85QtTI/vW45T1H5uRxQs/pRSK/XkSiVlqg9xCynnqTdO1tgKhnAYn6CZgOSUafUT8Bzp86nixLdPhJAlH3sZyoZdx9HCfqWTCizjX2jLqvr3m/cKLuqyHqfgaIehaQqPsCi75fWU5y0V0fGfNTlk9Tvf2mgSbq3kANkY23v+X5kPXSnzDdAuOmELWqQ/Qki6ydAZYTtdRwAEHD/kANn3aEqJH9a6DlPUfmZCCh5zxDIr9niESttEDvIWQ9DSLpOsgAUb8PJOpnYTokJ5sk6mfB+VPHc2WJDj9HIOrBlhO1jHuw40T9Poyoc3I17lKI+nlf8xfCifp5DVG/YICo3wcS9fPAon+hLCe56K6PjPlFy6epQX7TQBP1IKCGyMY7xPJ8yHoZQphugXFTiFrVIXqSRdbOUMuJWmo4lKDhEKCGLzlC1Mj+9bLlPUfm5GVCzxlGIr9hRKJWWqD3ELKehpN0HW6AqGcCifoVmA55Rp9RvwLOnzpeLUt0+FUCUY+wnKhl3CMcJ+qZMKL2jD2jfs3X/PVwon5NQ9SvGyDqmUCifg1Y9K+X5SQX3fWRMb9h+TQ13G8aaKIeDtQQ2XhHWp4PWS8jCdMtMG4KUas6RE+yyNp503Kilhq+SdBwJFDDtxwhamT/etvyniNz8jah54wikd8oIlErLdB7CFlP75B0fccAUc8AEvW7MB1SjBL1u+D8qWN0WaLDowlEPcZyopZxj3GcqGfAiDrbGFGP9TUfF07UYzVEPc4AUc8AEvVYYNGPK8tJLrrrI2Meb/k09Y7fNNBE/Q5QQ2TjnWB5PmS9TCBMt8C4KUSt6hA9ySJrZ6LlRC01nEjQcAJQw/ccIWpk/5pkec+ROZlE6DmTSeQ3mUjUSgv0HkLW0xSSrlMMEPV0IFFPhemQnmmSqKeC86eOaWWJDk8jEPV0y4laxj3dcaKeDiPqjHSNuxSinuFrPjOcqGdoiHqmAaKeDiTqGcCin1mWk1z456jAmN+3fJqa4jcNNFFPAWqIbLyzLM+HrJdZhOkWGDeFqFUdoidZZO3MtpyopYazCRrOAmr4gSNEjexfcyzvOTIncwg9Zy6J/OYSiVppgd5DyHqaR9J1ngGingYk6vm4JzRGiXo+OH/qWFCW6PACAlEvtJyoZdwLHSfqaTCiTjFG1It8zReHE/UiDVEvNkDU04BEvQhY9IvLcpKL7vrImD+0fJqa5zcNNFHPA2qIbLxLLM+HrJclhOkWGDeFqFUdoidZZO0stZyopYZLCRouAWq4zBGiRvav5Zb3HJmT5YSes4JEfiuIRK20QO8hZD2tJOm60gBRTwUS9SrcM+qQSaJeBc6fOlaXJTq8mkDUaywnahn3GseJeiqMqDNDGncpRL3W13xdOFGv1RD1OgNEPRVI1GuBRb+uLCe56K6PjHm95dPUSr9poIl6JVBDZOPdYHk+ZL1sIEy3wLgpRK3qED3JImtno+VELTXcSNBwA1DDjxwhamT/2mR5z5E52UToOZtJ5LeZSNRKC/QeQtbTFpKuWwwQ9RQgUW/FzZOeSaLeCs6fOraVJTq8jUDU2y0nahn3dseJegqMqNPyNe5SiHqHr/nOcKLeoSHqnQaIegqQqHcAi35nWU5y0V0fGfMuy6epLX7TQBP1FqCGyMa72/J8yHrZTZhugXFTiFrVIXqSRdbOHsuJWmq4h6DhbqCGex0hamT/2md5z5E52UfoOftJ5LefSNRKC/QeQtbTAZKuBwwQ9WQgUX+M+86j0V/P+hicP3V8Upbo8CcEoj5oOVHLuA86TtSTcW8mM/brWZ/6mn8WTtSfaoj6MwNEPRlI1J8Ci/6zspzkors+MubPLZ+mDvhNA03UB4AaIhvvF5bnQ9bLF4TpFhg3hahVHaInWWTtfGk5UUsNvyRo+AVQw68cIWpk//ra8p4jc/I1oed8QyK/b4hErbRA7yFkPX1L0vVbA0Q9CUjU38F0yDP6jPo7cP7U8X1ZosPfE4j6B8uJWsb9g+NEPQn361nGnlH/6Gv+UzhR/6gh6p8MEPUkIFH/CCz6n8pykovu+siYf7Z8mvrWbxpoov4WqCGy8f5ieT5kvfxCmG6BcVOIWtUhepJF1s6vlhO11PBXgoa/ADX8zRGiRvav3y3vOTInvxN6ToE4DvnJ67KIWmmB3kPIejqBpOsJcXyifg9I1AVhOuSnmiTqguD8qePEOKLDJ8bhr1sozm6ilnEXijskMOi6Ron6PRhRh7I17lKI+iRf85PjChxOzyfF/Z2o5b/EJur3gER9ErDoT47jJBfd9ZExF46ze5o6wW8aaKI+AaghsvEWsTwfsl6KxOGnW2DcFKJWdYieZJG1U5SsYSiy44+9XJSgYRGghqeANVQH+h6A7F+nWt5zZE5OJfScYiTyK0YkaqUFeg8h66k4SdfiBoh6IpCoT4PpkGn0W9+ngfOnjtPjiA6fTiDqEpYTtYy7hONEPRH3d9TGvvVd0tc8JpyoS2qIOsYAUU8EEnVJYNHHxHGSi+76yJhLWT5NFfebBpqoiwM1RDbe0pbnQ9ZLacJ0C4ybQtSqDtGTLLJ2ylhO1FLDMgQNSwM1jHWEqJH9q6zlPUfmpCyh58SRyC+OSNRKC/QeQtZTPEnXeANEPQFI1OVwz6iNvuu7HDh/6igfR3S4PIGoEywnahl3guNEPQH3rW9j7/qu4GueGE7UFTREnWiAqCcAiboCsOgT4zjJRXd9ZMwVLZ+m4v2mgSbqeKCGyMZbyfJ8yHqpRJhugXFTiFrVIXqSRdZOZcuJWmpYmaBhJaCGZzhC1Mj+dablPUfm5ExCzzmLRH5nEYlaaYHeQ8h6qkLStYqvq0m6HB+LjUUdZ8cRHT6bQJdVLadLGXdVAl3qfEVskKqETQzcePR826ohMu5qjgwTVYAxV7d8mJCxViMME+dYPnzLvJxD7jmRaliDNDjU+A8Gh3GkwaFmHNHhmoTBoZblg4OMu5Yjg4Ms5FqETQzcePR826ohMu5zHRkcagBjPs/ywUHGei5hcAhZPjjIvITIPSdSDT3S4OAZeIY/FvgMPwm4h0wOS0lxnGEpOY7ocDJhWEqxfFiScacYGpZCkR2e5/uKfnToAXOEzHeq5TdQ2ehSCTfQNMtvoDLmNELc6aSbXrrmKyBoTdg5Q+zxFMLQg9zvGZbXvdQwg6BhKlDDTEdAC3nPOd/y+4TMyfmEfnkBqV9eQHzcq7RA7yFkPdUm7SG0lrWBMRcscPgBf50D7lqhSv516oj4LxR2kdRBWD1h9YU1ENZQWCNhjYVdLKyJsKbCLhF2qbBmwpoLu0zY5cJaCLtCWEthVwq7SlgrYVcLay2sjbBrhF0rrK2w6+L+FCm4b+r4c0Zw7ULN2kWatbqatXqatfqatQaatYaatUaatcaatYs1a000a001a5do1i7VrDXTrDXXrF2mWbtcs9ZCs3aFZq2lZu1KzdpVmrVWmrWrNWutNWttNGvXaNau1ay11axdp5lpC/n/rOv/MxTZcdiejbS/1AH0KvUV6QuBfa9XVU6vD89FJDHLXFwE0e/PvNaN/FpJvn5ePWAuetuci5S//PTqRxZzKBCz1yCSayUdpp/XEJiLJ+zMRSjMT6/Rccaclv+3mL3Gx3etDI1+3sXAXDxpWy4ytH56TY495vR/iNlreqzXSv9H/bxLgLnoY08ukv7FT+/SY4k5/V9j9pod/bVyjqCf1xyYi7425CL9iH56lx1dzKGjiNm7/GiuFToq/bwWwFz0+29zkXqUfnpXHCnmlKOO2Wv5r9dKyT8G/bwrgbl46r/KRfox+eld9c8xZxxjzF6rf7hWZv4x6+ddDcxFf/O5CB2Hn15rXcyh44rZa/P3a3nHqZ93DTAXA0zmIve4/fSuPTzm5Ahi9toGrpWUH5F+3nXAXDxtKBehyA4P+PmAB+RbL8hnkeZioCO5AHKQB5zjvb7AXDzjSC6A854HnFe8/sBcDHIkF8D7mgfsy95AYC6eJeUC/SoQ4P71gPXnsfRDfy8AOWNcD3uOm2z0BVA4vw//8ugNcUSHb4jDX/dGYDGw4r4x7pDAoOsafQHUdbBiyzX2AqibfM2z/Ifwfz0VvckvwuBaVhz/BVCIrqWebt4ELPoscHIZG/ymOPw3o26Kc+Nu1xaY62xYzGkpJu922aS7XU4c0eEcwt0u1/K7nYw71/G7XVtYsWXmaNyl3O3yfM3zw+92eZq7Xb6Bu11b4N0uD1j0+aTkors+Muabcd1T+93nSP270W8aBcE1iESDW8DTArppyRzfQpiSbI9b1Q467lsdmQ6RNX4buU+EIjs8mZPbCH3iFqCGtzuwX24n7Jc7wBO6mlXuCPjK0gJdT7cB66kdSdd2cfw/8r8WqMOdMB1S8kyS653g/Knjrjiiw3cRyPVuy8lVxn234+R6LazYspM07lLItb2v+T3h5NpeQ673GCBXRNdS5NoeWPT3kJKL7vrImO+1fCJt5zcN9Ns22gE1RDbeDpbnQ9ZLB8J0C4yb8uYGVYfoSRZZOx0tJyOpYUeChh2AGt7nyKcSyP51v+U9R+bkfkLP6UQiv05EolZaoPcQsp46k3TtbICokd90fwCmQ3qSSaJ+AJw/dTwYR3T4QQJRd7GcqGXcXRwn6mtgxZaRp3GXQtRdfc0fCifqrhqifsgAUSO6liLqrsCif4iUXHTXR8b8sOXTVGe/aaCJujNQQ2Tj7WZ5PmS9dCNMt8C4KUSt6hA9ySJrp7vlRC017E7QsBtQw0ccIWpk/3rU8p4jc/Iooef0IJFfDyJRKy3QewhZTz1JuvY0QNRtgDo8BtMhz+iL6B8D508dj8cRHX6cQNS9LCdqGXcvx4m6DazYvHyNuxSi7u1r/kQ4UffWEPUTBoga0bUUUfcGFv0TpOSiuz4y5ictn6Z6+k0DTdQ9gRoiG28fy/Mh66UPYboFxk0halWH6EkWWTt9LSdqqWFfgoZ9gBr2c4Sokf3rKct7jszJU4Se059Efv2JRK20QO8hZD0NIOk6wABRtwbq8DRMh2SjRP00OH/qGBhHdHgggaifsZyoZdzPOE7UrWHFlmOMqAf5mj8bTtSDNET9rAGiRnQtRdSDgEX/LCm56K6PjPk5y6epAX7TQBP1AKCGyMY72PJ8yHoZTJhugXFTiFrVIXqSRdbO85YTtdTweYKGg4EavuAIUSP714uW9xyZkxcJPWcIifyGEIlaaYHeQ8h6GkrSdagBoka+a/4lmA5ZRt93+RI4f+p4OY7o8MsEoh5mOVHLuIc5TtRXw4otzdj7Lof7mr8STtTDNUT9igGiRnQtRdTDgUX/Cim56K6PjPlVy6epoX7TQBP1UKCGyMY7wvJ8yHoZQZhugXFTiFrVIXqSRdbOa5YTtdTwNYKGI4Aavu4IUSP71xuW9xyZkzcIPWckifxGEolaaYHeQ8h6epOk65sGiLoVUIe3YDokZZok6rfA+VPH23FEh98mEPUoy4laxj3KcaJuBSu23HSNuxSifsfX/N1won5HQ9TvGiBqRNdSRP0OsOjfJSUX3fWRMY+2fJp6028aaKJ+E6ghsvGOsTwfsl7GEKZbYNwUolZ1iJ5kkbUz1nKilhqOJWg4BqjhOEeIGtm/xlvec2ROxhN6zgQS+U0gErXSAr2HkPU0kaTrRANEfRVQh/dgOmRnmCTq98D5U8ekOKLDkwhEPdlyopZxT3acqK+CFVtKhsZdClFP8TWfGk7UUzREPdUAUSO6liLqKcCin0pKLrrrI2OeZvk0NdFvGmiingjUENl4p1ueD1kv0wnTLTBuClGrOkRPssjamWE5UUsNZxA0nA7UcKYjRI3sX+9b3nNkTt4n9JxZJPKbRSRqpQV6DyHraTZJ19kGiPpKoA4fwHRINfqt7w/A+VPHnDiiw3MIRD3XcqKWcc91nKivxH3sZOxb3/N8zeeHE/U8DVHPN0DUiK6liHoesOjnk5KL7vrImBdYPk3N9psGmqhnAzVENt6FludD1stCwnQLjJtC1KoO0ZMssnYWWU7UUsNFBA0XAjVc7AhRI/vXh5b3HJmTDwk9ZwmJ/JYQiVppgd5DyHpaStJ1qQGibgnUYRnuCU2qSaJeBs6fOpbHER1eTiDqFZYTtYx7heNE3RIHXdkadylEvdLXfFU4Ua/UEPUqA0SN6FqKqFcCi34VKbnoro+MebXl09RSv2mgiXopUENk411jeT5kvawhTLfAuClEreoQPckia2et5UQtNVxL0HANUMN1jhA1sn+tt7znyJysJ/ScDSTy20AkaqUFeg8h62kjSdeNBoj6CqAOH+HmyTSTRP0ROH/q2BRHdHgTgag3W07UMu7NjhP1FbiPnbI07lKIeouv+dZwot6iIeqtBoga0bUUUW8BFv1WUnLRXR8Z8zbLp6mNftNAE/VGoIbIxrvd8nzIetlOmG6BcVOIWtUhepJF1s4Oy4laariDoOF2oIY7HSFqZP/aZXnPkTnZReg5u0nkt5tI1EoL9B5C1tMekq57DBB1C6AOe2E6ZBj99ay94PypY18c0eF9BKLebzlRy7j3O07ULWDFlm7s17MO+Jp/HE7UBzRE/bEBokZ0LUXUB4BF/zEpueiuj4z5E8unqT1+00AT9R6ghsjGe9DyfMh6OUiYboFxU4ha1SF6kkXWzqeWE7XU8FOChgeBGn7mCFEj+9fnlvccmZPPCT3nCxL5fUEkaqUFeg8h6+lLkq5fGiDqy4E6fOUoUX8Fzp86vo4jOvw1gai/sZyoZdzfOE7UlztI1N/6mn8XTtTfaoj6OwNEjehaiqi/BRb9d44QNTLm7y2fpr70mwaaqL8EaohsvD9Yng9ZLz8Qpltg3BSiVnWInmSRtfOj5UQtNfyRoOEPQA1/coSokf3rZ8t7jszJz4Se8wuJ/H4hErXSAr2HkPX0K0nXXw0Q9WVAHX6D6ZBq9F3fv4Hzp47f44gO/04g6gLxdhO1jFv6WAB7XaNEfRms2LIyNO5SiPoEX/OC8QUOp2f5fwgnavkvsYka0bUUUZ8ALPqC8Zzkors+MuYT44ENqAB+w/3qNw00Uf+K/PgRmI9CludD1kuhePx0C4ybQtSqDtGTLLJ2TiJrGIrs+GMvn0TQsBBQw5PBGqoDfQ9A9q/ClvccmZPChJ5TBJjr4AxVJJ5H1EoL9B5C1lNRkq5F4/lE3RyowykwHVJzTRL1KeD8qePUeKLDp8bjr1vMcqKWcRdznKib44g6WeMuhaiL+5qfFk7UxTVEfZoBom4OJOriwKI/LZ6TXHTXR8Z8uuXTVFG/aaCJuihQQ2TjLWF5PmS9lCBMtyXAJIP2T9UhepJF1k5Jy4laaliSoGEJoIYxjhA1sn+VsrznyJyUIvSc0iTyK00kaqUFeg8h66kMSdcyBoi6GZCoY2E6JBl9Rh0Lzp86ysYTHS5LIOo4y4laxh3nOFE3gxF1rrFn1PG+5uXCiTpeQ9TlDBB1MyBRxwOLvlw8J7noro+Mubzl01QZv2mgiboMUENk402wPB+yXhII0y0wbgpRqzpET7LI2qlgOVFLDSsQNEwAapjoCFEj+1dFy3uOzElFQs+pRCK/SkSiVlqg9xCyniqTdK1sgKgvBRL1GTAdkpNNEvUZ4Pyp48x4osNnEoj6LMuJWsZ9luNEfSmMqHNyNe5SiLqKr/nZ4URdRUPUZxsg6kuBRF0FWPRnx3OSi+76yJirWj5NVfabBpqoKwM1RDbeapbnQ9ZLNcJ0C4ybQtSqDtGTLLJ2qltO1FLD6gQNqwE1PMcRokb2rxqW9xyZkxqEnlOTRH41iUSttEDvIWQ91SLpWssAUV8CJOpzYTrkGX1GfS44f+o4L57o8HkEog5ZTtQy7pDjRH0JjKg9Y8+oPV/zpHCi9jREnWSAqC8BErUHLPqkeE5y0V0fGXOy5dNULb9poIm6FlBDZONNsTwfsl5SCNMtMG4KUas6RE+yyNpJtZyopYapBA1TgBqmOULUyP6VbnnPkTlJJ/ScDBL5ZRCJWmmB3kPIesok6ZppgKibAon6fJgOKUaJ+nxw/tRxQTzR4QsIRF3bcqKWcdd2nKibwog62xhR1/E1vzCcqOtoiPpCA0TdFEjUdYBFf2E8J7noro+M+SLLp6lMv2mgiToTqCGy8da1PB9/1AthugXGTSFqVYfoSRZZO/UsJ2qpYT2ChnWBGtZ3hKiR/auB5T1H5qQBoec0JJFfQyJRKy3QewhZT41IujYyQNRNgETdGKZDeqZJom4Mzp86Lo4nOnwxgaibWE7UMu4mjhN1E9xPzKVr3KUQdVNf80vCibqphqgvMUDUTYBE3RRY9JfEc5IL/xwVGPOllk9TjfymgSbqRkANkY23meX5kPXSjDDdAuOmELWqQ/Qki6yd5pYTtdSwOUHDZkANL3OEqJH963LLe47MyeWEntOCRH4tiESttEDvIWQ9XUHS9QoDRH0xkKhb4p7QGCXqluD8qePKeKLDVxKI+irLiVrGfZXjRH0xjKhTjBF1K1/zq8OJupWGqK82QNQXA4m6FbDor47nJBfd9ZExt7Z8mrrCbxpoor4CqCGy8baxPB+yXtoQpltg3BSiVnWInmSRtXON5UQtNbyGoGEboIbXOkLUyP7V1vKeI3PSltBzriOR33VEolZaoPcQsp6uJ+l6vQGibgwk6htwz6hDJon6BnD+1HFjPNHhGwlEfZPlRC3jvslxom4MI+rMkMZdClFn+ZpnhxN1loaosw0QdWMgUWcBiz47npNcdNdHxpxj+TR1vd800ER9PVBDZOPNtTwfsl5yCdMtMG4KUas6RE+yyNrJs5yopYZ5BA1zgRrmO0LUyP51s+U9R+bkZkLPuYVEfrcQiVppgd5DyHq6laTrrQaIuhGQqG/DzZOeSaK+DZw/ddweT3T4dgJR32E5Ucu473CcqBvBiDotX+Muhajb+ZrfGU7U7TREfacBom4EJOp2wKK/M56TXHTXR8Z8l+XT1K1+00AT9a1ADZGN927L8yHr5W7CdAuMm0LUqg7RkyyydtpbTtRSw/YEDe8GaniPI0SN7F/3Wt5zZE7uJfScDiTy60AkaqUFeg8h66kjSdeOBoi6IZCo78N959Hor2fdB86fOu6PJzp8P4GoO1lO1DLuTo4TdUPcm8mM/XpWZ1/zB8KJurOGqB8wQNQNgUTdGVj0D8Rzkovu+siYH7R8muroNw00UXcEaohsvF0sz4esly6E6RYYN4WoVR2iJ1lk7XS1nKilhl0JGnYBaviQI0SN7F8PW95zZE4eJvScbiTy60YkaqUFeg8h66k7SdfuBoi6AZCoH4HpkGf0GfUj4Pyp49F4osOPEoi6h+VELePu4ThRN8D9epaxZ9Q9fc0fCyfqnhqifswAUTcAEnVPYNE/Fs9JLrrrI2N+3PJpqrvfNNBE3R2oIbLx9rI8H7JeehGmW2DcFKJWdYieZJG109tyopYa9iZo2Auo4ROOEDWyfz1pec+ROXmS0HP6kMivD5GolRboPYSsp74kXfsaIOr6QKLuB9MhP9UkUfcD508dT8UTHX6KQNT9LSdqGXd/x4m6PoyoQ9kadylEPcDX/Olwoh6gIeqnDRB1fSBRDwAW/dPxnOSiuz4y5oGWT1N9/aaBJuq+QA2RjfcZy/Mh6+UZwnQLjJtC1KoO0ZMssnYGWU7UUsNBBA2fAWr4rCNEjexfz1nec2ROniP0nMEk8htMJGqlBXoPIevpeZKuzxsg6npAon4BpkOm0W99vwDOnzpejCc6/CKBqIdYTtQy7iGOE3U93N9RG/vW91Bf85fCiXqohqhfMkDU9YBEPRRY9C/Fc5KL7vrImF+2fJp63m8aaKJ+HqghsvEOszwfsl6GEaZbYNwUolZ1iJ5kkbUz3HKilhoOJ2g4DKjhK44QNbJ/vWp5z5E5eZXQc0aQyG8EkaiVFug9hKyn10i6vmaAqOsCifp13DNqo+/6fh2cP3W8EU90+A0CUY+0nKhl3CMdJ+q6uG99G3vX95u+5m+FE/WbGqJ+ywBR1wUS9ZvAon8rnpNcdNdHxvy25dPUa37TQBP1a0ANkY13lOX5kPUyijDdAuOmELWqQ/Qki6yddywnaqnhOwQNRwE1fNcRokb2r9GW9xyZk9GEnjOGRH5jiESttEDvIWQ9jSXpOtbX1SRdXhSHjUUd4+KJDo8j0OV4y+lSxj2eQJc6XxEbZDxhEwM3Hj3ftmqIjHuCI8PEWGDMEy0fJmSsEwjDxHuWD98yL++Re06kGk4iDQ6T/oPB4ULS4DA5nujwZMLgMMXywUHGPcWRwUEW8hTCJgZuPHq+bdUQGfdURwaHScCYp1k+OMhYpxIGh+mWDw4yL9PJPSdSDWeQBocZBp7h1wE+w58J3EMmh6WZ8Zxh6f14osPvE4alWZYPSzLuWYaGpVBkhzfD9xX96HAGMEfIfM+2/AYqG91swg30A8tvoDLmDwhxzyHd9OZovgKC1oSdM8Qen0UYepD7fa7ldS81nEvQcDZQw3mOgBbynjPf8vuEzMl8Qr9cQOqXC4iPe5UW6D2ErKeFpD2E1nIheLZm+dmpIE7PggUOP9C+3gf0tZJ/nUUiT4uFfShsibClwpYJWy5shbCVwlYJWy1sjbC1wtYJWy9sg7CNwj4StknYZmFbhG0Vtk3YdmE7hO0UtkvYbmF7hO0Vtk/Y/vg/RQru70X+PBRcW6xZ+1CztkSztlSztkyztlyztkKztlKztkqztlqztkaztlaztk6ztl6ztkGztlGz9pFmbZNmbbNmbYtmbatmbZtmbbtmbYdmbadmbZdmbbdmbY9mba9mbZ9mbb9m9i7k/7Ou/89QZMdhezbSPrgI0FPVV7kXA/vz61U596TwXEQSs8zFhxD9/szrksivleTr5y0F5uINm3OR8pef3rLIYg4FYvaWR3KtpMP081YAczHSzlyEwvz0Vh5nzGn5f4vZW3V818rQ6OetBubiTdtykaH101tz7DGn/0PM3tpjvVb6P+rnrQPm4i17cpH0L356648l5vR/jdnbcPTXyjmCft5GYC7etiEX6Uf00/vo6GIOHUXM3qajuVboqPTzNgNzMeq/zUXqUfrpbTlSzClHHbO39V+vlZJ/DPp524C5eOe/ykX6Mfnpbf/nmDOOMWZvxz9cKzP/mPXzdgJz8a75XISOw09vly7m0HHF7O3++7W849TP2wPMxWiTucg9bj+9vYfHnBxBzN6+wLWS8iPSz9sPzMUYQ7kIRXZ4wM8HPCDfekE+i/hb/Y7kAshBHnCO994G5mKcI7kAznsecF7x3gXmYrwjuQDe1zxgX/bGAnMxgZQL9CtLgPvXA9afh9RP1u/Fwir519vvPxPb6z8j2+0/M9vpP0Pb7j9T2+o/Y9vsP3P7yH8Gt8F/JrfOf0a3xn9mt8p/hrfCf6a3zH/Gt8R/5iefA8jnCuEH+jsVyLnnQDwqD8lGX56F8/vwL95+HE90WF4cfd1PgMXAivuTwKYAXdfoy7P2w4ot19jLsw76mn/qfzHgrye1B/0iDK59Gs9/eRaia6knrgeBRf8pOLmMDX4wHv+tsoPxnAkGfbfbB8z1Z7CY01JM3u0+I93tPo8nOvw54W73heV3Oxn3F47f7fbBii0zR+Mu5W73pa/5V+F3uy81d7uvDNzt9gHvdl8Ci/4rUnLRXR8Z89e47qn93nik/n3iN42C4BpEosE34GkB3bRkjr8hTEm2x61qBx33t45Mh8ga/47cJ0KRHZ7MyXeEPvENUMPvHdgv3xP2yw/gCV3NKj8EfGVpga6n74D19CNJ1x/j+S9I2AvU4SeYDil5Jsn1J3D+1PFzPNHhnwnk+ovl5Crj/sVxct0LK7bsJI27FHL91df8t3By/VVDrr8ZIFdE11Lk+iuw6H8jJRfd9ZEx/275RPqj3zTQbyr5EaghtPGWszsfsl6kj+jpFhg35a0Xqg7Rkyyydk4gaxiK7PhjL0sf0RoGaydSDQuCNVQH+h6A7F8nWt5zZE5OJPScQsBcB2eoQuV4RK20QO8hZD2dRNL1pHJ8okZ++/5kmA7pSSaJ+mRw/tRRuBzR4cLl8NctAryxsOIuUu6QwKDrGiXqPTAAycjTuEsh6qK+5qeUK3A4PRct93eilv8Sm6j3AIm6KLDoTynHSS666yNjPtXyaeokv2mgifokoIbIxlvM8nzIeilGmG6LgUkG7Z+qQ/Qki6yd4pYTtdSwOEHDYkANT3OEqJH963TLe47MyemEnlOCRH4liESttEDvIWQ9lSTpWtIAUe8GEnUMTIc8oy/xjwHnTx2lyhEdLkUg6tKWE7WMu7TjRL0bRtRevsZdClGX8TWPDSfqMhqijjVA1LuBRF0GWPSx5TjJRXd9ZMxlLZ+mSvpNA03UJYEaIhtvnOX5kPUSR5hugXFTiFrVIXqSRdZOvOVELTWMJ2gYB9SwnCNEjexf5S3vOTIn5Qk9J4FEfglEolZaoPcQsp4qkHStYICodwGJOhGmQ7JRok4E508dFcsRHa5IIOpKlhO1jLuS40S9C0bUOcaIurKv+RnhRF1ZQ9RnGCDqXUCirgws+jPKcZKL7vrImM+0fJqq4DcNNFFXAGqIbLxnWZ4PWS9nEaZbYNwUolZ1iJ5kkbVTxXKilhpWIWh4FlDDsx0hamT/qmp5z5E5qUroOdVI5FeNSNRKC/QeQtZTdZKu1Q0QNfL99+fAdMgy+r7Lc8D5U0eNckSHaxCIuqblRC3jruk4Ue/EvSbP2Psua/manxtO1LU0RH2uAaLeCSTqWsCiP7ccJ7noro+M+TzLp6nqftNAE3V1oIbIxhuyPB+yXkKE6RYYN4WoVR2iJ1lk7XiWE7XU0CNoGAJqmOQIUSP7V7LlPUfmJJnQc1JI5JdCJGqlBXoPIesplaRrqgGi3gEk6jSYDkmZJok6DZw/daSXIzqcTiDqDMuJWsad4ThR78D9yEC6xl0KUWf6mp8fTtSZGqI+3wBR7wASdSaw6M8vx0kuuusjY77A8mkq1W8aaKJOBWqIbLy1Lc+HrJfahOkWGDeFqFUdoidZZO3UsZyopYZ1CBrWBmp4oSNEjexfF1nec2ROLiL0nLok8qtLJGqlBXoPIeupHknXegaIejuQqOvDdMjOMEnU9cH5U0eDckSHGxCIuqHlRC3jbug4UW/HvRA/Q+Muhagb+Zo3DifqRhqibmyAqLcDiboRsOgbl+MkF931kTFfbPk0Vc9vGmiirgfUENl4m1ieD1kvTQjTLTBuClGrOkRPssjaaWo5UUsNmxI0bALU8BJHiBrZvy61vOfInFxK6DnNSOTXjEjUSgv0HkLWU3OSrs0NEPU2IFFfBtMh1ei3vi8D508dl5cjOnw5gahbWE7UMu4WjhP1NtwPLBn71vcVvuYtw4n6Cg1RtzRA1NuARH0FsOhbluMkF931kTFfafk01dxvGmiibg7UENl4r7I8H7JeriJMt8C4KUSt6hA9ySJrp5XlRC01bEXQ8Cqghlc7QtTI/tXa8p4jc9Ka0HPakMivDZGolRboPYSsp2tIul5jgKi3Aon6WtwTmlSTRH0tOH/qaFuO6HBbAlFfZzlRy7ivc5yot+KIOlvjLoWor/c1vyGcqK/XEPUNBoh6K5CorwcW/Q3lOMlFd31kzDdaPk1d4zcNNFFfA9QQ2Xhvsjwfsl5uIky3wLgpRK3qED3JImsny3KilhpmETS8CahhtiNEjexfOZb3HJmTHELPySWRXy6RqJUW6D2ErKc8kq55Boh6C5Co83HzZJpJos4H508dN5cjOnwzgahvsZyoZdy3OE7UW3Df+s7SuEsh6lt9zW8LJ+pbNUR9mwGi3gIk6luBRX9bOU5y0V0fGfPtlk9TeX7TQBN1HlBDZOO9w/J8yHq5gzDdAuOmELWqQ/Qki6yddpYTtdSwHUHDO4Aa3ukIUSP7112W9xyZk7sIPeduEvndTSRqpQV6DyHrqT1J1/YGiHozkKjvgemQYfTXs+4B508d95YjOnwvgag7WE7UMu4OjhP1ZhhRpxv79ayOvub3hRN1Rw1R32eAqDcDibojsOjvK8dJLrrrI2O+3/Jpqr3fNNBE3R6oIbLxdrI8H7JeOhGmW2DcFKJWdYieZJG109lyopYadiZo2Amo4QOOEDWyfz1oec+ROXmQ0HO6kMivC5GolRboPYSsp64kXbsaIOpNQKJ+yFGifgicP3U8XI7o8MMEou5mOVHLuLs5TtSbHCTq7r7mj4QTdXcNUT9igKg3AYm6O7DoH3GEqJExP2r5NNXVbxpoou4K1BDZeHtYng9ZLz0I0y0wbgpRqzpET7LI2ulpOVFLDXsSNOwB1PAxR4ga2b8et7znyJw8Tug5vUjk14tI1EoL9B5C1lNvkq69DRD1R0CifgKmQ6rRd30/Ac6fOp4sR3T4SQJR97GcqGXcfRwn6o9gRJ1l7F3ffX3N+4UTdV8NUfczQNQfAYm6L7Do+5XjJBfd9ZExP2X5NNXbbxpoou4N1BDZePtbng9ZL/0J0y0wbgpRqzpET7LI2hlgOVFLDQcQNOwP1PBpR4ga2b8GWt5zZE4GEnrOMyTye4ZI1EoL9B5C1tMgkq6DDBD1RiBRP4sj6lyTRP0sOH/qeK4c0eHnCEQ92HKilnEPdpyoN+KIOlnjLoWon/c1fyGcqJ/XEPULBoh6I5ConwcW/QvlOMlFd31kzC9aPk0N8psGmqgHATVENt4hludD1ssQwnQLjJtC1KoO0ZMssnaGWk7UUsOhBA2HADV8yRGiRvavly3vOTInLxN6zjAS+Q0jErXSAr2HkPU0nKTrcANEvQFI1K/AdEgy+oz6FXD+1PFqOaLDrxKIeoTlRC3jHuE4UW+AEXWusWfUr/mavx5O1K9piPp1A0S9AUjUrwGL/vVynOSiuz4y5jcsn6aG+00DTdTDgRoiG+9Iy/Mh62UkYboFxk0halWH6EkWWTtvWk7UUsM3CRqOBGr4liNEjexfb1vec2RO3ib0nFEk8htFJGqlBXoPIevpHZKu7xgg6vVAon4XpkNyskmifhecP3WMLkd0eDSBqMdYTtQy7jGOE/V6GFHn5GrcpRD1WF/zceFEPVZD1OMMEPV6IFGPBRb9uHKc5KK7PjLm8ZZPU+/4TQNN1O8ANUQ23gmW50PWywTCdAuMm0LUqg7RkyyydiZaTtRSw4kEDScANXzPEaJG9q9JlvccmZNJhJ4zmUR+k4lErbRA7yFkPU0h6TrFAFGvAxL1VJgOeUafUU8F508d08oRHZ5GIOrplhO1jHu640S9DkbUnrFn1DN8zWeGE/UMDVHPNEDU64BEPQNY9DPLcZKL7vrImN+3fJqa4jcNNFFPAWqIbLyzLM+HrJdZhOkWGDeFqFUdoidZZO3MtpyopYazCRrOAmr4gSNEjexfcyzvOTIncwg9Zy6J/OYSiVppgd5DyHqaR9J1ngGiXgsk6vkwHVKMEvV8cP7UsaAc0eEFBKJeaDlRy7gXOk7Ua2FEnW2MqBf5mi8OJ+pFGqJebICo1wKJehGw6BeX4yQX3fWRMX9o+TQ1z28aaKKeB9QQ2XiXWJ4PWS9LCNMtMG4KUas6RE+yyNpZajlRSw2XEjRcAtRwmSNEjexfyy3vOTInywk9ZwWJ/FYQiVppgd5DyHpaSdJ1pQGiXgMk6lUwHdIzTRL1KnD+1LG6HNHh1QSiXmM5Ucu41zhO1GtgRJ2RrnGXQtRrfc3XhRP1Wg1RrzNA1GuARL0WWPTrynGSC/8cFRjzesunqZV+00AT9UqghsjGu8HyfMh62UCYboFxU4ha1SF6kkXWzkbLiVpquJGg4Qaghh85QtTI/rXJ8p4jc7KJ0HM2k8hvM5GolRboPYSspy0kXbcYIOrVQKLeintCY5Sot4Lzp45t5YgObyMQ9XbLiVrGvd1xol4NI+oUY0S9w9d8ZzhR79AQ9U4DRL0aSNQ7gEW/sxwnueiuj4x5l+XT1Ba/aaCJegtQQ2Tj3W15PmS97CZMt8C4KUSt6hA9ySJrZ4/lRC013EPQcDdQw72OEDWyf+2zvOfInOwj9Jz9JPLbTyRqpQV6DyHr6QBJ1wMGiHoVkKg/xj2jDpkk6o/B+VPHJ+WIDn9CIOqDlhO1jPug40S9CkbUmSGNuxSi/tTX/LNwov5UQ9SfGSDqVUCi/hRY9J+V4yQX3fWRMX9u+TR1wG8aaKI+ANQQ2Xi/sDwfsl6+IEy3wLgpRK3qED3JImvnS8uJWmr4JUHDL4AafuUIUSP719eW9xyZk68JPecbEvl9QyRqpQV6DyHr6VuSrt8aIOqVQKL+DjdPeiaJ+jtw/tTxfTmiw98TiPoHy4laxv2D40S9EkbUafkadylE/aOv+U/hRP2jhqh/MkDUK4FE/SOw6H8qx0kuuusjY/7Z8mnqW79poIn6W6CGyMb7i+X5kPXyC2G6BcZNIWpVh+hJFlk7v1pO1FLDXwka/gLU8DdHiBrZv363vOfInPxO6DkFynPIT16XRdRKC/QeQtbTCSRdTyjPJ+oVQKIuCNMhxeivZxUE508dJ5YnOnxiefx1C5W3m6hl3IXKHxIYdF2jRL0C92YyY7+edZKv+cnlCxxOzyeV/ztRy3+JTdQrgER9ErDoTy7PSS666yNjLlze7mnqBL9poIn6BKCGyMZbxPJ8yHopUh4/3QLjphC1qkP0JIusnaJkDUORHX/s5aIEDYsANTwFrKE60PcAZP861fKeI3NyKqHnFCORXzEiUSst0HsIWU/FSboWN0DUy4FEfRpMhzyjz6hPA+dPHaeXJzp8OoGoS1hO1DLuEo4T9XLcr2cZe0Zd0tc8JpyoS2qIOsYAUS8HEnVJYNHHlOckF931kTGXsnyaKu43DTRRFwdqiGy8pS3Ph6yX0oTpFhg3hahVHaInWWTtlLGcqKWGZQgalgZqGOsIUSP7V1nLe47MSVlCz4kjkV8ckaiVFug9hKyneJKu8QaIehmQqMvBdMhPNUnU5cD5U0f58kSHyxOIOsFyopZxJzhO1MtgRB3K1rhLIeoKvuaJ4URdQUPUiQaIehmQqCsAiz6xPCe56K6PjLmi5dNUvN800EQdD9QQ2XgrWZ4PWS+VCNMtMG4KUas6RE+yyNqpbDlRSw0rEzSsBNTwDEeIGtm/zrS858icnEnoOWeRyO8sIlErLdB7CFlPVUi6VjFA1EuBRH02TIdMo9/6PhucP3VULU90uCqBqKtZTtQy7mqOE/VS3N9RG/vWd3Vf83PCibq6hqjPMUDUS4FEXR1Y9OeU5yQX3fWRMdewfJqq4jcNNFFXAWqIbLw1Lc+HrJeahOkWGDeFqFUdoidZZO3UspyopYa1CBrWBGp4riNEjexf51nec2ROziP0nBCJ/EJEolZaoPcQsp48kq6eAaJeAiTqJNwzaqPv+k4C508dyeWJDicTiDrFcqKWcac4TtRLcN/6Nvau71Rf87Rwok7VEHWaAaJeAiTqVGDRp5XnJBfd9ZExp1s+TXl+00ATtQfUENl4MyzPh6yXDMJ0C4ybQtSqDtGTLLJ2Mi0naqlhJkHDDKCG5ztC1Mj+dYHlPUfm5AJCz6lNIr/aRKJWWqD3ELKe6pB0rePrapIuP4zHxqKOC8sTHb6QQJcXWU6XMu6LCHSp8xWxQS4ibGLgxqPn21YNkXHXdWSYqAOMuZ7lw8QfsRKGifqWD98yL/XJPSdSDRuQBocG/8HgsJg0ODQsT3S4IWFwaGT54CDjbuTI4CALuRFhEwM3Hj3ftmqIjLuxI4NDA2DMF1s+OMhYGxMGhyaWDw4yL03IPSdSDZuSBoemBp7hLwI+w78EuIdMDkuXlOcMS5eWJzp8KWFYamb5sCTjbmZoWApFdnhNfV/Rjw6bAnOEzHdzy2+gstE1J9xAL7P8BipjvowQ9+Wkm97lmq+AoDVh5wyxx5sRhh7kfm9hed1LDVsQNGwO1PAKR0ALec9pafl9QuakJaFfXknql1cSH/cqLdB7CFlPV5H2EFrLq8CztTrQe/3+grhrtQrE7GUkJyWlJ8t/LyM35KXk5iRlJCXlZqeEckJZOUl5mSleZn5KUkpyTm5Otrhmlpcfys/KyczP+PNaJoGwFQkIry5PdPhqAhC2thwIZdytCUAoi+3kAma+1B3ccKEID427sA0YLOQ2wU+m0HfK1sAJIXinbPMvd8oj+JxzBHH+2ChtjuNOeSTR2wA34DWkCURet9tx1oIntMvxQvmhzKRQVig9Jy09OzM3KTsjKz85PzU5N/l4dT1SsSN1vZak67XHr+v/i3ptS9K17f94vV5H0vU6X1d58yxYwMykhrx5Bm/21/tDxQ3ynsG4wbUhTGttLP9Y63g3R+gY4o7Uxxst/1hLFuaNhI8nbiI1hZv+pdmGIju8G0haZJG0yCJqIRshQ4u5Ve3uKaz9MO+/jTvnCP7Ran8+OG51oP+KF1iXHjDXHlI/OUgVLqD/FKLAMep5pHoKXpNxz0JpEhwqs//tU4hQZId3I+kmkH38n9d7R/rvSJ+zCU1hMakpFDrGnB3L8BZpzDnl7WwwyFwE6zInMJwcb36OpDkyP7nBZwvJyWJv5KZ7+bn5yanpmUnZXlpyWlp+Sn56WkZKbn5qSlZuep6XkpWclJmXHsr3MvLy0lOTc9LT8jNzc9Lyg03by01OTsnNzM7xUpPSsrJDGbnJWaH8lPRkAfy5yem5uckZaWlZycm5aRn5GZkC0gX6Z4RS09MzQ2lJyZlJrPzkBugadVM40qc5wWu6clPIc/GmkEe+KeQRbgpLLLkp/GMRp//xkpZ8ZNPJt/SmsITUdPIBN4UjfbSJzM/Nlt4UWPm5+f/RR663+B+53qr7yDUU2fGPzzuQzyojvRbw41vKN6OUhuhvNLM0jPRat1meD7lhbiPc2G8nDTm3Ez/+vJWkxR0kLe4gfxTM0GKZ5R8Fs/bDcss/CmbV/gpHPgoG1qUHzLW3IvpRcPjxxz0LpUlw2G3HpP7bSDeBdkTqlz63IzSFNY58FHwbcBC8s7ydDWYNiSrvNPBRMDI/dwGpfwWQ+ln5uUuTn2P9Ts2RPvpF5uduUv+8G6DDkT6dQurQnqRDe8fq4R6SDvc4Vg/3knS49ygeFdk82GnchdVxcGjs4OLQ2IE8NHYgDI3rDA2NEX4rHtrkOgKvhRwa15GGko5HMTRG+u16ZH7uK48b9JBDIys/9wFujkc4vP3AlwndD+ufGZQvYrf2P3VDP1FC1ngny59gyBx3ItxvOpPuvfK6Rfz/fXGBvx+o/6a6Hlrv9kXt9/EB9CDpStFusPzxioz5AULcGy35RPEIx2GFGWnMDwIbM7BuPGQuyE3yr8cU/4tN8sH/1SbZxfI/z5MxdyHE3ZU00XQtf+hta4w/99RNyKHIDg85IT9keT1JonqIUE8PO7CPHibE3Y20j7r9yz4KRXbQesrmqv+bNbDF0PdaIvWzO3BIBOba20L6hKp7lK7pPj7CHhwRlPkIYdNvd4QyH3Fg00eaix2ONOBHgbkA1p+3I0rpTjTbR5HN1tW7YhcHEtUjmqiQ95ADieoZTVTI6+ZAoh6LJkrMcg4k6vFookT/dyBRvaKJEm3FgUT1jiZKVKsDiXoimighggOJejKaqJDXx4FE9YkmKuT1cyBRfaOJCnn9HUhUv2iiQt7TDiTqqWiiQt6tBR3Y9dFEhbxBDuyoAdFEhbxcB3bU09FEhbzBDuyogdFEhbwXHEjUM9FEhbwhDiRqUDRRIe8lBxL1bDRRIW+YA4l6LpqokPeKA4kaHE1UyBvhQKKejyYq5L3uQKJeiCYq5I10IFEvRhMV8t5yIFFDookKeaMcSNTQaKJCXisHPut7KZqokDfagR31cjRRIW+sA4kaFk1UyBvvQKKGRxMV8iY6kKhXWK+iRP9N4qswR5PTmX6OOH4/U8MXpG+xBQ793aT831KH3/zzymUOnVcKnI/w/x31//ea+N+vC3tD2Mjyh9bVgf6RgXcL4671GvAFFm+Sih2t32igfq8D9XsL/EKI8Np+M1DbbwXO3wicjwyr7bfF/x4l7B1h7/q1XbDA4Qe6ab4N1KGSf53R4ppjhI0VNk7YeGEThE0U9p6wScImC5sibKqwacKmC5shbKaw94XNEjZb2AfC5gibK2yesPnCFghbKGyRsMXCPhS2RNhSYcvK/ylS8AUDo/0XDATXxmjWxmrWxmnWxmvWJmjWJmrW3tOsTdKsTdasTdGsTdWsTdOsTdeszdCszdSsva9Zm6VZm61Z+0CzNkezNlezNk+zNl+ztkCztlCztkiztliz9qFmbYlmbalmbVn5Qy+EUQf6XQFvA/vgaMC18v74vc2QNwbo1247Xh39rzHLXIyF6PdnXsdFfq0k9WM+44G52GNzLlIO/YDRhMhiDgV/DGliJNdKOvyHld4D5mKvnbkIhf+Y1KTjjDkt/+8/TDX5+K6VofuRqynAXOyzLRcZ+h/2mnrsMaf/04+ETTvWa6X/8w+OTQfmYr89uUj6tx9Zm3EsMaf/+w+2zTz6ax3xxwTfB+bigA25SD+in96so4s5dBQxe7OP5lqho9LP+wCYi4//21ykHqWf3pwjxZxy1DF7c//1Win5x6CfNw+Yi0/+q1ykH5Of3vx/jjnjGGP2FvzDtTLzj1k/byEwFwfN5yJ0HH56i3Qxh44rZm/x36/lHad+3ofAXHxqMhe5x+2nt+TwmJMjiNlbGrhWUn5E+nnLgLn4zJH3JQI/H/CAfOvtBb4v8XNHcgHkIA84x3sHgLn4wpFcAOc9DziveAeBufjSkVwA72sesC97nwNz8ZUjPxYP3L8esP48ln4Fw/SLNM/IGWM57vsPIflbp8ULHHouGjzQz0pxfh/+e6QryhMdlhdHX3clsBhYca8sf0hg0HX/KLbTCpj5Yd1lsGLLDWncxVzbC4WCWqzyNV/tP4T/66noKr8Ig2urNU9K0V0f0bXU081VwKJfDU4uY4OvKo//Rtmq8m7c7ZYCc70GFnNaism73RrS3W5teaLDawl3u3WW3+1k3Oscv9sthRVbZo7GXcrdbr2v+Ybwu916zd1ug4G73VLg3W49sOg3kJKL7vrImDfiuqf2J5gj9W+l3zQKgmsQiQYfgacFdNOSOf6IMCXZHreqHXTcmxyZDpE1vpncJ0KRHZ7MyWZCn/gIqOEWB/bLFsJ+2Qqe0NWssjXgK0sLdD1tBtbTNpKu28r/ndzQvWkJUIftMB1S8kyS63Zw/tSxozzR4R0Ect1pObnKuHc6Tq5LYMWWnaRxl0Kuu3zNd4eT6y4Nue42QK6IrqXIdRfyr1BIyUV3fWTMeyyfSLf5TQP9q5/bgBoiG+9ey/Mh62UvYboFxq29eSHqZSdhkkXWzj7LyUhquI+g4V7kX5Y48qkEsn8dsLznyJwcIPScj0nk9zGRqJUW6D2ErKdPSLp+YoCokd90PwjTIT3JJFEfBOdPHZ+WJzr8KYGoP7OcqGXcnzlO1B/Cii0jT+Muhag/9zX/IpyoP9cQ9RcGiBrRtRRRfw4s+i9IyUV3fWTMX1o+TX3iNw00UX8C1BDZeL+yPB+yXr4iTLfAuClEreoQPckia+dry4laavg1QcOvgBp+4whRI/vXt5b3HJmTbwk95zsS+X1HJGqlBXoPIevpe5Ku3xsg6sVAHX6A6ZDnmSTqH8D5U8eP5YkO/0gg6p8sJ2oZ90+OE/ViWLF5+Rp3KUT9s6/5L+FE/bOGqH8xQNSIrqWI+mdg0f9CSi666yNj/tXyaep7v2mgifp7oIbIxvub5fmQ9fIbYboFxk0halWH6EkWWTu/W07UUsPfCRr+hhx8EtwgamT/OiHB7p4jcyJ9RO/pgsBcB2eoggk8olZaoPcQsp5OJOl6YgKfqBcBdSgE0yHZKFEXAudPHSclEB0+KQF/3ZMT7CZqGffJCYcEBl3XKFEvgg0tOcaIurCveZGEAofTc+GEvxO1/JfYRL0ISNSFgUVfJIGTXHTXR8Zc1PJp6kS/aaCJ+kSghsjGe4rl+ZD1cgphuj0FTDJo/1QdoidZZO2cStYwFNnxx14+laDhKUANizlC1Mj+VdzyniNzUpzQc04jkd9pRKJWWqD3ELKeTifperoBoka+a74ETIcso++7LAHOnzpKJhAdLkkg6hjLiVrGHeM4US+EEXWasfddlvI1Lx1O1KU0RF3aAFEvBBJ1KWDRl07gJBfd9ZExl7F8mjrdbxpooj4dqCGy8cZang9ZL7GE6RYYN4WoVR2iJ1lk7ZS1nKilhmUJGsYCNYxzhKiR/Sve8p4jcxJP6DnlSORXjkjUSgv0HkLWU3mSruUNEPUCIFEnwHRIyjRJ1Ang/KmjQgLR4QoEok60nKhl3ImOE/UCGFHnpmvcpRB1RV/zSuFEXVFD1JUMEPUCIFFXBBZ9pQROctFdHxlzZcunqfJ+00ATdXmghsjGe4bl+ZD1cgZhugXGTSFqVYfoSRZZO2daTtRSwzMJGp4B1PAsR4ga2b+qWN5zZE6qEHrO2STyO5tI1EoL9B5C1lNVkq5VDRD1fCBRV4PpkJ1hkqirgfOnjuoJRIerE4j6HMuJWsZ9juNEPR9G1CkZGncpRF3D17xmOFHX0BB1TQNEPR9I1DWARV8zgZNcdNdHxlzL8mmqqt800ERdFaghsvGea3k+ZL2cS5hugXFTiFrVIXqSRdbOeZYTtdTwPIKG5wI1DDlC1Mj+5Vnec2ROPELPSSKRXxKRqJUW6D2ErKdkkq7JBoh6HpCoU2A6pBr91ncKOH/qSE0gOpxKIOo0y4laxp3mOFHPw/3AkrFvfaf7mmeEE3W6hqgzDBD1PCBRpwOLPiOBk1x010fGnGn5NJXsNw00UScDNUQ23vMtz4esl/MJ0y0wbgpRqzpET7LI2rnAcqKWGl5A0PB8oIa1HSFqZP+qY3nPkTmpQ+g5F5LI70IiUSst0HsIWU8XkXS9yABRzwUSdV3cE5pUk0RdF5w/ddRLIDpcj0DU9S0nahl3fceJei6OqLM17lKIuoGvecNwom6gIeqGBoh6LpCoGwCLvmECJ7noro+MuZHl09RFftNAE/VFQA2Rjbex5fmQ9dKYMN0C46YQtapD9CSLrJ2LLSdqqeHFBA0bAzVs4ghRI/tXU8t7jsxJU0LPuYREfpcQiVppgd5DyHq6lKTrpQaIeg6QqJvh5sk0k0TdDJw/dTRPIDrcnEDUl1lO1DLuyxwn6jm4b31nadylEPXlvuYtwon6cg1RtzBA1HOARH05sOhbJHCSi+76yJivsHyautRvGmiivhSoIbLxtrQ8H7JeWhKmW2DcFKJWdYieZJG1c6XlRC01vJKgYUughlc5QtTI/tXK8p4jc9KK0HOuJpHf1USiVlqg9xCynlqTdG1tgKg/ABJ1G5gOGUZ/PasNOH/quCaB6PA1BKK+1nKilnFf6zhRfwAj6nRjv57V1tf8unCibqsh6usMEPUHQKJuCyz66xI4yUV3fWTM11s+TbX2mwaaqFsDNUQ23hssz4eslxsI0y0wbgpRqzpET7LI2rnRcqKWGt5I0PAGoIY3OULUyP6VZXnPkTnJIvScbBL5ZROJWmmB3kPIesoh6ZpjgKhnA4k611GizgXnTx15CUSH8whEnW85Ucu48x0n6tkOEvXNvua3hBP1zRqivsUAUc8GEvXNwKK/xRGiRsZ8q+XTVI7fNNBEnQPUENl4b7M8H7JebiNMt8C4KUSt6hA9ySJr53bLiVpqeDtBw9uAGt7hCFEj+1c7y3uOzEk7Qs+5k0R+dxKJWmmB3kPIerqLpOtdBoh6FpCo74bpkGr0Xd93g/OnjvYJRIfbE4j6HsuJWsZ9j+NEPQtG1FnG3vV9r695h3CivldD1B0MEPUsIFHfCyz6Dgmc5KK7PjLmjpZPU3f5TQNN1HcBNUQ23vssz4esl/sI0y0wbgpRqzpET7LI2rnfcqKWGt5P0PA+oIadHCFqZP/qbHnPkTnpTOg5D5DI7wEiUSst0HsIWU8PknR90ABRvw8k6i44os41SdRdwPlTR9cEosNdCUT9kOVELeN+yHGifh9H1MkadylE/bCvebdwon5YQ9TdDBD1+0CifhhY9N0SOMlFd31kzN0tn6Ye9JsGmqgfBGqIbLyPWJ4PWS+PEKZbYNwUolZ1iJ5kkbXzqOVELTV8lKDhI0ANezhC1Mj+1dPyniNz0pPQcx4jkd9jRKJWWqD3ELKeHifp+rgBop4JJOpeMB2SjD6j7gXOnzp6JxAd7k0g6icsJ2oZ9xOOE/VMGFHnGntG/aSveZ9won5SQ9R9DBD1TCBRPwks+j4JnOSiuz4y5r6WT1OP+00DTdSPAzVENt5+ludD1ks/wnQLjJtC1KoO0ZMssnaespyopYZPETTsB9SwvyNEjexfAyzvOTInAwg952kS+T1NJGqlBXoPIetpIEnXgQaIegaQqJ+B6ZCcbJKonwHnTx2DEogODyIQ9bOWE7WM+1nHiXoGjKhzcjXuUoj6OV/zweFE/ZyGqAcbIOoZQKJ+Dlj0gxM4yUV3fWTMz1s+TQ30mwaaqAcCNUQ23hcsz4eslxcI0y0wbgpRqzpET7LI2nnRcqKWGr5I0PAFoIZDHCFqZP8aannPkTkZSug5L5HI7yUiUSst0HsIWU8vk3R92QBRTwcS9TCYDnlGn1EPA+dPHcMTiA4PJxD1K5YTtYz7FceJejqMqD1jz6hf9TUfEU7Ur2qIeoQBop4OJOpXgUU/IoGTXHTXR8b8muXT1Mt+00AT9ctADZGN93XL8yHr5XXCdAuMm0LUqg7Rkyyydt6wnKilhm8QNHwdqOFIR4ga2b/etLznyJy8Seg5b5HI7y0iUSst0HsIWU9vk3R92wBRTwMS9SiYDilGiXoUOH/qeCeB6PA7BKJ+13KilnG/6zhRT4MRdbYxoh7taz4mnKhHa4h6jAGingYk6tHAoh+TwEkuuusjYx5r+TT1tt800ET9NlBDZOMdZ3k+ZL2MI0y3wLgpRK3qED3JImtnvOVELTUcT9BwHFDDCY4QNbJ/TbS858icTCT0nPdI5PcekaiVFug9hKynSSRdJxkg6qlAop4M0yE90yRRTwbnTx1TEogOTyEQ9VTLiVrGPdVxop4KI+qMdI27FKKe5ms+PZyop2mIeroBop4KJOppwKKfnsBJLvxzVGDMMyyfpib5TQNN1JOAGiIb70zL8yHrZSZhugXGTSFqVYfoSRZZO+9bTtRSw/cJGs4EajjLEaJG9q/ZlvccmZPZhJ7zAYn8PiAStdICvYeQ9TSHpOscA0Q9BUjUc3FPaIwS9Vxw/tQxL4Ho8DwCUc+3nKhl3PMdJ+opMKJOMUbUC3zNF4YT9QINUS80QNRTgES9AFj0CxM4yUV3fWTMiyyfpub4TQNN1HOAGiIb72LL8yHrZTFhugXGTSFqVYfoSRZZOx9aTtRSww8JGi4GarjEEaJG9q+llvccmZOlhJ6zjER+y4hErbRA7yFkPS0n6brcAFFPBhL1Ctwz6pBJol4Bzp86ViYQHV5JIOpVlhO1jHuV40Q9GUbUmSGNuxSiXu1rviacqFdriHqNAaKeDCTq1cCiX5PASS666yNjXmv5NLXcbxpool4O1BDZeNdZng9ZL+sI0y0wbgpRqzpET7LI2llvOVFLDdcTNFwH1HCDI0SN7F8bLe85MicbCT3nIxL5fUQkaqUFeg8h62kTSddNBoh6EpCoN+PmSc8kUW8G508dWxKIDm8hEPVWy4laxr3VcaKeBCPqtHyNuxSi3uZrvj2cqLdpiHq7AaKeBCTqbcCi357ASS666yNj3mH5NLXJbxpoot4E1BDZeHdang9ZLzsJ0y0wbgpRqzpET7LI2tllOVFLDXcRNNwJ1HC3I0SN7F97LO85Mid7CD1nL4n89hKJWmmB3kPIetpH0nWfAaJ+D0jU+3HfeTT661n7wflTx4EEosMHCET9seVELeP+2HGifg/3ZjJjv571ia/5wXCi/kRD1AcNEPV7QKL+BFj0BxM4yUV3fWTMn1o+Te3zmwaaqPcBNUQ23s8sz4esl88I0y0wbgpRqzpET7LI2vnccqKWGn5O0PAzoIZfOELUyP71peU9R+bkS0LP+YpEfl8RiVppgd5DyHr6mqTr1waIeiKQqL+B6ZBn9Bn1N+D8qePbBKLD3xKI+jvLiVrG/Z3jRD0R9+tZxp5Rf+9r/kM4UX+vIeofDBD1RCBRfw8s+h8SOMlFd31kzD9aPk197TcNNFF/DdQQ2Xh/sjwfsl5+Iky3wLgpRK3qED3JImvnZ8uJWmr4M0HDn4Aa/uIIUSP716+W9xyZk18JPec3Evn9RiRqpQV6DyHr6XeSrr8bIOoJQKIuUAGlQ36qSaLG+X04UZ9QgeiwvDj6ugUr2E3UMu6CFQ4JDLquUaKeACPqULbGXQpRn+hrXqhCgcPp+cQKfydq+S+xiXoCkKhPBBZ9oQqc5KK7PjLmkyoAN3gB/IaTd1HZNNBE/TtwgkA23pMtz4esl5Mr4KdbYNwUolZ1iJ5kkbVTmKxhKLLjj71cmKDhyUANi4A1VAf6HoDsX0Ut7zkyJ0UJPecUMDmoGeqUCjyiVlqg9xCynk4l6XpqBT5RjwcSdTGYDplGv/VdDJw/dRSvQHS4OIGoT7OcqGXcpzlO1ONxf0dt7Fvfp/ualwgn6tM1RF3CAFGPBxL16cCiL1GBk1x010fGXNLyaepUv2mgifpUoIbIxhtjeT5kvcQQptsYMMmg/VN1iJ5kkbVTynKilhqWImgYA9SwtCNEjexfZSzvOTInZQg9J5ZEfrFEolZaoPcQsp7KknQta4CoxwGJOg73jNrou77jwPlTR3wFosPxBKIuZzlRy7jLOU7U43Df+jb2ru/yvuYJ4URdXkPUCQaIehyQqMsDiz6hAie56K6PjLmC5dNUWb9poIm6LFBDZONNtDwfsl4SCdMtMG4KUas6RE+yyNqpaDlRSw0rEjRMBGpYyRGiRvavypb3HJmTyoSecwaJ/M4gErXSAr2HkPV0JknXM31dTdLl2PLYWNRxVgWiw2cR6LKK5XQp465CoEudr4gNUoWwiYEbj55vWzVExn22I8PEmcCYq1o+TMhYzyYME9UsH75lXqqRe06kGlYnDQ7V/4PBYQxpcDinAtHhcwiDQw3LBwcZdw1HBgdZyDUImxi48ej5tlVDZNw1HRkcqgNjrmX54CBjrUkYHM61fHCQeTmX3HMi1fA80uBwnoFn+KOBz/BDwD1kclgKVeAMS14FosMeYVhKsnxYknEnGRqWQpEd3nm+r+hHh+cBc4TMd7LlN1DZ6JIJN9AUy2+gMuYUQtyppJtequYrIGhN2DlD7PEkwtCD3O9plte91DCNoGEyUMN0R0ALec/JsPw+IXOSQeiXmaR+mUl83Ku0QO8hZD2dT9pDaC3PB8/W6kB/PbIL7pNj72EgXF5AgLRugVw3LPPn3CHPGwTO6wfO6wXO6wbOLwqcXxg4rxM4rx04vyBwfn7gPDNwnhE4Tw+cpwXOUwPnKYHz5MB5UuDcC5yHAufnBc7PDZzXCpzXDJzXCJyfEzivHjivFjivGjg/O3BeJXC+IvbQ+fLA+bLA+dLA+ZLA+YeB88WB80WB84WB8wWB8/mB83mB87mB8zmB8w8C57MD57MC5+8HzmcGzmcEzqcHzqcFzqcGzqcEzicHzicFzt8LnE8MnE8InI8PnI8LnI8NnF8Xd+i8beD82sD5NYHzNoHz1oHzqwPnrQLnVwXOrwyctwycXxE4bxE4vzxwflngvHngvFng/NLA+SWB86aB8yaB84sD540D540C5w0D5w0C5/UD5/UC53UD5xcFzi8MnNcJnF9Q4dB5j/KHznsGzh8LnD8eOO8VOO8dOH8icP5k4LxP4Lxv4Lxf4PypwHn/wPmAwPnTgfOBgfNnAueDAufPBs6fC5wPDpw/Hzh/IXD+YuB8SOB8aOD8pcD5y4HzYYHz4YHzVwLnMwPnMwLn0wPn0wLnUwPnUwLnkwPnkwLn7wXOJwbOJwTOxwfOxwXOxwbOxwTORwfOlwXOlwbOlwTOPwycLw6cLwqcLwycLwiczw+czwuczw2czwmcfxA4nx04nxU4f98/71/gz6O22AN1hF0o7CJ5vxdWT1h9YQ2ENRTWSFhjYRcLayKsqbBLhF0qrJmw5sIuE3a5sBbCrhDWUtiVwq4S1krY1cJaC2sj7Bph1wprK+w6YdcLu0HYjcJuEpYlLFtYjrBcYXnC8oXdLOwWYbcKu03Y7cLuENZO2J3C7hJ2t7D2wu4Rdq+wDsI6CrtP2P3COgnrLOwBYQ8K6yKsq7CHhD0srJuw7sIeEfaosB7Cegp7TNjjwnoJ6y3sCWFPCusjrK+wfsKeEtZf2ABhTwsbKOwZYYOEPSvsOWGDhT0v7AVhLwobImyosJeEvSxsmLDhwl4R9qqwEcJeE/a6sDeEjRT2prC3hL0tbJSwd4S9K2y0sDHCxgobJ2y8sAnCJgp7T9gkYZOFTRE2Vdg0YdOFzRA2U9j7wmYJmy3sA2FzhM0VNk/YfGELhC0UtkjYYmEfVihw2HGC/8+6/j9DkR3euMK4+bNgAa6v7wJ9reRfZ4nQd6mwZcKWC1shbKWwVcJWC1sjbK2wdcLWC9sgbKOwj4RtErZZ2BZhW4VtE7Zd2A5hO4XtErZb2B5he4XtE7Zf2AFhHwv7pMKfIkmdFPdKf1QfUWtLNWvLNGvLNWsrNGsrNWurNGurNWtrNGtrNWvrNGvrNWsbNGsbNWsfadY2adY2a9a2aNa2ata2ada2a9Z2aNZ2atZ2adZ2a9b2aNb2atb2adb2a9YOaNY+1qx94q8Fj0L+P+v6/wxFdhy2ZyNlZbk3Ir2W+hPHpRVwfhWsxvmsJjwXkcQsc7EMot+feV0e+bWSfP28FcBcnGhzLlL+8tNbGVnMoUDM3qpIrpV0mH7eamAuCtmZi1CYn96a44w5Lf9vMXtrj+9aGRr9vHXAXJxkWy4ytH5664895vR/iNnbcKzXSv9H/byNwFycbE8ukv7FT++jY4k5/V9j9jYd/bVyjqCftxmYi8I25CL9iH56W44u5tBRxOxtPZprhY5KP28bMBdF/ttcpB6ln972I8WcctQxezv+9Vop+cegn7cTmIui/1Uu0o/JT2/XP8eccYwxe7v/4VqZ+cesn7cHmItTzOcidBx+ent1MYeOK2Zv39+v5R2nft5+YC5ONZmL3OP20ztweMzJEcTsfRy4VlJ+RPp5nwBzUcxQLkKRHR7w8wEPyLdekM8izUVxR3IB5CAPOMd7hYG5OM2RXADnPQ84r3inAHNxuiO5AN7XPGBf9ooDc1GClAv0d9WA+9cD1p+H1E/WbzNhlfzrfeI/EzvgPyPb5z8z2+M/Q9vlP1Pb4T9j2+Y/c9viP4Pb5D+T2+g/o1vvP7Nb6z/DW+0/01vpP+Nb7j/zk88BloQ9Y5UH+rvGyLnnYAVUHpKNvlQW5/fhf5D2aQWiw/Li6Ot+BiwGVtyfBTYF6LpGXyr7CazYco29VPZzX/Mv/C8G/PWk9nO/CINrX2ie3qLvRIiupZ64fg4s+i/AyWVs8M81jSPSuD8HdtBg3aDvdh8Dc/0lLOa0FJN3uy9Jd7uvKhAd/opwt/va8rudjPtrx+92H8OKLTNH4y7lbveNr/m34Xe7bzR3u28N3O0+Bt7tvgEW/bek5KK7PjLm73DdU/v3lJH695nfNAqCaxCJBt+DpwV005I5/p4wJdket6oddNw/ODIdImv8R3KfCEV2eDInPxL6xPdADX9yYL/8RNgvP4MndDWr/BzwlaUFup5+BNbTLyRdf6nwd3JD96YDQB1+hemQkmeSXH8F508dv1UgOvwbgVx/t5xcZdy/O06uB2DFlp2kcZdCrgUSfS0SCxxOqfL/EE6u8l9ikyuiaylylTFEei1V9CckcpKL7vrImAsm4vL6R5GBa+UXv2mg3+D3C7BZIhvviZbnQ9bLiYn46RYYN+VtcKoO0ZMssnYKkTUMRXb8sZelj2gNTwT2w5PAGqoDfQ9A9q+TLe85MicnE3pOYWCugzNU4UQeUSst0HsIWU9FSLoWSeQTNfLb90VhOqQnmSTqouD8qeOURKLDpyTir3sq8MbCivvUxEMCg65rlKj3w4g6I0/jLoWoi/maFw8n6mIaoi5ugKj3A4m6GLDoiydykovu+siYT7N8miriNw00URcBaohsvKdbng9ZL6cTptvTwSSD9k/VIXqSRdZOCcuJWmpYgqDh6UANSzpC1Mj+FWN5z5E5iSH0nFIk8itFJGqlBXoPIeupNEnX0gaIeh+QqMvAdMgz+uNWZcD5U0dsItHhWAJRl7WcqGXcZR0n6n0wovbyNe5SiDrO1zw+nKjjNEQdb4Co9wGJOg5Y9PGJnOSiuz4y5nKWT1Ol/aaBJurSQA2Rjbe85fmQ9VKeMN0C46YQtapD9CSLrJ0Ey4laaphA0LA8UMMKjhA1sn8lWt5zZE4SCT2nIon8KhKJWmmB3kPIeqpE0rWSAaLeCyTqyjAdko0SdWVw/tRxRiLR4TMIRH2m5UQt4z7TcaLeCyPqHGNEfZaveZVwoj5LQ9RVDBD1XiBRnwUs+iqJnOSiuz4y5rMtn6Yq+U0DTdSVgBoiG29Vy/Mh66UqYboFxk0halWH6EkWWTvVLCdqqWE1goZVgRpWd4Sokf3rHMt7jszJOYSeU4NEfjWIRK20QO8hZD3VJOla0wBRI99/XwumQ5bR913WAudPHecmEh0+l0DU51lO1DLu8xwn6j241+QZe99lyNfcCyfqkIaoPQNEvQdI1CFg0XuJnOSiuz4y5iTLp6maftNAE3VNoIbIxptseT5kvSQTpltg3BSiVnWInmSRtZNiOVFLDVMIGiYDNUx1hKiR/SvN8p4jc5JG6DnpJPJLJxK10gK9h5D1lEHSNcMAUe8GEnUmTIekTJNEnQnOnzrOTyQ6fD6BqC+wnKhl3Bc4TtS7cT8ykK5xl0LUtX3N64QTdW0NUdcxQNS7gURdG1j0dRI5yUV3fWTMF1o+TWX4TQNN1BlADZGN9yLL8yHr5SLCdAuMm0LUqg7RkyyydupaTtR/7DmChhcBNaznCFEj+1d9y3uOzEl9Qs9pQCK/BkSiVlqg9xCynhqSdG1ogKh3AYm6EUyH7AyTRN0InD91NE4kOtyYQNQXW07UMu6LHSfqXbgX4mdo3KUQdRNf86bhRN1EQ9RNDRD1LiBRNwEWfdNETnLRXR8Z8yWWT1MN/aaBJuqGQA2RjfdSy/Mh6+VSwnQLjJtC1KoO0ZMssnaaWU7UUsNmBA0vBWrY3BGiRvavyyzvOTInlxF6zuUk8rucSNRKC/QeQtZTC5KuLQwQ9U4gUV8B0yHV6Le+rwDnTx0tE4kOtyQQ9ZWWE7WM+0rHiXon7tezjH3r+ypf81bhRH2VhqhbGSDqnUCivgpY9K0SOclFd31kzFdbPk218JsGmqhbADVENt7WludD1ktrwnQLjJtC1KoO0ZMssnbaWE7UUsM2BA1bAzW8xhGiRvavay3vOTIn1xJ6TlsS+bUlErXSAr2HkPV0HUnX6wwQ9Q4gUV+Pe0KTapKorwfnTx03JBIdvoFA1DdaTtQy7hsdJ+odOKLO1rhLIeqbfM2zwon6Jg1RZxkg6h1Aor4JWPRZiZzkors+MuZsy6ep6/ymgSbq64AaIhtvjuX5kPWSQ5hugXFTiFrVIXqSRdZOruVELTXMJWiYA9QwzxGiRvavfMt7jsxJPqHn3Ewiv5uJRK20QO8hZD3dQtL1FgNEvR1I1Lfi5sk0k0R9Kzh/6rgtkejwbQSivt1yopZx3+44UW/Hfes7S+Muhajv8DVvF07Ud2iIup0Bot4OJOo7gEXfLpGTXHTXR8Z8p+XT1C1+00AT9S1ADZGN9y7L8yHr5S7CdAuMm0LUqg7Rkyyydu62nKilhncTNLwLqGF7R4ga2b/usbznyJzcQ+g595LI714iUSst0HsIWU8dSLp2MEDU24BE3RGmQ4bRX8/qCM6fOu5LJDp8H4Go77ecqGXc9ztO1NtgRJ1u7NezOvmadw4n6k4aou5sgKi3AYm6E7DoOydykovu+siYH7B8murgNw00UXcAaohsvA9ang9ZLw8Spltg3BSiVnWInmSRtdPFcqKWGnYhaPggUMOujhA1sn89ZHnPkTl5iNBzHiaR38NEolZaoPcQsp66kXTtZoCotwKJurujRN0dnD91PJJIdPgRAlE/ajlRy7gfdZyotzpI1D18zXuGE3UPDVH3NEDUW4FE3QNY9D0dIWpkzI9ZPk1185sGmqi7ATVENt7HLc+HrJfHCdMtMG4KUas6RE+yyNrpZTlRSw17ETR8HKhhb0eIGtm/nrC858icPEHoOU+SyO9JIlErLdB7CFlPfUi69jFA1FuARN0XpkOq0Xd99wXnTx39EokO9yMQ9VOWE7WM+ynHiXoLjKizjL3ru7+v+YBwou6vIeoBBoh6C5Co+wOLfkAiJ7noro+M+WnLp6k+ftNAE3UfoIbIxjvQ8nzIehlImG6BcVOIWtUhepJF1s4zlhO11PAZgoYDgRoOcoSokf3rWct7jszJs4Se8xyJ/J4jErXSAr2HkPU0mKTrYANEvRlI1M/jiDrXJFE/D86fOl5IJDr8AoGoX7ScqGXcLzpO1JtxRJ2scZdC1EN8zYeGE/UQDVEPNUDUm4FEPQRY9EMTOclFd31kzC9ZPk0N9psGmqgHAzVENt6XLc+HrJeXCdMtMG4KUas6RE+yyNoZZjlRSw2HETR8GajhcEeIGtm/XrG858icvELoOa+SyO9VIlErLdB7CFlPI0i6jjBA1JuARP0aTIcko8+oXwPnTx2vJxIdfp1A1G9YTtQy7jccJ+pNMKLONfaMeqSv+ZvhRD1SQ9RvGiDqTUCiHgks+jcTOclFd31kzG9ZPk2N8JsGmqhHADVENt63Lc+HrJe3CdMtMG4KUas6RE+yyNoZZTlRSw1HETR8G6jhO44QNbJ/vWt5z5E5eZfQc0aTyG80kaiVFug9hKynMSRdxxgg6o+ARD0WpkNyskmiHgvOnzrGJRIdHkcg6vGWE7WMe7zjRP0RjKhzcjXuUoh6gq/5xHCinqAh6okGiPojIFFPABb9xEROctFdHxnze5ZPU2P8poEm6jFADZGNd5Ll+ZD1Mokw3QLjphC1qkP0JIusncmWE7XUcDJBw0lADac4QtTI/jXV8p4jczKV0HOmkchvGpGolRboPYSsp+kkXacbIOqNQKKeAdMhz+gz6hng/KljZiLR4ZkEon7fcqKWcb/vOFFvhBG1Z+wZ9Sxf89nhRD1LQ9SzDRD1RiBRzwIW/exETnLRXR8Z8weWT1PT/aaBJurpQA2RjXeO5fmQ9TKHMN0C46YQtapD9CSLrJ25lhO11HAuQcM5QA3nOULUyP413/KeI3Myn9BzFpDIbwGRqJUW6D2ErKeFJF0XGiDqDUCiXgTTIcUoUS8C508dixOJDi8mEPWHlhO1jPtDx4l6A4yos40R9RJf86XhRL1EQ9RLDRD1BiBRLwEW/dJETnLRXR8Z8zLLp6mFftNAE/VCoIbIxrvc8nzIellOmG6BcVOIWtUhepJF1s4Ky4laariCoOFyoIYrHSFqZP9aZXnPkTlZReg5q0nkt5pI1EoL9B5C1tMakq5rDBD1eiBRr4XpkJ5pkqjXgvOnjnWJRIfXEYh6veVELeNe7zhRr4cRdUa6xl0KUW/wNd8YTtQbNES90QBRrwcS9QZg0W9M5CQX/jkqMOaPLJ+m1vhNA03Ua4AaIhvvJsvzIetlE2G6BcZNIWpVh+hJFlk7my0naqnhZoKGm4AabnGEqJH9a6vlPUfmZCuh52wjkd82IlErLdB7CFlP20m6bjdA1OuARL0D94TGKFHvAOdPHTsTiQ7vJBD1LsuJWsa9y3GiXgcj6hRjRL3b13xPOFHv1hD1HgNEvQ5I1LuBRb8nkZNcdNdHxrzX8mlqu9800ES9HaghsvHuszwfsl72EaZbYNwUolZ1iJ5kkbWz33KilhruJ2i4D6jhAUeIGtm/Pra858icfEzoOZ+QyO8TIlErLdB7CFlPB0m6HjRA1GuBRP0p7hl1yCRRfwrOnzo+SyQ6/BmBqD+3nKhl3J87TtRrYUSdGdK4SyHqL3zNvwwn6i80RP2lAaJeCyTqL4BF/2UiJ7noro+M+SvLp6mDftNAE/VBoIbIxvu15fmQ9fI1YboFxk0halWH6EkWWTvfWE7UUsNvCBp+DdTwW0eIGtm/vrO858icfEfoOd+TyO97IlErLdB7CFlPP5B0/cEAUa8BEvWPuHnSM0nUP4Lzp46fEokO/0Qg6p8tJ2oZ98+OE/UaGFGn5WvcpRD1L77mv4YT9S8aov7VAFGvARL1L8Ci/zWRk1x010fG/Jvl09QPftNAE/UPQA2Rjfd3y/Mh6+V3wnQLjJtC1KoO0ZMs9KZd0W6ilhpKH9Ea/g7U8ASwhupA3wOQ/atgRbt7jsyJ9BG9p08E5jo4Q51YkUfUSgv0HkLWUyGSroUq8ol6NZCoT4LpkGL017NOAudPHSdXJDp8ckX8dQtXtJuoZdyFKx4SGHRdo0S9GvdmMmO/nlXE17xoxQKH03ORin8navkvsYl6NZCoiwCLvmhFTnLRXR8Z8ymWT1OF/KaBJupCQA2RjfdUy/Mh6+VUwnR7Kphk0P6pOkRPssjaKWY5UUsNixE0PBWoYXFHiBrZv06zvOfInJxG6Dmnk8jvdCJRKy3QewhZTyVIupYwQNSrgERdEqZDntFn1CXB+VNHTEWiwzEEoi5lOVHLuEs5TtSrcL+eZewZdWlf8zLhRF1aQ9RlDBD1KiBRlwYWfZmKnOSiuz4y5ljLp6kSftNAE3UJoIbIxlvW8nzIeilLmG6BcVOIWtUhepJF1k6c5UQtNYwjaFgWqGG8I0SN7F/lLO85MiflCD2nPIn8yhOJWmmB3kPIekog6ZpggKhXAom6AkyH/FSTRF0BnD91JFYkOpxIIOqKlhO1jLui40S9EkbUoWyNuxSiruRrXjmcqCtpiLqyAaJeCSTqSsCir1yRk1x010fGfIbl01SC3zTQRJ0A1BDZeM+0PB+yXs4kTLfAuClEreoQPckia+csy4laangWQcMzgRpWcYSokf3rbMt7jszJ2YSeU5VEflWJRK20QO8hZD1VI+lazQBRrwASdXWYDplGv/VdHZw/dZxTkejwOQSirmE5Ucu4azhO1Ctwf0dt7FvfNX3Na4UTdU0NUdcyQNQrgERdE1j0tSpykovu+siYz7V8mqrmNw00UVcDaohsvOdZng9ZL+cRpltg3BSiVnWInmSRtROynKilhiGChucBNfQcIWpk/0qyvOfInCQRek4yifySiUSttEDvIWQ9pZB0TTFA1MuBRJ2Ke0Zt9F3fqeD8qSOtItHhNAJRp1tO1DLudMeJejnuW9/G3vWd4WueGU7UGRqizjRA1MuBRJ0BLPrMipzkors+MubzLZ+mUvymgSbqFKCGyMZ7geX5kPVyAWG6BcZNIWpVh+hJFlk7tS0naqlhbYKGFwA1rOMIUSP714WW9xyZkwsJPeciEvldRCRqpQV6DyHrqS5J17q+ribpclkFbCzqqFeR6HA9Al3Wt5wuZdz1CXSp8xWxQeoTNjFw49HzbauGyLgbODJM1AXG3NDyYULG2oAwTDSyfPiWeWlE7jmRatiYNDg0/g8Gh6WkweHiikSHLyYMDk0sHxxk3E0cGRxkITchbGLgxqPn21YNkXE3dWRwaAyM+RLLBwcZa1PC4HCp5YODzMul5J4TqYbNSINDMwPP8JcAn+E3B+4hk8NS84qcYemyikSHLyMMS5dbPizJuC83NCyFIju8Zr6v6EeHzYA5Qua7heU3UNnoWhBuoFdYfgOVMV9BiLsl6abXUvMVELQm7Jwh9vjlhKEHud+vtLzupYZXEjRsAdTwKkdAC3nPaWX5fULmpBWhX15N6pdXEx/3Ki3QewhZT61JewitZWvwbK0O9F4fXRh3rTaBmL2M5KSk9GT572Xkiif+uTlJGUlJudkpoZxQVk5SXmaKl5mfkpSSnJObky2umeXlh/KzcjLzM/68lkkgbEMCwmsqEh2+hgCE11oOhDLuawlAKIvt5AJmvtQd3HChCA+Nu7ANGCzktsFPptB3ymuBE0LwTtn2X+6UR/A55wji/LFR2h7HnfJIorcFbsDrSBOIvG6346wFT2iX44XyQ5lJoaxQek5aenZmblJ2RlZ+cn5qcm7y8ep6pGJH6no9Sdfrj1/X/xf1egNJ1xv+x+v1RpKuN/q6yptnwQJmJjXkzTN4s7/JHyqy5D2DcYNrS5jW2lr+sdbxbo7QMcQdqY/Zln+sJQszm/DxRA6pKeT8S7MNRXZ4WSQtckla5BK1kI2QoUWlanb3FNZ+qPzfxp1zBP9otX8GOG51oP+KF1iXHjDXHlI/OUiJba39FKLAMep5pHoKXpNxz0JpEhwq8/7tU4hQZIeXTboJ5B3/5/Xekf470uc8QlM4m9QUCh1jzo5leIs05vyKdjYYZC6CdZkfGE6ONz9H0hyZn5uDzxaSk8XeyE338nPzk1PTM5OyvbTktLT8lPz0tIyU3PzUlKzc9DwvJSs5KTMvPZTvZeTlpacm56Sn5Wfm5qTlB5u2l5ucnJKbmZ3jpSalZWWHMnKTs0L5KenJAvhzk9Nzc5Mz0tKykpNz0zLyMzIFpAv0zwilpqdnhtKSkjOTWPm5OUDXqJvCkT7NCV7TlZvCLS7eFG4h3xRuIdwUqllyU/jHIk7/4yUt+cimc6ulN4VqpKZzK+CmcKSPNpH5uc3SmwIrP7f9P/rI9Xb/I9c7dB+5hiI7/vF5B/JZZaTXAn58S/lmlNIQ/Y1mloaRXqud5fmQG6Yd4cZ+J2nIuZP48ecdJC3uImlxF/mjYIYW51j+UTBrP9Sw/KNgVu3XdOSjYGBdesBcezWjHwWHH3/cs1CaBIfdu5nU3450E7ibSP3S57sJTSHkyEfB7YCDYPuKdjaYEIkq2xv4KBiZn3uA1F8TSP2s/Nyjyc+xfqfmSB/9IvNzL6l/3gvQ4UifTiF16EDSoYNj9dCRpENHx+rhPpIO9x3FoyKbBzuNu7A6Dg6N97s4NN5PHhrvJwyNSYaGxgi/FQ9tcp2A10IOjUmkoaTTUQyNkX67HpmfzhVxgx5yaGTlpzPg5niEw/sE+DKhB2D9M4PyRexr/U/d0E+UkDX+oOVPMGSOHyTcb7qQ7r3yukX8/92swN8P1H9TXQ+td/ui9vvYFT1IulK0KZY/XpExdyXEnWrJJ4pHOA4rzEhjfgjYmIF14yFzQW6Sfz2m+F9skg/9rzbJhy3/8zwZ88OEuLuRJppuFQ+9bY3x5566CTkU2eEhJ+TulteTJKruhHp6xIF99Agh7kdJ++jRf9lHocgOWk/JqPa/WQOZhr7XEqmfPYBDIjDXXibpE6oeUbqm+9iTPTgiKLMnYdPXdoQyezqw6SP+lUtHGvBjwFwA68+rE6V0J5rtY8hm6+pdsYsDiXo8mijxmZIDieoVTVTI6+ZAonpHExXyHnEgUU9EExXyejiQqCejiRITlQOJ6hNNlLhRO5CovtFEif7vQKL6RRMl2ooDiXoqmihRrQ4kqn80UUIEBxI1IJqokPe0A4l6OpqokHdrQft9HBhNVMgb5MCOeiaaqJCX68COGhRNVMgb7MCOejaaqJD3ggOJei6aqJA3xIFEDY4mKuS95ECino8mKuQNcyBRL0QTFfJecSBRL0YTFfJGOJCoIdFEhbzXHUjU0GiiQt5IBxL1UjRRIe8tBxL1cjRRIW+UA4kaFk1UyGvlwGd9w6OJCnmjHdhRr0QTFfLGOpCoV6OJCnnjHUjUiGiiQt5EBxL1GjJR8h2apxY49LdlfzhbsID2gP1Ho9eNXjd63eh1o9eNXjd63eh1o9eNXjd63eh1o9eNXjd63eh1o9eNXjd63eh1o9e14roFsdf1gC859tAvepWH1a9fIvnYywEfezvg4xMO+PikAz72ccDHvg742M8BH59ywMf+Dvg4wAEfn3bAx4EO+PiMAz4OcsDHZx3w8TkHfBzsgI/PO+DjCw74+KIDPg5xwMehDvj4kgM+vuyAj8Mc8HG4Az6+4oCPrzrg4wgHfHzNAR/vKWa/j/c64GMHB3zs6ICP9zng4/0O+NjJAR87O+DjAw74+KADPnZxwMeuDvj4kAM+PuyAj90c8LG7Az4+4oCPjzrgYw8HfOzpgI+POeDj4w742MsBH3s74OMTDvj4pAM+9nHAx74O+NjPAR+fcsDH/g74OMABH592wMeBDvj4jAM+DnLAx2cd8PE5B3wc7ICPzzvg4wsO+PiiAz4OccDHoQ74+JIDPr7sgI/DHPBxuAM+ppe038cMB3zMdMDH8x3w8QIHfKztgI91HPDxQgd8vMgBH+s64GM9B3ys74CPDRzwsaEDPjZywMfGDvh4sQM+NnHAx6YO+HiJAz5e6oCPzRzwsbkDPl7mgI+XO+BjCwd8vMIBH1s64OOVDvh4lQM+tnLAx6sd8LG1Az62ccDHaxzw8VoHfGzrgI/XOeDj9Q74eIMDPt7ogI83OeBjlgM+ZjvgY44DPuY64GOeAz7mu/AsroIDz+Ic8PFCB3y8yAEf6zrgYz0HfKzvgI8NHPCxoQM+NnLAx8YO+HixAz42ccDHpg74eIkDPl7qgI/NHPCxuQM+XuaAj5c74GMLB3y8wgEfWzrg45UO+HiVAz62csDHqx3wsbUDPrZxwMdrHPDxWgd8bOuAj9c54OP1Dvh4gwM+3uiAjzc54GOWAz5mO+BjjgM+5jrgY54DPuY74OPNDvh4iwM+3uqAj7c54OPtDvh4hwM+tnPAxzsd8PEuB3y82wEf2zvg4z0O+HivAz52cMDHjg74eJ8DPt7vgI+dHPCxswM+PuCAjw864GMXB3zs6oCPDzng48MO+NjNAR+7O+DjIw74+KgDPvZwwMeeDvj4mAM+Pu6Aj70c8LG3Az4+4YCPTzrgYx8HfOzrgI/9HPDxKQd87O+AjwMc8PFpB3wc6ICPzzjg4yAHfHzWAR+fc8DHwQ74+LwDPr7ggI8vOuDjEAd8HOqAjy854OPLDvg4zAEfhzvg4ysO+PiqAz6OcMDH1xzw8XUHfHzDAR9HOuDjmw74+JYDPr7tgI+jHPDxHQd8fNcBH0c74OMYB3wc64CP4xzwcbwDPk5wwMeJDvj4ngM+TnLAx8kO+DjFAR+nOuDjNAd8nO6AjzMc8HGmAz6+74CPsxzwcbYDPn7ggI9zHPBxrgM+znPAx/kO+LjAAR8XOuDjIgd8XOyAjx+68Peupe33sb0DPt7jgI/3OuBjBwd87OiAj/c54OP9DvjYyQEfOzvg4wMO+PigAz52ccDHrg74+JADPj7sgI/dHPCxuwM+PuKAj4864GMPB3zs6YCPjzng4+MO+NjLAR97O+DjEw74+KQDPvZxwMe+DvjYzwEfn3LAx/4O+DjAAR+fdsDHgQ74+IwDPg5ywMdnHfDxOQd8HOyAj8874OMLDvj4ogM+DnHAx6EO+PiSAz6+7ICPwxzwcbgDPr7igI+vOuDjCAd8fM0BH193wMc3HPBxpAM+vumAj2854OPbDvg4ygEf33HAx3cd8HG0Az6OccDHsQ74OM4BH8c74OMEB3yc6ICP7zng4yQHfJzsgI9THPBxqgM+TnPAx+kO+DjDAR9nOuDj+w74OMsBH2c74OMHDvg4xwEf5zrg4zwHfJzvgI8LHPBxoQM+LnLAx8UO+PihAz4uccDHpQ74uMwBH5c74OMKB3xc6YCPqxzwcbUDPq5xwMe1Dvi4zgEf1zvg4wYHfNzogI8fOeDjJgd83OyAj1sc8HGrAz5uc8DH7Q74uMMBH3c64OMuB3zc7YCPexzwca8DPu5zwMf9Dvh4wAEfP3bAx08c8PGgAz5+6oCPnzng4+cO+PiFAz5+6YCPXzng49cO+PiNAz5+64CP3zng4/cO+PiDAz7+6ICPPzng488O+PiLAz7+6oCPvzng4+8O+FigjP0+nuCAjwUd8PFEB3ws5ICPJzng48kO+FjYAR+LOOBjUQd8PMUBH091wMdiDvhY3AEf/4+984CTotje9pAzgoqYkCF4zbq9y8KuSs4gkkEluQnBQFxyzjnnnCXnnAQFVMScc8455/BVS82lGUuvU3N62ef7z/w8bnNqTs3zVld3vzM93VMUwHgWgLEYgLE4gPFsAOM5AMZzAYwlAIznARhLAhjPBzBeAGC8EMB4EYDxYgBjKQDjJQDG0j4weh8ifcf72Ld65PSMbajPe0sHAqtVrFGxVsU6FetVbFCxUcUmFZtVbFGxVcU2FdtV7FCxU8UuFbtV7FGxV8U+FftVHFBxUMV9Kg6pOKzifhUPqDii4qiKYyoeVPGQiodVHFfxiIoTKh5V8ZiKx1U8oeJJFU+peFrFMyqeVfGciudVvKDiRRUvqXhZxSsqXlXxmorXVbyh4k0Vb6l4W8U7Kt5V8V7pk2Pwfmk9KLn0XzcRDFsJ4jcFLO3PhBS/MSCEcw2Ecy2Ecx2Ecz2EcwOEcyOEcxOEczOEcwuEcyuEcxuEczuEcweEcyeEcxeEczeEcw+Ecy+Ecx+Ecz+E8wCE8yCE8z4I5yEI52EI5/0QzgcgnEcgnEchnMcgnA9COB+CcD4M4TwO4XwEwnkCwvkohPMxCOfjEM4nIJxPQjifgnA+DeF8BsL5LITzOQjn8xDOFyCcL0I4X4JwvgzhfAXC+SqE8zUI5+sQzjcgnG9CON+CcL4N4XwHwvkuhPM9QU6XraRm7F7g5HdCqcu7Cp5a3u1Z3uNZ3utZ3udZ3u9ZPuBZPqiXP1Bj/qGKj1R8rOITFZ+q+EzF5yryqOcUCpz8fu1/13nOgPFRTWjdxfqN9RvrN9ZvrN9Yv7F+Y/3G+o31G+s31m+s31i/sX5j/cb6jfUb6zfWb6zf7NFvTtl+nSFy5wGc4T6c+5A+7zEGwDgWwDgOwDgewDgBwDgRwDgJwDgZwDgFwDgVwDgNwDgdwDgDwDgTwDgLwDgbwDgHwDgXwDgPwDgfwLgAwLgQwLgIwLgYwLgEwLgUwLgMwLgcwLgCwLgSwLgKwNijcPZn7AlgzAQw9gIw9gYw9gEw9gUw9gMw9gcwDgAwDgQwDgIwDgYwDgEwDgUwDgMwDgcwjgAwjgQwjgIwjgYwjgEwjgUwjgMwjgcwTgAwTgQwTgIwTgYwTgEwTgUwTgMwTgcwzgAwzgQwzgIwzgYwzgEwzgUwzgMwzgcwLgAwLgQwLgIwLgYwLgEwLgUwLgMwViqe/RmTAIzJAMbrAYw3ABhvBDBWBjBWATBWBTBWAzBWBzDWADDWBDDWAjDWBjDWATDWBTDWAzDWBzA2ADA2BDDeBGBsBGC8GcDYGMDYBMDYFMDYDMDYHMDYAsDYEsDYCsDYGsB4C4DxVgDjbQDGNgDGtgDGdgDG9gDGDgDG2wGMKQDGVABjGoAxHcCYAWDsSDgXVwpwLg7AWAXAWBXAWA3AWB3AWAPAWBPAWAvAWBvAWAfAWBfAWA/AWB/A2ADA2BDAeBOAsRGA8WYAY2MAYxMAY1MAYzMAY3MAYwsAY0sAYysAY2sA4y0AxlsBjLcBGNsAGNsCGNsBGNsDGDsAGG8HMKYAGFMBjGkAxnQAYwaAsSOA8Q4AYycAY2cA450AxrsAjHcDGO8BMHYBMHYFMHYDMHYHMPYAMPYEMGYCGHsBGHsDGPsAGPsCGPsBGPsDGAcAGAcCGAcBGAcDGIcAGIcCGIcBGIcDGEcAGEcCGEcBGEcDGMcAGMcCGMcBGMcDGCcAGCcCGCcBGCcDGKcAGKcCGKcBGKcDGGcAGGcCGGcBGGcDGOcAGOcCGOcBGOcDGBcAGBcCGBcBGBcDGJcAGJcCGJcBGJcDGFcAGFcCGFcBGO8FMK4GMK4BMK4FMK4DMK4HMG4AMG4EMG4CMG4GMG4BMG4FMG4DMG4HMO4AMO4EMO4CMO4GMO4BMO4FMO4DMO4HMB4AMB4EMN4HYDwEYDwMYLwfwPgAgPEIgPEogPEYgPFBAONDAMaHAYzHAYyPABhPEK53PTf7M3YHMPYAMPYEMGYCGHsBGHsDGPsAGPsCGPsBGPsDGAcAGAcCGAcBGAcDGIcAGIcCGIcBGIcDGEcAGEcCGEcBGEcDGMcAGMcCGMcBGMcDGCcAGCcCGCcBGCcDGKcAGKcCGKcBGKcDGGcAGGcCGGcBGGcDGOcAGOcCGOcBGOcDGBcAGBcCGBcBGBcDGJcAGJcCGJcBGJcDGFcAGFcCGFcBGO8FMK4GMK4BMK4FMK4DMK4HMG4AMG4EMG4CMG4GMG4BMG4FMG4DMG4HMO4AMO4EMO4CMO4GMO4BMO4FMO4DMO4HMB4AMB4EMN4HYDwEYDwMYLwfwPgAgPEIgPEogPEYgPFBAONDAMaHAYzHAYyPABhPABgfBTA+BmB8HMD4BIDxSQDjUwDGpwGMzwAYnwUwPgdgfB7A+AKA8UUA40sAxpcBjK8AGF8FML4GYHwdwPgGgPFNAONbAMa3AYzvABjfBTC+B2B8H8D4AYDxQwDjRwDGjwGMnwAYPwUwfgZg/BzA+AWA8UsA41cAxq8BjN8AGL8FMH4HYPwewPgDgPFHAONPAMafAYy/ABh/BTD+BmD8HcD4B4AxUCL7M+YAMOYEMOYCMOYGMOYBMOYFMOYDMOYHMBYAMBYEMBYCMBYGMBYBMBYFMJ4FYCwGYCwOYDwbwHgOgPFcAGMJAON5AMaSAMbzAYwXABgvBDBeBGC8GMBYCsB4CYCxtA+M3odI3/E+9h1XIS6nZ2xDfX5ROhD4UsVXKr5W8Y2Kb1V8p+J7FT+o+FHFTyp+VvGLil9V/KbidxV/qAgEVZ8qcqrIpSK3ijwq8qrIpyK/igIqCqoopKKwiiIqiqo4S0UxFcVVnK3iHBXnqiih4jwVJVWcr+ICFRequEjFxSpKqbhERWkVQRVlVJRVUU5FeRWXqviPistUXK7iChVXqrhKxdUqrlFxbfDkGFwX1IOSS/91ByV/WO5LQ+4rQ+5rQ+4bQ+5bQ+47Q+57Q+4HQ+5HQ+4nQ+5nQ+4XQ+5XQ+43Q+53Q+4PQ86dJOG5HIZcTkMulyGX25DLY8jlNeTyGXL5DbkChlxBQ66QIVfYkCtiyBU15M4y5IoZcsUNubMNuXMMuXMNuRKG3HmGXElD7nxD7gJD7kJD7iJD7mJDrpQhd4khV9qQCxpyZQy5soZcOUOuvCF3qSH3H0PuMkPuckPuCkPuSkPuKkPuakPuGkPuWkPO3SGq/0575NJ/q+m/CXEVK1TIqBSf4SQ4KXHxyalJiXEVElMrJjlJTmJSYnp8UkJCRlKFpErJqcmV4pKdCgkZTsfE5ISO+nA0pLRcX8NLC37RrbQ/RiGn8PiNEdT8JUTzWEHNX0E0jxPU/DVE83hBzd9ANE8Q1PwtRPNEQc3fQTRPEtT8PUTzZEHNP0A0TxHU/CNE81RBzT9BNE8T1PwzRPN0Qc2/QDTPENT8K0TzTEHNv0E0zxLU/DtE82xBzX9ANM8R1Ox+WELQPFdQcw6I5nmCmnNCNM8X1JwLonmBoObcEM0LBTXngWheJKg5L0TzYkHN+SCalwhqzg/RvFRQcwGI5mWCmgtCNC8X1FwIonmFoObCEM0rBTUXgWheJai5KERzj8Jyms+CaO4pqLkYRHOmoObiEM29BDWfDdHcW1DzORDNfQQ1nwvR3FdQcwmI5n6Cms+DaO4vqLkkRPMAQc3nQzQPFNR8AUTzIEHNF0I0DxbUfBFE8xBBzRdDNA8V1FwKonmYoOZLIJqHC2ouDdE8QlBzEKJ5pKDmMhDNowQ1l4VoHi2ouRxE8xhBzeUhmscKar4UonmcoOb/QDSPF9R8GUTzBEHNl0M0TxTUfAVE8yRBzVdCNE8W1HwVRPMUQc1XQzRPFdR8DUTzNEHN1wpqzqP6KOrR633kDhuDONuHc/KP0Pb9Z29i240jOx8F17MfN11xQgve9R0XPPnXcf96L7h3G14Py7lPCgZiEyXaHUK1y/2ZKGLr4uTjtAltqTlea3bc+SQ1fk5QTqNf6yKn8LqQHL94Q1+pcWnpiU5qxfRKTkZKYlJaWnKC48SnVEypmBqf1DEjNdFJSkxSfaalxCepl4tPSXMy4lIqZrgHkSIBfUOdsEcO4TGIl1vvcV7ehKCPwG7n0v1WEJwMfumuEDw1wEL9GlkldiYuq9QGG+pXch0lBmUnfuiA7vZbRv3NSic4XvAAP0HwAC/5ScMkoBOsGDz5t1IwcLrrcxvCnaD7pGAgNlGi3bBrQJzgJEEn6M4nqfGrFJTTWAPiBCXHLynIdIJJQdkDYuiRHPQR2O1cut/rBSeDX7qvD54aYKF+fXGClTSrtBOUXEc3BP1xgm6/We0ERwse4McIHuAlzyGPAzrBG4Mn/1YOBk53fW5DuBN0nxQMxCZKtBt2LYgTHCfoBN35JDV+lYNyGmtBnKDk+FUJMp1glaDsATH0qBr0EdjtXLrfaoKTwbcVFTw1wEL9+uIEK2tWaScouY6qB/1xgm6/We0Ehwse4EcIHuAlvx08CugEawRP/q0ZDJzu+tyGcCfoPikYiE2UaDfsOhAnOErQCbrzSWr8agblNNaBOEHJ8asVZDrBWkHZA2LoUTvoI7DbuXS/dQQng1+66wRPDbBQv744wZqaVdoJSq6jukF/nKDbb1Y7wcGCB/ghggd4yes+hwGdYL3gyb/1g4HTXZ/bEO4E3ScFA7GJEu2GXQ/iBIcJOkF3PkmNX/2gnMZ6ECcoOX4Ngkwn2CAoe0AMPRoGfQR2O5fu9ybByeCX7puCpwZYqF9fnGB9zSrtBCXXUaOgP07Q7TernWB/wQP8AMEDvOQdfQYBneDNwZN/GwcDp7s+tyHcCbpPCgZiEyXqIzHECQ4SdILufJIav8ZBwYMWxAlKjl+TINMJNgnKHhBDj6ZBH4HdzqX7bSY4GfzS3Sx4aoCF+vXFCTbWrNJOUHIdNQ/64wTdfrPaCfYWPMD3ETzAS96rtR/QCbYInvzbMhg43fW5DeFO0H1SMBCbKNFu2DdBnGA/QSfoziep8WsZFPx4BeIEJcevVZDpBFsFZQ+IoUfroI/AbufS/d4iOBn80n1L8NQAC/XrixNsqVmlnaDkOro16I8TdPvNaifYQ/AA31PwAC/5Kxy9gE7wtuDJv22CgdNdn9sQ7gTdJwUDsYkS7YZ9M8QJ9hJ0gu58khq/NkHBz9ogTlBy/NoGmU6wbVD2gBh6tAv6COx2Lt1ve8HJ4Jfu9sFTAyzUry9OsI1mlXaCkuuoQ9AfJ+j2m9VOUOj3Kv/sTex3IB3Z31dc5dPv1gttT0YneHvw5N+UYOB01+c2hDtB90nBQGyiRH12DuIEV5WWc4LufJIav5Sg4IksiBOUHL/UINMJpgZlD4ihR1rQR2C3c+l+0wUng1+604OnBlioX1+cYIpmlXaCkusoI+iPE3T7zWonuFjwAL9E8AC/VNAJLgM6wY7Bk3/vCAZOd31uQ7gTdJ8UDMQmSrQbdjOIE1wm6ATd+SQ1fncEBb9yBXGCkuPXKch0gp2CsgfE0KNz0Edgt3Ppfu8UnAx+6b4zeGqAhfr1xQneoVmlnaDkOror6I8TdPvNaic4X/AAv0DwAL9Q0AkuAjrBu4Mn/94TDJzu+tyGcCfoPikYiE2UaDfsFhAnuEjQCbrzSWr87gkKfv8O4gQlx69LkOkEuwRlD4ihR9egj8Bu59L9dhOcDH7p7hY8NcBC/friBO/RrNJOUHIddQ/64wTdfrPaCc4WPMDPETzAzxV0gvOATrBH8OTfnsHA6a7PbQh3gu6TgoHYRIn6G/sQJzhP0Am680lq/HoG5TS2gjhByfHLDDKdYGZQ9oAYevQK+gjsdi7db2/ByeCX7t7BUwMs1K8vTrCnZpV2gpLrqE/QHyfo9pvVTnC64AF+huABfqagE5wFdIJ9gyf/9gsGTnd9bkO4E3SfFAzEJkq0G/YtECc4S9AJuvNJavz6BeU03gJxgpLj1z/IdIL9g7IHxNBjQNBHYLdz6X4HCk4Gv3QPDJ4aYKF+fXGC/TSrtBOUXEeDgv44QbffrHaCkwUP8FMED/BTBZ3gNKATHBw8+XdIMHC663Mbwp2g+6RgIDZRot2wb4M4wWmCTtCdT1LjNyQop/E2iBOUHL+hQaYTHBqUPSCGHsOCPgK7nUv3O1xwMvile3jw1AAL9euLExyiWaWdoOQ6GhH0xwm6/Wa1ExwveICfIHiAnyjoBCcBneDI4Mm/o4KB012f2xDuBN0nBQOxiRL1XTwgTnCSoBN055PU+I0KymlsC3GCkuM3Osh0gqODsgfE0GNM0Edgt3PpfscKTga/dI8NnhpgoX59cYKjNKu0E5RcR+OC/jhBt98sc4L6oDxG8KA8VtC9jSstZ2K+ADrB8cGTfycEA6e7Prch3Am6TwoGYhMl2g27fXZ3goYJHa0TdOeT1PhNCMqt1/YQJyg5fhODTCc4MSh7QAw9JgV9BHY7l+53suBk8Ev35OCpARbq1xcnOEGzSjtByXU0JeiPE3T7LaOXSwZOP8h7P/rxnhD0fk3Me/GA95JS741G3OUUz3Ibz3JLz3Jjz3J9z3JNz3Jlz3Ilz7LjWf6g9KnlDz3LH3mWP/Ysf+JZ/tSz/Jln+XO9PFX9b5qK6SpmqJipYpaK2SrmBE866kJ6fAO61mivA/45xVi/sX5j/cb6jfUb6zfWb6zfWL+xfmP9xvqN9RvrN9ZvrN9Yv7F+Y/3G+o31e2b6lT7X4se3DqQZxwAYxwIYxwEYxwMYJwAYJwIYJwEYJwMYpwAYpwIYpwEYpwMYZwAYZwIYZwEYZwMY5wAY5wIY5wEY5wMYFwAYFwIYFwEYFwMYlwAYlwIYlwEYlwMYVwAYVwIYVwEYexTO/ow9AYyZAMZeAMbeAMY+AMa+AMZ+AMb+AMYBAMaBAMZBAMbBAMYhAMahAMZhAMbhAMYRAMaRAMZRAMbRAMYxAMaxAMZxAMbxAMYJAMaJAMZJAMbJAMYpAMapAMZpAMbpAMYZAMaZAMZZAMbZAMY5AMa5AMZ5AMb5AMYFAMaFAMZFAMbFAMYlAMalAMZlAMZKxbM/YxKAMRnAeD2A8QYA440AxsoAxioAxqoAxmoAxuoAxhoAxpoAxloAxtoAxjoAxroAxnoAxvoAxgYAxoYAxpsAjI0AjDcDGBsDGJsAGJsCGJsBGJsDGFsAGFsCGFsBGFsDGG8BMN4KYLwNwNgGwNgWwNgOwNgewNgBwHg7gDEFwJgKYEwDMKYDGDMAjB0J5+JKAc7FARirABirAhirARirAxhrABhrAhhrARhrAxjrABjrAhjrARjrAxgbABgbAhhvAjA2AjDeDGBsDGBsAmBsCmBsBmBsDmBsAWBsCWBsBWBsDWC8BcB4K4DxNgBjGwBjWwBjOwBjewBjBwDj7QDGFABjKoAxDcCYDmDMADB2BDDeAWDsBGDsDGC8E8B4F4DxbgDjPQDGLgDGrgDGbgDG7gDGHgDGngDGTABjLwBjbwBjHwBjXwBjPwBjfwDjAADjQADjIADjYADjEADjUADjMADjcADjCADjSADjKADjaADjGADjWADjOADjeADjBADjRADjJADjZADjFADjVADjNADjdADjDADjTADjLADjbADjHADjXADjPADjfADjAgDjQgDjIgDjYgDjEgDjUgDjMgDjcgDjCgDjSgDjKgDjvQDG1QDGNQDGtQDGdQDG9QDGDQDGjQDGTQDGzQDGLQDGrQDGbQDG7QDGHQDGnQDGXQDG3QDGPQDGvQDGfQDG/QDGAwDGgwDG+wCMhwCMhwGM9wMYHwAwHgEwHgUwHgMwPghgfAjA+DCA8TiA8REA4wnC9a7nZn/G7gDGHgDGngDGTABjLwBjbwBjHwBjXwBjPwBjfwDjAADjQADjIADjYADjEADjUADjMADjcADjCADjSADjKADjaADjGADjWADjOADjeADjBADjRADjJADjZADjFADjVADjNADjdADjDADjTADjLADjbADjHADjXADjPADjfADjAgDjQgDjIgDjYgDjEgDjUgDjMgDjcgDjCgDjSgDjKgDjvQDG1QDGNQDGtQDGdQDG9QDGDQDGjQDGTQDGzQDGLQDGrQDGbQDG7QDGHQDGnQDGXQDG3QDGPQDGvQDGfQDG/QDGAwDGgwDG+wCMhwCMhwGM9wMYHwAwHgEwHgUwHgMwPghgfAjA+DCA8TiA8REA4wkA46MAxscAjI8DGJ8AMD4JYHwKwPg0gPEZAOOzAMbnAIzPAxhfADC+CGB8CcD4MoDxFQDjqwDG1wCMrwMY3wAwvglgfAvA+DaA8R0A47sAxvcAjO8DGD8AMH4IYPwIwPgxgPETAOOnAMbPAIyfAxi/ADB+CWD8CsD4NYDxGwDjtwDG7wCM3wMYfwAw/ghg/AnA+DOA8RcA468Axt8AjL8DGP8AMAZKZH/GHADGnADGXADG3ADGPADGvADGfADG/ADGAgDGggDGQgDGwgDGIgDGogDGswCMxQCMxQGMZwMYzwEwngtgLAFgPA/AWBLAeD6A8QIA44UAxosAjBcDGEsBGC8BMJb2gdH7EOk73se+45LicnrGNtTn3GAgME/FfBULVCxUsUjFYhVLVCxVsUzFchUrVKxUsUrFvSpWq1ijYq2KdSrWq9igYqOKTSo2q9iiYquKbSq2q9ihYqeKXSp2q9ijYq+KfSr2qzig4qCK+1QcUnFYxf0qHlBxRMVRFcdUPKjiIRUPqziu4hEVJ1Q8quIxFY+reELFkyqeUvG0imdUPKviORXPq3gheHIMXgzqQcml/7qDkj8sN8+Qm2/ILTDkFhpyiwy5xYbcEkNuqSG3zJBbbsitMORWGnKrDLl7DbnVhtwaQ26tIbfOkFtvyG0w5DYacpsMuc2G3BZDbqsht82Q227I7TDkdhpyuwy53YbcHkNuryG3z5Dbb8gdMOQOGnL3GXKHDLnDhtz9htwDhtwRQ+6oIXfMkHvQkHvIkHvYkDtuyD1iyJ0w5B415B4z5B435J4w5J405J4y5J425J4x5J415J4z5J435F4w5NwdovrvtEfo4FFN/02Iq1ihQkal+AwnwUmJi09OTUqMq5CYWjHJSXISkxLT45MSEjKSKiRVSk5NrhSX7FRIyHA6JiYndNSHo+mF5Q7u7v5aqK84PzXPENQ8D6J5pqDm+RDNswQ1L4Boni2oeSFE8xxBzYsgmucKal4M0TxPUPMSiOb5gpqXQjQvENS8DKJ5oaDm5RDNiwQ1r4BoXiyoeSVE8xJBzasgmpcKar4XonmZoObVEM2VistpXgPRnCSoeS1Ec7Kg5nUQzdcLal4P0XyDoOYNEM03CmreCNFcWVDzJojmKoKaN0M0VxXUvAWiuZqg5q0QzdUFNW+DaK4hqHk7RHNNQc07IJprCWreCdFcW1DzLojmOoKad0M01xXUvAeiuZ6g5r0QzfUFNe+DaG4gqHk/RHNDQc0HIJpvEtR8EKK5kaDm+yCabxbUfAiiubGg5sMQzU0ENd8P0dxUUPMDEM3NBDUfgWhuLqj5KERzC0HNxyCaWwpqfhCiuZWg5ocgmlsLan4YovkWQc3HIZpvFdT8CETzbYKaT0A0txHU/ChEc1tBzY9BNLcT1Pw4RHN7Qc1PQDR3ENT8JETz7YKan4JoThHU/DREc6qg5mcgmtMENT8L0ZwuqPk5iOYMQc3PQzR3FNT8gqDmPKqPoh693kfusDGIs304J/8Ibd9/9ia23Tiy81FwPftxoxQntOBd3y8FT/592f3rvUjebXg9LOc+KRiITZSojdzl/kwUsXVx8nHahLbUHK81O+58khq/l4NyGv1aFzmF14Xk+L1i6Cs1Li090UmtmF7JyUhJTEpLS05wnPiUiikVU+OTOmakJjpJiUmqz7SU+CT1cvEpaU5GXErFDPcgUiRwcv8Q/sghPAavyK33OC/vq0Efgd3Opft9TXAy+KX7teCpARbq18gqsTNxWaU22FC/kuvo9aDsxA8d0N1+y6i/WekEOwge4G8XPMBLftKQCnSCbwRP/n0zGDjd9bkN4U7QfVIwEJsoUX/UA3GCqYJO0J1PUuP3ZlBQI8QJSo7fW0GmE3wrKHtADD3eDvoI7HYu3e87gpPBL93vBE8NsFC/vjjBNzWrtBOUXEfvBv1xgm6/We0E2wge4NsKHuAlzyG3BzrB94In/74fDJzu+tyGcCfoPikYiE2UqE8GQZxge0En6M4nqfF7PyinMR3iBCXH74Mg0wl+EJQ9IIYeHwZ9BHY7l+73I8HJ4Jfuj4KnBlioX1+c4PuaVdoJSq6jj4P+OEG336x2gq0FD/C3CB7gJb8dfBvQCX4SPPn302DgdNfnNoQ7QfdJwUBsokT9dRGIE7xN0Am680lq/D4NCp4BhzhByfH7LMh0gp8FZQ+IocfnQR+B3c6l+/1CcDL4pfuL4KkBFurXFyf4qWaVdoKS6+jLoD9O0O03q51gc8EDfAvBA7zkdZ+tgE7wq+DJv18HA6e7Prch3Am6TwoGYhMl2g27E8QJthJ0gu58khq/r4NyGjtBnKDk+H0TZDrBb4KyB8TQ49ugj8Bu59L9fic4GfzS/V3w1AAL9euLE/xas0o7Qcl19H3QHyfo9pvVTrCx4AG+ieABXvKOPs2ATvCH4Mm/PwYDp7s+tyHcCbpPCgZiEyXaDftOiBNsJugE3fkkNX4/BuU03glxgpLj91OQ6QR/CsoeEEOPn4M+ArudS/f7i+Bk8Ev3L8FTAyzUry9O8EfNKu0EJdfRr0F/nKDbb1Y7wYaCB/ibBA/wkvdqvRnoBH8Lnvz7ezBwuutzG8KdoPukYCA2UaLdsO+GOMGbBZ2gO5+kxu/3oJzGuyFOUHL8/ggyneAfQdkD4n8fZXwEdjuX7jdHmeztBF3dOcqcGl+hfn1xgr9rVmknKLmOcpbxxwm6/Wa1E6wreICvJ3iAl/wVjgZAJ5hLb6+5ywROd31uQ7gTdJ8UDMQmSrQbdheIE2wg6ARzCe4Yc8vtGJ0uECcoOX55yjCdYB7hA2LokbeMj8B5fXCC+bK5E3R154M4wdyaVdoJSq6j/D45wfxnwAnWFDzA1xI8wEv+vmIdoBMsoLfXguFOsIDBCRbMAidImCjRbtjdIE6wjqATLCC4Yywo6AS7QZyg5PgVgjrBQj45wcJlfAQu7IMTLJLNnaCruwjECRbUrNJOUHIdFfXJCRY9A06wquABvprgAb66oBOsAXSCZ+nttVi4EzzL4ASLZYETJEyUaDfsHhAnWEPQCZ4luGMsJugEe0CcoOT4FYc6weI+OcGzy/gIfLYPTvCcbO4EXd3nQJxgMc0q7QQl19G5PjnBc8+AE7xB8AB/o+ABvrKgE6wCdIIl9PZ6XrgTLGFwgudlgRMkTJRoN+xMiBOsIugESwjuGM8TdIKZECcoOX4loU6wpE9O8PwyPgKf74MTvCCbO0FX9wUQJ3ieZpV2gpLr6EKfnOCFZ8AJVhI8wCcJHuCTBZ3g9UAneJHeXi8Od4IXGZzgxVngBAkTJdoNuzfECV4v6AQvEtwxXizoBHtDnKDk+JWCOsFSPjnBS8r4CHyJD06wdDZ3gq7u0hAneLFmlXaCkuso6JMTDJ4BJ7i4sNwBfklhuQP80sJy839ZYX8OKkLbk9EJltHba9lwJ1jG4ATLZoETJEyUaDfsvhAnuKywnBMsI7hjLCvoBPtCnKDk+JWDOsFyPjnB8mV8BC7vgxO8NJs7QVf3pRAnWFazSjtByXX0H5+c4H/OgBOcL3iAXyB4gF8o6AQXAZ3gZXp7vTzcCV5mcIKXZ4ETJEyUaDfs/hAnuEjQCV4muGO8XNAJ9oc4QcnxuwLqBK/wyQleWcZH4Ct9cIJXZXMn6Oq+CuIEL9es0k5Qch1d7ZMTvPoMOMHZggf4OYIH+LmCTnAe0Aleo7fXa8Od4DUGJ3htFjhBwkSJdsMeCHGC8wSd4DWCO8ZrBZ3gQIgTlBy/66BO8DqfnGBcGR+B43xwgk42d4KubgfiBK/VrNJOUHIdxfvkBOPPgBOcLniAnyF4gJ8p6ARnAZ1ggt5eK4Q7wQSDE6yQBU6QMFGi3bAHQ5zgLEEnmCC4Y6wg6AQHQ5yg5PglQp1gok9OsGIZH4Er+uAEK2VzJ+jqrgRxghU0q7QTlFxHST45wSTtBN3lkoHTD/Lej368JwTd5bKe5Ys9y+d5lot5lgt6lnN7lkM/VeEu/+hZ/tqz/Kln+X3P8pue5Zc9y1M9y9M8y9M9yzM8yzM9y7M8y7M9y3P0crJiv17FDSpuVFFZRRUVVd31U+akoy6kxzega432OuCfU4z1G+s31m+s31i/sX5j/cb6jfUb6zfWb6zfWL+xfmP9xvqN9RvrN9ZvrN9Yv2emX+lzLV+Uzv6MYwCMYwGM4wCM4wGMEwCMEwGMkwCMkwGMUwCMUwGM0wCM0wGMMwCMMwGMswCMswGMcwCMcwGM8wCM8wGMCwCMCwGMiwCMiwGMSwCMSwGMywCMywGMKwCMKwGMqwCMPQpnf8aeAMZMAGMvAGNvAGMfAGNfAGM/AGN/AOMAAONAAOMgAONgAOMQAONQAOMwAONwAOMIAONIAOMoAONoAOMYAONYAOM4AON4AOMEAONEAOMkAONkAOMUAONUAOM0AON0AOMMAONMAOMsAONsAOMcAONcAOM8AON8AOMCAONCAOMiAONiAOMSAONSAOMyAGOl4tmfMQnAmAxgvB7AeAOA8UYAY2UAYxUAY1UAYzUAY3UAYw0AY00AYy0AY20AYx0AY10AYz0AY30AYwMAY0MA400AxkYAxpsBjI0BjE0AjE0BjM0AjM0BjC0AjC0BjK0AjK0BjLcAGG8FMN4GYGwDYGwLYGwHYGwPYOwAYLwdwJgCYEwFMKYBGNMBjBkAxo6Ec3GlAOfiAIxVAIxVAYzVAIzVAYw1AIw1AYy1AIy1AYx1AIx1AYz1AIz1AYwNAIwNAYw3ARgbARhvBjA2BjA2ATA2BTA2AzA2BzC2ADC2BDC2AjC2BjDeAmC8FcB4G4CxDYCxLYCxHYCxPYCxA4DxdgBjCoAxFcCYBmBMBzBmABg7AhjvADB2AjB2BjDeCWC8C8B4N4DxHgBjFwBjVwBjNwBjdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QThetdzsz9jdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QSA8VEA42MAxscBjE8AGJ8EMD4FYHwawPgMgPFZAONzAMbnAYwvABhfBDC+BGB8GcD4CoDxVQDjawDG1wGMbwAY3wQwvgVgfBvA+A6A8V0A43sAxvcBjB8AGD8EMH4EYPwYwPgJgPFTAONnAMbPAYxfABi/BDB+BWD8GsD4DYDxWwDjdwDG7wGMPwAYfwQw/gRg/BnA+AuA8VcA428Axt8BjH8AGAMlsj9jDgBjTgBjLgBjbgBjHgBjXgBjPgBjfgBjAQBjQQBjIQBjYQBjEQBjUQDjWQDGYgDG4gDGswGM5wAYzwUwlgAwngdgLAlgPB/AeAGA8UIA40UAxosBjKUAjJcAGEv7wOh9iPQd72PfcWlxOT1jG+qzeplAoIaKmipqqaitoo6KuirqqaivooGKhipuUtFIxc0qGqtooqKpimYqmqtooaKlilYqWqu4RcWtKm5T0UZFWxXtVLRX0UHF7SpSVKSqSFORriJDRUcVd6jopKKzijtV3KXibhX3qOiioquKbiq6q+ihoqeKTBW9VPRW0UdFXxX9VPRXMUDFQBWDVAxWMUTF0DInx2BYGT0oufRfd1Dyh+VqGHI1DblahlxtQ66OIVfXkKtnyNU35BoYcg0NuZsMuUaG3M2GXGNDrokh19SQa2bINTfkWhhyLQ25VoZca0PuFkPuVkPuNkOujSHX1pBrZ8i1N+Q6GHK3G3IphlyqIZdmyKUbchmGXEdD7g5DrpMh19mQu9OQu8uQu9uQu8eQ62LIdTXkuhly3Q25HoZcT0Mu05DrZcj1NuT6GHJ9Dbl+hlx/Q26AITfQkBtkyA025IYYckMNuWEqFwyc/ggdPKrpvwlxFStUyKgUn+EkOClx8cmpSYlxFRJTKyY5SU5iUmJ6fFJCQkZShaRKyanJleKSnQoJGU7HxOSEjvpwdKPcDwo71cv4c3CX1lxZUHMNiOYqgpprQjRXFdRcC6K5mqDm2hDN1QU114ForiGouS5Ec01BzfUgmmsJaq4P0VxbUHMDiOY6gpobQjTXFdR8E0RzPUHNjSCa6wtqvhmiuYGg5sYQzQ0FNTeBaL5JUHNTiOZGgpqbQTTfLKi5OURzY0HNLSCamwhqbgnR3FRQcyuI5maCmltDNDcX1HwLRHMLQc23QjS3FNR8G0RzK0HNbSCaWwtqbgvRfIug5nYQzbcKam4P0XyboOYOEM1tBDXfDtHcVlBzCkRzO0HNqRDN7QU1p0E0dxDUnA7RfLug5gyI5hRBzR0hmlMFNd8B0ZwmqLkTRHO6oObOEM0ZgprvhGjuKKj5LojmOwQ13w3R3ElQ8z0QzZ0FNXeBaL5TUHNXiOa7BDV3g2i+W1Bzd4jmewQ194Bo7iKouSdEc1dBzZkQzd0ENfeCaO4uqLk3RHMPQc19IJp7CmruC9GcKai5H0RzL0HN/SGaewtqHgDR3EdQ80CI5r6CmgdBNPcT1DwYorm/oOYhEM0DBDUPFdScR/VR1KPX+8gdNgZxtg/n5B+h7fvP3sS2G0d2PgquZz9ulOKEFrzre3iZk39HuH9zBE5dJO82vB6WG2G4cP7/4kSJdocw9HJ/JorYujj5OG1CW2qO15qd4WXkxm9EGcEd6uVZcxCJi+4hOn4jDX2lxqWlJzqpFdMrORkpiUlpackJjhOfUjGlYmp8UseM1EQnKTFJ9ZmWEp+kXi4+Jc3JiEupmOEeRIoETu4fwh85hMdgpODBz8s7qoyPwG7n0v2OFpwMfukeXebUAAv1a2SV2Jm4rFIbbKhfyXU0Rnjihw7obr/uaspKJ5gpeIDvJXiAl/ykoQ/QCY7V2+u4cCc41uAEx2WBEyRMlGg37OEQJ9hH0AmOFdwxjhN0gsMhTlBy/MZDneB4n5zghDI+Ak/wwQlOzOZO0NU9EeIEx2lWaScouY4m+eQEJ50BJ9hN8ADfXfAAL3kOuSfQCU7W2+uUcCc42eAEp2SBEyRMlKg/k4E4wZ6CTnCy4I5xiqATHAlxgpLjNxXqBKf65ASnlfEReJoPTnB6NneCru7pECc4RbNKO0HJdTTDJyc44ww4wbsFD/D3CB7gJb8d3BXoBGfq7XVWuBOcaXCCs7LACRImSrQb9miIE+wq6ARnCu4YZwk6wdEQJyg5frOhTnC2T05wThkfgef44ATnZnMn6OqeC3GCszSrtBOUXEfzfHKC886AE+wkeIDvLHiAl7zu8y6gE5yvt9cF4U5wvsEJLsgCJ0iYKNFu2GMhTvAuQSc4X3DHuEDQCY6FOEHJ8VsIdYILfXKCi8r4CLzIBye4OJs7QVf3YogTXKBZpZ2g5Dpa4pMTXHIGnGC64AE+Q/AAL3lHnzuATnCp3l6XhTvBpQYnuCwLnCBhokT9PS2IE7xD0AkuFdwxLhN0guMhTlBy/JZDneByn5zgijI+Aq/wwQmuzOZO0NW9EuIEl2lWaScouY5W+eQEV50BJ3i74AE+RfAAL3mv1jSgE7xXb6+rw53gvQYnuDoLnCBhokS7YU+EOME0QSd4r+COcbWgE5wIcYKS47cG6gTX+OQE15bxEXitD05wXTZ3gq7udRAnuFqzSjtByXW03icnuP4MOMG2ggf4doIHeMlf4egAdIIb9Pa6MdwJbjA4wY1Z4AQJEyXaDXsyxAl2EHSCGwR3jBsFneBkiBOUHL9NUCe4yScnuLmMj8CbfXCCW7K5E3R1b4E4wY2aVdoJSq6jrT45wa1nwAneIniAv1XwAC/5+4ptgE5wm95et4c7wW0GJ7g9C5wgYaJEfe0mxAm2EXSC2wR3jNsFneBUiBOUHL8dUCe4wycnuLOMj8A7fXCCu7K5E3R174I4we2aVdoJSq6j3T45wd1nwAm2EDzAtxQ8wLcSdIKtgU5wj95e94Y7wT0GJ7g3C5wgYaJEu2FPhzjB1oJOcI/gjnGvoBOcDnGCkuO3D+oE9/nkBPeX8RF4vw9O8EA2d4Ku7gMQJ7hXs0o7Qcl1dNAnJ3jwDDjBJoIH+KaCB/hmgk6wOdAJ3qe310PhTvA+gxM8lAVOkDBRot2wZ0KcYHNBJ3if4I7xkKATnAlxgpLjdxjqBA/75ATvL+Mj8P0+OMEHsrkTdHU/AHGChzSrtBOUXEdHfHKCR86AE7xJ8ADfSPAAf7OgE2wMdIJH9fZ6LNwJHjU4wWNZ4AQJEyXq+7lBnGBjQSd4VHDHeEzQCc6GOEHJ8XsQ6gQf9MkJPlTGR+CHfHCCD2dzJ+jqfhjiBI9pVmknKLmOjvvkBI+fASdYT/AAX1/wAN9A0Ak2BDrBR/T2eiLcCT5icIInssAJEiZKtBv2XIgTbCjoBB8R3DGeEHSCcyFOUHL8HoU6wUd9coKPlfER+DEfnODj2dwJurofhzjBE5pV2glKrqMnfHKCT5wBJ1hL8ABfW/AAX0fQCdYFOsEn9fb6VLgTfNLgBJ/KAidImCjRbtjzIU6wrqATfFJwx/iUoBOcD3GCkuP3NNQJPu2TE3ymjI/Az/jgBJ/N5k7Q1f0sxAk+pVmlnaDkOnrOJyf43BlwgtUED/DVBQ/wNQSdYE2gE3xeb68vhDvB5w1O8IUscIKEiRL1bzxAnGBNQSf4vOCO8QVBJ7gQ4gQlx+9FqBN80Scn+FIZH4Ff8sEJvpzNnaCr+2WIE3xBs0o7Qcl19IpPTvCVM+AEbxQ8wFcWPMBXEXSCVYFO8FW9vb4W7gRfNTjB17LACRImSrQb9mKIE6wq6ARfFdwxviboBBdDnKDk+L0OdYKv++QE3yjjI/AbPjjBN7O5E3R1vwlxgq9pVmknKLmO3vLJCb6lnaC7XDJw+kHe+9GP94Sgu3zCs3zMs3zIs7zXs7zds7zRs7zas7zMs7zAszzLszzFszzOszzCs5zsWb7es3yDZ/lGz3Jlz3IVz3JVz3I1vfy2+vuOindVvKfifRUfqPhQxUdlTjrqQnp8/ztXTfY64M9BJ9ZvrN9Yv7F+Y/3G+o31G+s31m+s31i/sX5j/cb6jfUb6zfWb6zfWL+xfmP9nrl+pc+1fFE6+zOOATCOBTCOAzCOBzBOADBOBDBOAjBOBjBOATBOBTBOAzBOBzDOADDOBDDOAjDOBjDOATDOBTDOAzDOBzAuADAuBDAuAjAuBjAuATAuBTAuAzAuBzCuADCuBDCuAjD2KJz9GXsCGDMBjL0AjL0BjH0AjH0BjP0AjP0BjAMAjAMBjIMAjIMBjEMAjEMBjMMAjMMBjCMAjCMBjKMAjKMBjGMAjGMBjOMAjOMBjBMAjBMBjJMAjJMBjFMAjFMBjNMAjNMBjDMAjDMBjLMAjLMBjHMAjHMBjPMAjPMBjAsAjAsBjIsAjIsBjEsAjEsBjMsAjJWKZ3/GJABjMoDxegDjDQDGGwGMlQGMVQCMVQGM1QCM1QGMNQCMNQGMtQCMtQGMdQCMdQGM9QCM9QGMDQCMDQGMNwEYGwEYbwYwNgYwNgEwNgUwNgMwNgcwtgAwtgQwtgIwtgYw3gJgvBXAeBuAsQ2AsS2AsR2AsT2AsQOA8XYAYwqAMRXAmAZgTAcwZgAYOxLOxZXK/oyVAYxVAIxVAYzVAIzVAYw1AIw1AYy1AIy1AYx1AIx1AYz1AIz1AYwNAIwNAYw3ARgbARhvBjA2BjA2ATA2BTA2AzA2BzC2ADC2BDC2AjC2BjDeAmC8FcB4G4CxDYCxLYCxHYCxPYCxA4DxdgBjCoAxFcCYBmBMBzBmABg7AhjvADB2AjB2BjDeCWC8C8B4N4DxHgBjFwBjVwBjNwBjdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QThetdzsz9jdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QSA8VEA42MAxscBjE8AGJ8EMD4FYHwawPgMgPFZAONzAMbnAYwvABhfBDC+BGB8GcD4CoDxVQDjawDG1wGMbwAY3wQwvgVgfBvA+A6A8V0A43sAxvcBjB8AGD8EMH4EYPwYwPgJgPFTAONnAMbPAYxfABi/BDB+BWD8GsD4DYDxWwDjdwDG7wGMPwAYfwQw/gRg/BnA+AuA8VcA428Axt8BjH8AGAMlsj9jDgBjTgBjLgBjbgBjHgBjXgBjPgBjfgBjAQBjQQBjIQBjYQBjEQBjUQDjWQDGYgDG4gDGswGM5wAYzwUwlgAwngdgLAlgPB/AeAGA8UIA40UAxosBjKUAjJcAGEv7wOh9iPQd72PfTlxcTs/Yhvr8uEwg8ImKT1V8puJzFV+o+FLFVyq+VvGNim9VfKfiexU/qPhRxU8qflbxi4pfVfym4ncVf6gIlFWvoyKnilwqcqvIoyKvinwq8qsooKKgikIqCqsooqKoirNUFFNRXMXZKs5Rca6KEirOU1FSxfkqLlBxoYqLVFysopSKS1SUVhFUUUZFWRXlVJRXcamK/6i4TMXlKq4oe3IMriyrByWX/usOSv6w3CeG3KeG3GeG3OeG3BeG3JeG3FeG3NeG3DeG3LeG3HeG3PeG3A+G3I+G3E+G3M+G3C+G3K+G3G+G3O+G3B+GnDvpwnM5DLmchlwuQy63IZfHkMtryOUz5PIbcgUMuYKGXCFDrrAhV8SQK2rInWXIFTPkihtyZxty5xhy5xpyJQy58wy5kobc+YbcBYbchYbcRYbcxYZcKUPuEkOutCEXNOTKGHJlDblyhlx5Q+5SQ+4/htxlhtzlhtwVhpy7QwwGTn/k1H+r6b8JcRUrVMioFJ/hJDgpcfHJqUmJcRUSUysmOUlOYlJienxSQkJGUoWkSsmpyZXikp0KCRlOx8TkhI76eDRQ7geFHXd/LdRXnJ+aBwlq/gSiebCg5k8hmocIav4MonmooObPIZqHCWr+AqJ5uKDmLyGaRwhq/gqieaSg5q8hmkcJav4Gonm0oOZvIZrHCGr+DqJ5rKDm7yGaxwlq/gGiebyg5h8hmicIav4JonmioOafIZonCWr+BaJ5sqDmXyGapwhq/g2ieaqg5t8hmqcJav4Donm6oGb3fAdB8wxBzTkgmmcKas4J0TxLUHMuiObZgppzQzTPEdScB6J5rqDmvBDN8wQ154Noni+oOT9E8wJBzQUgmhcKai4I0bxIUHMhiObFgpoLQzQvEdRcBKJ5qaDmohDNywQ1nwXRvFxQczGI5hWCmotDNK8U1Hw2RPMqQc3nQDTfK6j5XIjm1YKaS0A0rxHUfB5E81pBzSUhmtcJaj4fonm9oOYLIJo3CGq+EKJ5o6DmiyCaNwlqvhiiebOg5lIQzVsENV8C0bxVUHNpiOZtgpqDEM3bBTWXgWjeIai5LETzTkHN5SCadwlqLg/RvFtQ86UQzXsENf8HonmvoObLIJr3CWq+HKJ5v6DmKwQ151F9FPXo9T5yh41BnO3DOflHaPv+szex7caRnY+C69mPG6U4oQXv+r6q7Mm/V7t/vRfJuw2vh+XcJwUDsYkS9cncy/2ZKGLr4uTjtAltqTlea3auKis3flfL7QQdv9ZFTuF1ITl+1xj6So1LS090UiumV3IyUhKT0tKSExwnPqViSsXU+KSOGamJTlJikuozLSU+Sb1cfEqakxGXUjHDPYgUCegb1IQ9cgiPwTWCBz8v77VlfQR2O5fu9zrByeCX7uvKnhpgoX6NrBI7E5dVaoMN9Su5juKEJ37ogO72W0b9zUonuEPwAL9T8AAv+UnDbqATdPT2Gh/uBB2DE4zPAidImChRf90L4gR3CzpBR3DHGC/oBJdDnKDk+CVAnWCCT06wQlkfgSv44AQTs7kTdHUnlj01wEL9+uIE4zWrtBOUXEcVfXKCFc+AE9wieIDfKniAlzyHvB3oBCvp7TUp3AlWMjjBpCxwgoSJEvUXwiFOcLugE6wkuGNMEnSCKyFOUHL8kqFOMNknJ3h9WR+Br/fBCd6QzZ2gq/uGsqcGWKhfX5xgkmaVdoKS6+hGn5zgjWfACW4QPMBvFDzAS347eDPQCVbW22uVcCdY2eAEq2SBEyRMlKgvGYM4wc2CTrCy4I6xiqATvBfiBCXHryrUCVb1yQlWK+snsA9OsHo2d4Ku7uplPQMs068vTrCKZpV2gpLrqIZPTrDGGXCCawQP8GsFD/CS132uBzrBmnp7rRXuBGsanGCtLHCChIkS9UXlECe4XtAJ1hTcMdYSdIJrIE5QcvxqQ51gbZ+cYJ2yPgLX8cEJ1s3mTtDVXbfsqQEW6tcXJ1hLs0o7Qcl1VM8nJ1jvDDjBlYIH+FWCB3jJO/qsBjrB+np7bRDuBOsbnGCDLHCChIkS9W1nIE5wtaATrC+4Y2wg6ATXQZyg5Pg1hDrBhj45wZvK+gh8kw9OsFE2d4Ku7kZlTw2wUL++OMEGmlXaCUquo5t9coI3nwEnuFTwAL9M8AAvea/WFUAn2Fhvr03CnWBjgxNskgVOkDBRor4xHcQJrhB0go0Fd4xNBJ3gBogTlBy/plAn2NQnJ9isrI/AzXxwgs2zuRN0dTcve2qAhfr1xQk20azSTlByHbXwyQm2OANOcKHgAX6R4AFe8lc4lgCdYEu9vbYKd4ItDU6wVRY4QcJEifrWtRAnuETQCbYU3DG2EnSCmyBOUHL8WkOdYGufnOAtZX0EvsUHJ3hrNneCru5by54aYKF+fXGCrTSrtBOUXEe3+eQEbzsDTnCu4AF+nuABXvL3FRcAnWAbvb22DXeCbQxOsG0WOEHCRIn65vYQJ7hA0Am2EdwxthV0glsgTlBy/NpBnWA7n5xg+7I+Arf3wQl2yOZO0NXdoeypARbq1xcn2FazSjtByXV0u09O8PYz4ARnCh7gZwke4GcLOsE5QCeYorfX1HAnmGJwgqlZ4AQJEyXqn7+BOME5gk4wRXDHmCroBLdBnKDk+KVBnWCaT04wvayPwOk+OMGMbO4EXd0ZZU8NsFC/vjjBVM0q7QQl11FHn5xgxzPgBKcKHuCnCR7gpws6wRlAJ3iH3l47hTvBOwxOsFMWOEHCRIn6B/IgTnCGoBO8Q3DH2EnQCe6AOEHJ8esMdYKdfXKCd5b1EfhOH5zgXdncCbq67yp7aoCF+vXFCXbSrNJOUHId3e2TE7z7DDjBiYIH+EmCB/jJgk5wCtAJ3qO31y7hTvAegxPskgVOkDBRov4JXYgTnCLoBO8R3DF2EXSCuyBOUHL8ukKdYFefnGC3sj4Cd/PBCXbP5k7Q1d297KkBFurXFyfYRbNKO0HJddTDJyfY4ww4wbGCB/hxggf48YJOcALQCfbU22tmuBPsaXCCmVngBAkTJdoNew/ECU4QdII9BXeMmYJOcA/ECUqOXy+oE+zlkxPsXdZH4N4+OME+2dwJurr7lD01wEL9+uIEMzWrtBOUXEd9fXKCfc+AExwpeIAfJXiAHy3oBMcAnWA/vb32D3eC/QxOsH8WOEHCRIl2w94HcYJjBJ1gP8EdY39BJ7gP4gQlx28A1AkO8MkJDizrI/BAH5zgoGzuBF3dg8qeGmChfn1xgv01q7QTlFxHg31ygoPPgBMcKniAHyZ4gB8u6ARHAJ3gEL29Dg13gkMMTnBoFjhBwkSJdsM+AHGCIwSd4BDBHeNQQSd4AOIEJcdvGNQJDvPJCQ4v6yPwcB+c4Ihs7gRd3SPKnhpgoX59cYJDNau0E5RcRyN9coIjz4ATHCh4gB8keIAfLOgEhwCd4Ci9vY4Od4KjDE5wdBY4QcJEiXbDvg/iBIcIOsFRgjvG0YJO8D6IE5QcvzFQJzjGJyc4tqyPwGN9cILjsrkTdHWPK3tqgIX69cUJjtas0k5Qch2N98kJjtdO0F0uGTj9IO/96Md7QtD7NTHvxQPeS0q9Nxpxl9t6llt5lpt4lht4lmt5lqt4lpM8y/Ge5as9y2+XObX8jmf5Xc/ye57l9z3LH3iWP/Qsf6SXJ6jXmahikorJKqaomKpimorpZU866kJ6fP87V0MTK+xRTWh9xvqN9RvrN9ZvrN9Yv7F+Y/3G+o31G+s31m+s31i/sX5j/cb6jfUb6zfWb6zf7NGv9LmWL0pnf8YxAMaxAMZxAMbxAMYJAMaJAMZJAMbJAMYpAMapAMZpAMbpAMYZAMaZAMZZAMbZAMY5AMa5AMZ5AMb5AMYFAMaFAMZFAMbFAMYlAMalAMZlAMblAMYVAMaVAMZVAMYehbM/Y08AYyaAsReAsTeAsQ+AsS+AsR+AsT+AcQCAcSCAcRCAcTCAcQiAcSiAcRiAcTiAcQSAcSSAcRSAcTSAcQyAcSyAcRyAcTyAcQKAcSKAcRKAcTKAcQqAcSqAcRqAcTqAcQaAcSaAcRaAcTaAcQ6AcS6AcR6AcT6AcQGAcSGAcRGAcTGAcQmAcSmAcRmAsVLx7M+YBGBMBjBeD2C8AcB4I4CxMoCxCoCxKoCxGoCxOoCxBoCxJoCxFoCxNoCxDoCxLoCxHoCxPoCxAYCxIYDxJgBjIwDjzQDGxgDGJgDGpgDGZgDG5gDGFgDGlgDGVgDG1gDGWwCMtwIYbwMwtgEwtgUwtgMwtgcwdgAw3g5gTAEwpgIY0wCM6QDGDABjR8K5uFLZn7EygLEKgLEqgLEagLE6gLEGgLEmgLEWgLE2gLEOgLEugLEegLE+gLEBgLEhgPEmAGMjAOPNAMbGAMYmAMamAMZmAMbmAMYWAMaWAMZWAMbWAMZbAIy3AhhvAzC2ATC2BTC2AzC2BzB2ADDeDmBMATCmAhjTAIzpAMYMAGNHAOMdAMZOAMbOAMY7AYx3ARjvBjDeA2DsAmDsCmDsBmDsDmDsAWDsCWDMBDD2AjD2BjD2ATD2BTD2AzD2BzAOADAOBDAOAjAOBjAOATAOBTAOAzAOBzCOADCOBDCOAjCOBjCOATCOBTCOAzCOBzBOADBOBDBOAjBOBjBOATBOBTBOAzBOBzDOADDOBDDOAjDOBjDOATDOBTDOAzDOBzAuADAuBDAuAjAuBjAuATAuBTAuAzAuBzCuADCuBDCuAjDeC2BcDWBcA2BcC2BcB2BcD2DcAGDcCGDcBGDcDGDcAmDcCmDcBmDcDmDcAWDcCWDcBWDcDWDcA2DcC2DcB2DcD2A8AGA8CGC8D8B4CMB4GMB4P4DxAQDjEQDjUQDjMQDjgwDGhwCMDwMYjwMYHwEwniBc73pu9mfsDmDsAWDsCWDMBDD2AjD2BjD2ATD2BTD2AzD2BzAOADAOBDAOAjAOBjAOATAOBTAOAzAOBzCOADCOBDCOAjCOBjCOATCOBTCOAzCOBzBOADBOBDBOAjBOBjBOATBOBTBOAzBOBzDOADDOBDDOAjDOBjDOATDOBTDOAzDOBzAuADAuBDAuAjAuBjAuATAuBTAuAzAuBzCuADCuBDCuAjDeC2BcDWBcA2BcC2BcB2BcD2DcAGDcCGDcBGDcDGDcAmDcCmDcBmDcDmDcAWDcCWDcBWDcDWDcA2DcC2DcB2DcD2A8AGA8CGC8D8B4CMB4GMB4P4DxAQDjEQDjUQDjMQDjgwDGhwCMDwMYjwMYHwEwngAwPgpgfAzA+DiA8QkA45MAxqcAjE8DGJ8BMD4LYHwOwPg8gPEFAOOLAMaXAIwvAxhfATC+CmB8DcD4OoDxDQDjmwDGtwCMbwMY3wEwvgtgfA/A+D6A8QMA44cAxo8AjB8DGD8BMH4KYPwMwPg5gPELAOOXAMavAIxfAxi/ATB+C2D8DsD4PYDxBwDjjwDGnwCMPwMYfwEw/gpg/A3A+DuA8Q8AY6BE9mfMAWDMCWDMBWDMDWDMA2DMC2DMB2DMD2AsAGAsCGAsBGAsDGAsAmAsCmA8C8BYDMBYHMB4NoDxHADjuQDGEgDG8wCMJQGM5wMYLwAwXghgvAjAeDGAsRSA8RIAY2kfGL0Pkb7jfezbqRCX0zO2oT5nlA0EZqqYpWK2ijkq5qqYp2K+igUqFqpYpGKxiiUqlqpYpmK5ihUqVqpYpeJeFatVrFGxVsU6FetVbFCxUcUmFZtVbFGxVcU2FdtV7FCxU8UuFbtV7FGxV8U+FftVHFBxUMV9Kg6pOKzifhUPqDii4qiKYyoeVPGQiodVHFfxiIoTKh5V8ZiKx1U8oeJJFU+peLrsyTF4pqwelFz6rzso+cNyMw25WYbcbENujiE315CbZ8jNN+QWGHILDblFhtxiQ26JIbfUkFtmyC035FYYcisNuVWG3L2G3GpDbo0ht9aQW2fIrTfkNhhyGw25TYbcZkNuiyG31ZDbZshtN+R2GHI7DbldhtxuQ26PIbfXkNtnyO035A4YcgcNufsMuUOG3GFD7n5D7gFD7oghd9SQO2bIPWjIPWTIPWzIHTfkHjHkThhyjxpyjxlyjxtyTxhyTxpyTxlyTxty7g4xGDj9kVP/rab/JsRVrFAho1J8hpPgpMTFJ6cmJcZVSEytmOQkOYlJienxSQkJGUkVkiolpyZXikt2KiRkOB0TkxM66uPRAbkfFHbc/bVQX3F+aj4oqHkmRPN9gppnQTQfEtQ8G6L5sKDmORDN9wtqngvR/ICg5nkQzUcENc+HaD4qqHkBRPMxQc0LIZofFNS8CKL5IUHNiyGaHxbUvASi+big5qUQzY8Ial4G0XxCUPNyiOZucl+odVZANHcX1LwSormHoOZVEM09BTXfC9GcKah5NURzL0HNayCaewtqXgvR3EdQ8zqI5r6CmtdDNPcT1LwBorm/oOaNEM0DBDVvgmgeKKh5M0TzIEHNWyCaBwtq3grRPERQ8zaI5qGCmrdDNA8T1LwDonm4oOadEM0jBDXvgmgeKah5N0TzKEHNeyCaRwtq3gvRPEZQ8z6I5rGCmvdDNI8T1HwAonm8oOaDEM0TBDXfB9E8UVDzIYjmSYKaD0M0TxbUfD9E8xRBzQ9ANE8V1HwEonmaoOajEM3TBTUfg2ieIaj5QYjmmYKaH4JoniWo+WGI5tmCmo9DNM8R1PwIRPNcQc0nIJrnCWp+FKJ5vqDmxyCaFwhqfhyieaGg5icgmhcJan4SonmxoOanIJqXCGp+WlBzHtVHUY9e7yN32BjE2T6ck3+Etu8/exPbbhzZ+Si4nv24UYoTWvCu72fLnvz7nPvXe5G82/B6WM59UjAQmyhRX0x8uT8TRWxdnHycNqEtNcdrzc6zZeXG7zm5naDj17rIKbwuJMfveUNfqXFp6YlOasX0Sk5GSmJSWlpyguPEp1RMqZgan9QxIzXRSUpMUn2mpcQnqZeLT0lzMuJSKma4B5EigZP7h/BHDuExeF7w4OflfaGsj8Bu59L9vig4GfzS/WLZUwMs1K+RVWJn4rJKbbChfiXX0UvCEz90QHf7LaP+ZqUTnCt4gJ8neICX/KRhAdAJvqy311fCneDLBif4ShY4QcJEifp2IxAnuEDQCb4suGN8RdAJPgBxgpLj9yrUCb7qkxN8rayPwK/54ARfz+ZO0NX9etlTAyzUry9O8BXNKu0EJdfRGz45wTfOgBOcKXiAnyV4gJc8hzwH6ATf1NvrW+FO8E2DE3wrC5wgYaJEfUMyiBOcI+gE3xTcMb4l6ASPQpyg5Pi9DXWCb/vkBN8p6yPwOz44wXezuRN0db9b9tQAC/XrixN8S7NKO0HJdfSeT07wvTPgBKcKHuCnCR7gJb8dPAPoBN/X2+sH4U7wfYMT/CALnCBhokR9y1KIE5wh6ATfF9wxfiDoBB+EOEHJ8fsQ6gQ/9MkJflTWR+CPfHCCH2dzJ+jq/rjsqQEW6tcXJ/iBZpV2gpLr6BOfnOAnZ8AJThQ8wE8SPMBLXvc5BegEP9Xb62fhTvBTgxP8LAucIGGiRH1Tc4gTnCLoBD8V3DF+JugEH4Y4Qcnx+xzqBD/3yQl+UdZH4C98cIJfZnMn6Or+suypARbq1xcn+JlmlXaCkuvoK5+c4FdnwAmOFTzAjxM8wEve0WcC0Al+rbfXb8Kd4NcGJ/hNFjhBwkSJ+mdPIE5wgqAT/Fpwx/iNoBN8BOIEJcfvW6gT/NYnJ/hdWR+Bv/PBCX6fzZ2gq/v7sqcGWKhfX5zgN5pV2glKrqMffHKCP5wBJzhS8AA/SvAAL3mv1jFAJ/ij3l5/CneCPxqc4E9Z4AQJEyXaDftRiBMcI+gEfxTcMf4k6AQfhThByfH7GeoEf/bJCf5S1kfgX3xwgr9mcyfo6v617KkBFurXFyf4k2aVdoKS6+g3n5zgb2fACQ4VPMAPEzzAS/4KxwigE/xdb69/hDvB3w1O8I8scIKEiRLthv04xAmOEHSCvwvuGP8QdIKPQ5yg5PgFyjGdoJc7LsqHlzdHOR+B3c6l+81ZLns7QVd3znKnBlioX1+coLszcVmlnaDkOspVzh8n6Pab1U5woOABfpDgAV7y9xWHAJ1gbr295ikXON31uQ3hTtB9UjAQmyjRbthPQpzgEEEnmFtwx5hHbsfoPAlxgpLjlxfqBPP65ATzlfMROJ8PTjB/NneCru78ECeYR7NKO0HJdVTAJydY4Aw4wb6CB/h+ggf4/oJOcADQCRbU22uhcCdY0OAEC2WBEyRMlGg37KchTnCAoBMsKLhjLCToBJ+GOEHJ8SsMdYKFfXKCRcr5CFzEBydYNJs7QVd3UYgTLKRZpZ2g5Do6yycneNYZcIKZggf4XoIH+N6CTrAP0AkW09tr8XAnWMzgBItngRMkTJRoN+xnIU6wj6ATLCa4Yywu6ASfhThByfE7G+oEz/bJCZ5Tzkfgc3xwgudmcyfo6j4X4gSLa1ZpJyi5jkr45ARLnAEn2E3wAN9d8ADfQ9AJ9gQ6wfP09loy3AmeZ3CCJbPACRImStS/9gVxgj0FneB5gjvGkoJO8HmIE5Qcv/OhTvB8n5zgBeV8BL7AByd4YTZ3gq7uCyFOsKRmlXaCkuvoIp+c4EVnwAk+XEruAH+8lNwB/pFScvP/RCl/DipC25PRCV6st9dS4U7wYoMTLJUFTpAwUaLdsF+EOMETpeSc4MWCO8ZSgk7wRYgTlBy/S6BO8BKfnGDpcj4Cl/bBCQazuRN0dQchTrCUZpV2gpLrqIxPTrDMGXCCRwUP8McED/APCjrBh4BOsKzeXsuFO8GyBidYLgucIGGiRLthvwxxgg8JOsGygjvGcoJO8GWIE5Qcv/JQJ1jeJyd4aTkfgS/1wQn+J5s7QVf3fyBOsJxmlXaCkuvoMp+c4GVnwAkeFjzA3y94gH9A0AkeATrBy/X2ekW4E7zc4ASvyAInSJgo0W7Yr0Kc4BFBJ3i54I7xCkEn+CrECUqO35VQJ3ilT07wqnI+Al/lgxO8Ops7QVf31RAneIVmlXaCkuvoGp+c4DVnwAkeEDzAHxQ8wN8n6AQPAZ3gtXp7vS7cCV5rcILXZYETJEyUaDfs1yFO8JCgE7xWcMd4naATfB3iBCXHLw7qBON8coJOOR+BHR+cYHw2d4Ku7niIE7xOs0o7Qcl1lOCTE0zQTvDPiwACpx/kvR/9eE8Ier8m5r14wHtJqfdGI+5yHs9y6KbE7vJPnuVvPMufeZY/8Cy/5Vl+xbP8nGd5gmd5omd5kmd5smd5imd5qmd5mmd5ul6uoHQkqqioopKKJBXJKq5XcUO5k466kB7f/85Vk70O+HPQifUb6zfWb6zfWL+xfmP9xvqN9RvrN9ZvrN9Yv7F+Y/3G+o31G+s31m+s31i/Z65f6XMtX5TO/oxjAIxjAYzjAIzjAYwTAIwTAYyTAIyTAYxTAIxTAYzTAIzTAYwzAIwzAYyzAIyzAYxzAIxzAYzzAIzzAYwLAIwLAYyLAIyLAYxLAIxLAYzLAIzLAYwrAIwrAYyrAIw9Cmd/xp4AxkwAYy8AY28AYx8AY18AYz8AY38A4wAA40AA4yAA42AA4xAA41AA4zAA43AA4wgA40gA4ygA42gA4xgA41gA4zgA43gA4wQA40QA4yQA42QA4xQA41QA4zQA43QA4wwA40wA4ywA42wA4xwA41wA4zwA43wA4wIA40IA4yIA42IA4xIA41IA4zIAY6Xi2Z8xCcCYDGC8HsB4A4DxRgBjZQBjFQBjVQBjNQBjdQBjDQBjTQBjLQBjbQBjHQBjXQBjPQBjfQBjAwBjQwDjTQDGRgDGmwGMjQGMTQCMTQGMzQCMzQGMLQCMLQGMrQCMrQGMtwAYbwUw3gZgbANgbAtgbAdgbA9g7ABgvB3AmAJgTAUwpgEY0wGMGQDGjoRzcaWyP2NlAGMVAGNVAGM1AGN1AGMNAGNNAGMtAGNtAGMdAGNdAGM9AGN9AGMDAGNDAONNAMZGAMabAYyNAYxNAIxNAYzNAIzNAYwtAIwtAYytAIytAYy3ABhvBTDeBmBsA2BsC2BsB2BsD2DsAGC8HcCYAmBMBTCmARjTAYwZAMaOAMY7AIydAIydAYx3AhjvAjDeDWC8B8DYBcDYFcDYDcDYHcDYA8DYE8CYCWDsBWDsDWDsA2DsC2DsB2DsD2AcAGAcCGAcBGAcDGAcAmAcCmAcBmAcDmAcAWAcCWAcBWAcDWAcA2AcC2AcB2AcD2CcAGCcCGCcBGCcDGCcAmCcCmCcBmCcDmCcAWCcCWCcBWCcDWCcA2CcC2CcB2CcD2BcAGBcCGBcBGBcDGBcAmBcCmBcBmBcDmBcAWBcCWBcBWC8F8C4GsC4BsC4FsC4DsC4HsC4AcC4EcC4CcC4GcC4BcC4FcC4DcC4HcC4A8C4E8C4C8C4G8C4B8C4F8C4D8C4H8B4AMB4EMB4H4DxEIDxMIDxfgDjAwDGIwDGowDGYwDGBwGMDwEYHwYwHgcwPgJgPEG43vXc7M/YHcDYA8DYE8CYCWDsBWDsDWDsA2DsC2DsB2DsD2AcAGAcCGAcBGAcDGAcAmAcCmAcBmAcDmAcAWAcCWAcBWAcDWAcA2AcC2AcB2AcD2CcAGCcCGCcBGCcDGCcAmCcCmCcBmCcDmCcAWCcCWCcBWCcDWCcA2CcC2CcB2CcD2BcAGBcCGBcBGBcDGBcAmBcCmBcBmBcDmBcAWBcCWBcBWC8F8C4GsC4BsC4FsC4DsC4HsC4AcC4EcC4CcC4GcC4BcC4FcC4DcC4HcC4A8C4E8C4C8C4G8C4B8C4F8C4D8C4H8B4AMB4EMB4H4DxEIDxMIDxfgDjAwDGIwDGowDGYwDGBwGMDwEYHwYwHgcwPgJgPAFgfBTA+BiA8XEA4xMAxicBjE8BGJ8GMD4DYHwWwPgcgPF5AOMLAMYXAYwvARhfBjC+AmB8FcD4GoDxdQDjGwDGNwGMbwEY3wYwvgNgfBfA+B6A8X0A4wcAxg8BjB8BGD8GMH4CYPwUwPgZgPFzAOMXAMYvAYxfARi/BjB+A2D8FsD4HYDxewDjDwDGHwGMPwEYfwYw/gJg/BXA+BuA8XcA4x8AxkCJ7M+YA8CYE8CYC8CYG8CYB8CYF8CYD8CYH8BYAMBYEMBYCMBYGMBYBMBYFMB4FoCxGICxOIDxbADjOQDGcwGMJQCM5wEYSwIYzwcwXgBgvBDAeBGA8WIAYykA4yUAxtI+MHofIn3H+9i3kxSX0zO2oT5vLBcIVFZRRUVVFdVUVFdRQ0VNFbVU1FZRR0VdFfVU1FfRQEVDFTepaKTiZhWNVTRR0VRFMxXNVbRQ0VJFKxWtVdyi4lYVt6loo6KtinYq2qvooOJ2FSkqUlWkqUhXkaGio4o7VHRS0VnFnSruUnG3intUdFHRVUU3Fd1V9FDRU0Wmil4qeqvoo6Kvin4q+qsYUO7kGAwspwcll/7rDkr+sFxlQ66KIVfVkKtmyFU35GoYcjUNuVqGXG1Dro4hV9eQq2fI1TfkGhhyDQ25mwy5RobczYZcY0OuiSHX1JBrZsg1N+RaGHItDblWhlxrQ+4WQ+5WQ+42Q66NIdfWkGtnyLU35DoYcrcbcimGXKohl2bIpRtyGYZcR0PuDkOukyHX2ZC705C7y5C725C7x5DrYsh1NeS6GXLdDbkehlxPQy7TkOtlyPU25PoYcn0NuX6GXH9DboAh5+4Qg4HTH6GDRzX9NyGuYoUKGZXiM5wEJyUuPjk1KTGuQmJqxSQnyUlMSkyPT0pIyEiqkFQpOTW5UlyyUyEhw+mYmJzQUR+PBG927Lj7a6G+4vzULHjzZKcyRLPgzZidKhDNgjd3dqpCNAveLNqpBtEsePNppzpEs+DNrJ0aEM2CN8d2akI0C95s26kF0Sx4826nNkSz4M3AnToQzYI3F3fqQjQL3qzcqQfRLHjzc6c+RLPgzdSdBhDNgjdndxpCNAve7N25CaJZ8ObxTiOIZsGb0Ts3QzQL3tzeaQzRLHizfKcJRLPgzfedphDNgjfzd5pBNAv+OIDTHKJZ8McGnBYQzYI/XuC0hGgW/DEEpxVEs+CPKzitIZoFf6zBuQWiWfDHH5xbIZoFf0zCuQ2iWfDHKZw2EM2CP3bhtIVoFvzxDKcdRLPgj3E47SGaBX/cw+kA0Sz4YyHO7RDNgj8+4qRANAv+mImTCtEs+OMoThpEs+CPrTjpEM2CP97iZEA0C/4YjNMRolnwx2WcOyCaBX+sxukE0Sz44zdOZ4hmwR/Tce6EaBb8cR7nLohmwR/7ce6GaBb88SDnHohmwR8jcrpANAv+uJHTFaJZ8MeSnG4QzYI/vuR0h2gW/DEnpwdEs+CPQzk9IZoFf2zKyYRoFvzxKqcXRLPgj2E5vSGaBX9cy+kD0Sz4Y11OX4hmwR//cvpBNAv+mJjTH6JZ8MfJnAGCmvOoPop69HofucPGIM724Zz8I7R9/9mb2HbjyM5HP36EzvuIsm8ntOBd34PKnfw72P3rvUjebXg9LDfYcOH8/8WJEu0O4c3L/ZkoYuvi5OO0CW2pOV5rdgaVkxu/wXI7QcevdZFTeF1Ijt8QQ1+pcWnpiU5qxfRKTkZKYlJaWnKC48SnVEypmBqf1DEjNdFJSkxSfaalxCepl4tPSXMy4lIqZrgHkSKBk/uH8EcO4TEYInjw8/IOLecjsNu5dL/DBCeDX7qHlTs1wEL9GlkldiYuq9QGG+pXch0NF574oQO6228Z9TcrneCLggf4lwQP8JKfNLwCdIIj9PY6MtwJjjA4wZFZ4AQJEyXaDfttiBN8RdAJjhDcMY4UdIJvQ5yg5PiNgjrBUT45wdHlfAQe7YMTHJPNnaCrewzECY7UrNJOUHIdjfXJCY49A07wWcED/HOCB3jJc8gvAJ3gOL29jg93guMMTnB8FjhBwkSJdsN+F+IEXxB0guMEd4zjBZ3guxAnKDl+E6BOcIJPTnBiOR+BJ/rgBCdlcyfo6p4EcYLjNau0E5RcR5N9coKTz4ATfFLwAP+U4AFe8tvBzwCd4BS9vU4Nd4JTDE5wahY4QcJEiXbDfh/iBJ8RdIJTBHeMUwWd4PsQJyg5ftOgTnCaT05wejkfgaf74ARnZHMn6OqeAXGCUzWrtBOUXEczfXKCM8+AE3xU8AD/mOABXvK6zyeATnCW3l5nhzvBWQYnODsLnCBhokS7YX8IcYJPCDrBWYI7xtmCTvBDiBOUHL85UCc4xycnOLecj8BzfXCC87K5E3R1z4M4wdmaVdoJSq6j+T45wflnwAk+LHiAPy54gJe8o88JoBNcoLfXheFOcIHBCS7MAidImCjRbtgfQ5zgCUEnuEBwx7hQ0Al+DHGCkuO3COoEF/nkBBeX8xF4sQ9OcEk2d4Ku7iUQJ7hQs0o7Qcl1tNQnJ7j0DDjBo4IH+GOCB3jJe7U+BHSCy/T2ujzcCS4zOMHlWeAECRMl2g37U4gTfEjQCS4T3DEuF3SCn0KcoOT4rYA6wRU+OcGV5XwEXumDE1yVzZ2gq3sVxAku16zSTlByHd3rkxO89ww4wcOCB/j7BQ/wkr/CcQToBFfr7XVNuBNcbXCCa7LACRImSrQb9ucQJ3hE0AmuFtwxrhF0gp9DnKDk+K2FOsG1PjnBdeV8BF7ngxNcn82doKt7PcQJrtGs0k5Qch1t8MkJbjgDTvCA4AH+oOABXvL3FQ8BneBGvb1uCneCGw1OcFMWOEHCRIl2w/4S4gQPCTrBjYI7xk2CTvBLiBOUHL/NUCe42ScnuKWcj8BbfHCCW7O5E3R1b4U4wU2aVdoJSq6jbT45wW1nwAnuETzA7xU8wO8TdIL7gU5wu95ed4Q7we0GJ7gjC5wgYaJEu2F/DXGC+wWd4HbBHeMOQSf4NcQJSo7fTqgT3OmTE9xVzkfgXT44wd3Z3Am6undDnOAOzSrtBCXX0R6fnOCeM+AEdwge4HcKHuB3CTrB3UAnuFdvr/vCneBegxPclwVOkDBRot2wv4U4wd2CTnCv4I5xn6AT/BbiBCXHbz/UCe73yQkeKOcj8AEfnODBbO4EXd0HIU5wn2aVdoKS6+g+n5zgfWfACW4RPMBvFTzAbxN0gtuBTvCQ3l4PhzvBQwYneDgLnCBhokS7YX8PcYLbBZ3gIcEd42FBJ/g9xAlKjt/9UCd4v09O8IFyPgI/4IMTPJLNnaCr+wjECR7WrNJOUHIdHfXJCR49A05wg+ABfqPgAX6ToBPcDHSCx/T2+mC4EzxmcIIPZoETJEyUaDfsHyFOcLOgEzwmuGN8UNAJ/ghxgpLj9xDUCT7kkxN8uJyPwA/74ASPZ3Mn6Oo+DnGCD2pWaScouY4e8ckJPnIGnOAawQP8WsED/DpBJ7ge6ARP6O310XAneMLgBB/NAidImCjRbtg/Q5zgekEneEJwx/iooBP8GeIEJcfvMagTfMwnJ/h4OR+BH/fBCT6RzZ2gq/sJiBN8VLNKO0HJdfSkT07wyTPgBFcKHuBXCR7g7xV0gquBTvApvb0+He4EnzI4waezwAkSJkq0G/avECe4WtAJPiW4Y3xa0An+CnGCkuP3DNQJPuOTE3y2nI/Az/rgBJ/L5k7Q1f0cxAk+rVmlnaDkOnreJyf4/BlwgksFD/DLBA/wywWd4AqgE3xBb68vhjvBFwxO8MUscIKEiRLthv07xAmuEHSCLwjuGF8UdIK/Q5yg5Pi9BHWCL/nkBF8u5yPwyz44wVeyuRN0db8CcYIvalZpJyi5jl71yQm+qp2gu1wycPpB3vvRj/eEoPdrYt6LB7yXlHpvNOIub/Isr/EsL/csL/Qsz/YsT/Usj/csj/QsD/YsV/AsJ3qWK3qWK3mWkzzLyZ7l6z3LN+jl11xTpOINFW+qeEvF2yreUfFuuZOOupAe3//OVZO9Dvhz0In1G+s31m+s31i/sX5j/cb6jfUb6zfWb6zfWL+xfmP9xvqN9RvrN9ZvrN9Yv2euX+lzLV+Uzv6MYwCMYwGM4wCM4wGMEwCMEwGMkwCMkwGMUwCMUwGM0wCM0wGMMwCMMwGMswCMswGMcwCMcwGM8wCM8wGMCwCMCwGMiwCMiwGMSwCMSwGMywCMywGMKwCMKwGMqwCMPQpnf8aeAMZMAGMvAGNvAGMfAGNfAGM/AGN/AOMAAONAAOMgAONgAOMQAONQAOMwAONwAOMIAONIAOMoAONoAOMYAONYAOM4AON4AOMEAONEAOMkAONkAOMUAONUAOM0AON0AOMMAONMAOMsAONsAOMcAONcAOM8AON8AOMCAONCAOMiAONiAOMSAONSAOMyAGOl4tmfMQnAmAxgvB7AeAOA8UYAY2UAYxUAY1UAYzUAY3UAYw0AY00AYy0AY20AYx0AY10AYz0AY30AYwMAY0MA400AxkYAxpsBjI0BjE0AjE0BjM0AjM0BjC0AjC0BjK0AjK0BjLcAGG8FMN4GYGwDYGwLYGwHYGwPYOwAYLwdwJgCYEwFMKYBGNMBjBkAxo6Ec3GlAOfiAIxVAIxVAYzVAIzVAYw1AIw1AYy1AIy1AYx1AIx1AYz1AIz1AYwNAIwNAYw3ARgbARhvBjA2BjA2ATA2BTA2AzA2BzC2ADC2BDC2AjC2BjDeAmC8FcB4G4CxDYCxLYCxHYCxPYCxA4DxdgBjCoAxFcCYBmBMBzBmABg7AhjvADB2AjB2BjDeCWC8C8B4N4DxHgBjFwBjVwBjNwBjdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QThetdzsz9jdwBjDwBjTwBjJoCxF4CxN4CxD4CxL4CxH4CxP4BxAIBxIIBxEIBxMIBxCIBxKIBxGIBxOIBxBIBxJIBxFIBxNIBxDIBxLIBxHIBxPIBxAoBxIoBxEoBxMoBxCoBxKoBxGoBxOoBxBoBxJoBxFoBxNoBxDoBxLoBxHoBxPoBxAYBxIYBxEYBxMYBxCYBxKYBxGYBxOYBxBYBxJYBxFYDxXgDjagDjGgDjWgDjOgDjegDjBgDjRgDjJgDjZgDjFgDjVgDjNgDjdgDjDgDjTgDjLgDjbgDjHgDjXgDjPgDjfgDjAQDjQQDjfQDGQwDGwwDG+wGMDwAYjwAYjwIYjwEYHwQwPgRgfBjAeBzA+AiA8QSA8VEA42MAxscBjE8AGJ8EMD4FYHwawPgMgPFZAONzAMbnAYwvABhfBDC+BGB8GcD4CoDxVQDjawDG1wGMbwAY3wQwvgVgfBvA+A6A8V0A43sAxvcBjB8AGD8EMH4EYPwYwPgJgPFTAONnAMbPAYxfABi/BDB+BWD8GsD4DYDxWwDjdwDG7wGMPwAYfwQw/gRg/BnA+AuA8VcA428Axt8BjH8AGAMlsj9jDgBjTgBjLgBjbgBjHgBjXgBjPgBjfgBjAQBjQQBjIQBjYQBjEQBjUQDjWQDGYgDG4gDGswGM5wAYzwUwlgAwngdgLAlgPB/AeAGA8UIA40UAxosBjKUAjJcAGEv7wOh9iPQd72PfTlpcTs/Yhvp8r1wg8L6KD1R8qOIjFR+r+ETFpyo+U/G5ii9UfKniKxVfq/hGxbcqvlPxvYofVPyo4icVP6v4RcWvKn5T8buKP1QEyqvXVpFTRS4VuVXkUZFXRT4V+VUUUFFQRSEVhVUUUVFUxVkqiqkoruJsFeeoOFdFCRXnqSip4nwVF6i4UMVFKi5WUUrFJSpKqwiqKKOirIpyKsqXPzkGl5bXg5JL/3UHJX9Y7n1D7gND7kND7iND7mND7hND7lND7jND7nND7gtD7ktD7itD7mtD7htD7ltD7jtD7ntD7gdD7kdD7idD7mdD7hdD7ldD7jdD7ndD7g9Dzp3E4bkchlxOQy6XIZfbkMtjyOU15PIZcvkNuQKGXEFDrpAhV9iQK2LIFTXkzjLkihlyxQ25sw25cwy5cw25EobceYZcSUPufEPuAkPuQkPuIkPuYkOulCF3iSFX2pALGnJlDLmyhlw5Q668IefuEIOB0x+hg0c1/TchrmKFChmV4jOcBCclLj45NSkxrkJiasUkJ8lJTEpMj09KSMhIqpBUKTk1uVJcslMhIcPpmJic0FEfjwS/7O+4+2uhvuL81Cx48YDzPkSz4MUIzgcQzYIXNzgfQjQLXizhfATRLHjxhfMxRLPgxRzOJxDNgheHOJ9CNAtebOJ8BtEsePGK8zlEs+DFMM4XEM2CF9c4X0I0C16s43wF0Sx48Y/zNUSz4MVEzjcQzYIXJznfQjQLXuzkfAfRLHjxlPM9RLPgxVjODxDNghd3OT9CNAteLOb8BNEsePGZ8zNEs+DFbM4vEM2CF8c5v0I0C15s5/wG0Sx48Z7zO0Sz4MWAzh8QzYIXFzru+VSCZsGLFZ0cEM2CFz86OSGaBS+mdHJBNAtenOnkhmgWvNjTyQPRLHjxqJMXolnwYlQnH0Sz4MWtTn6IZsGLZZ0CEM2CF986BSGaBS/mdQpBNAteHOwUhmgWvNjYKQLRLHjxslMUolnwYmjnLIhmwYurnWIQzYIXazvFIZoFL/52zoZoFryY3DkHolnw4nTnXIhmwYvdnRIQzYIXzzvnQTQLXozvlIRoFry43zkfolnwZgHOBRDNgjcfcC6EaBa8mYFzEUSz4M0RnIshmgVvtuCUgmgWvHmDcwlEs+DNIJzSEM2CN5dwghDNgjercMpANAve/MIpC9EseDMNpxxEs+DNOZzygprzqD6KevR6H7nDxiDO9uGc/CO0ff/Zm9h248jOx2x+ExYntOBd3//RNwm5LPwmIW7D62G5ywwXzv9fnChRfznjCn8miti6OPk4bUJbao7Xmp3/lJcbv8vkdoKOX+sip/C6kBy/yw19pcalpSc6qRXTKzkZKYlJaWnJCY4Tn1IxpWJqfFLHjNREJykxSfWZlhKfpF4uPiXNyYhLqZjhHkSKBPTNY8IeOYTH4HLBg5+X94ryPgK7nUv3e6XgZPBL95XlTw2wUL9GVomdicsqtcGG+pVcR1cJT/zQAd3tt4z6m5VO8HzBA/wFggd4yU8aLgI6wav19npNuBO82uAEr8kCJ0iYKFF/fRPiBC8SdIJXC+4YrxF0gjkhTlBy/K6FOsFrfXKC15X3Efg6H5xgXDZ3gq7uOIgTvEazSjtByXXk+OQEnTPgBM8VPMCXEDzAS55DLgl0gvF6e00Id4LxBieYkAVOkDBRor7AA+IESwo6wXjBHWOCoBPMDXGCkuNXAeoEK/jkBBPL+wic6IMTrJjNnaCruyLECSZoVmknKLmOKvnkBCudASdYTPAAX1zwAC/57eBzgE4wSW+vyeFOMMngBJOzwAkSJkrUl4BCnOA5gk4wSXDHmCzoBPNCnKDk+F0PdYLX++QEbyjvI/ANPjjBG7O5E3R13whxgsmaVdoJSq6jyj45wcpnwAkWFjzAFxE8wEte93kW0AlW0dtr1XAnWMXgBKtmgRMkTJSobxIBcYJnCTrBKoI7xqqCTjA/xAlKjl81qBOs5pMTrF7eR+DqPjjBGtncCbq6a0CcYFXNKu0EJddRTZ+cYM0z4ATzCx7gCwge4CXv6FMI6ARr6e21drgTrGVwgrWzwAkSJkrUt5GCOMFCgk6wluCOsbagEywIcYKS41cH6gTr+OQE65b3EbiuD06wXjZ3gq7uehAnWFuzSjtByXVU3ycnWP8MOMHcggf4PIIHeMl7teYDOsEGenttGO4EGxicYMMscIKEiRL1jSYhTjCfoBNsILhjbCjoBAtDnKDk+N0EdYI3+eQEG5X3EbiRD07w5mzuBF3dN0OcYEPNKu0EJddRY5+cYOMz4AQDggf4HIIHeMlf4cgFdIJN9PbaNNwJNjE4waZZ4AQJEyXqW1FDnGAuQSfYRHDH2FTQCRaFOEHJ8WsGdYLNfHKCzcv7CNzcByfYIps7QVd3C4gTbKpZpZ2g5Dpq6ZMTbHkGnKDQ71X+2ZvY70A6sr+vKPi7hVnmBFvp7bV1uBNsZXCCrbPACRImStQ/VgFxgn+cK+cEWwnuGFsLOsFiECcoOX63QJ3gLT45wVvL+wh8qw9O8LZs7gRd3bdBnGBrzSrtBCXXURufnGCbM+AEfxQ8wP8keID/WdAJ/gJ0gm319tou3Am2NTjBdlngBAkTJeqfs4I4wV8EnWBbwR1jO0EneDbECUqOX3uoE2zvkxPsUN5H4A4+OMHbs7kTdHXfDnGC7TSrtBOUXEcpPjnBlDPgBL8VPMB/J3iA/17QCf4AdIKpentNC3eCqQYnmJYFTpAwUaL+wUuIE/xB0AmmCu4Y0wSd4LkQJyg5fulQJ5jukxPMKO8jcIYPTrBjNneCru6OECeYplmlnaDkOrrDJyd4xxlwgl8KHuC/EjzAfy3oBL8BOsFOenvtHO4EOxmcYOcscIKEiRL1T2JDnOA3gk6wk+COsbOgEzwP4gQlx+9OqBO80ycneFd5H4Hv8sEJ3p3NnaCr+26IE+ysWaWdoOQ6uscnJ3jPGXCCnwoe4D8TPMB/LugEvwA6wS56e+0a7gS7GJxg1yxwgoSJEu2GfT7ECX4h6AS7CO4Yuwo6wfMhTlBy/LpBnWA3n5xg9/I+Anf3wQn2yOZO0NXdA+IEu2pWaScouY56+uQEe54BJ/ih4AH+I8ED/MeCTvAToBPM1Ntrr3AnmGlwgr2ywAkSJkq0G/aFECf4iaATzBTcMfYSdIIXQpyg5Pj1hjrB3j45wT7lfQTu44MT7JvNnaCruy/ECfbSrNJOUHId9fPJCfY7A07wXcED/HuCB/j3BZ3gB0An2F9vrwPCnWB/gxMckAVOkDBRot2wL4Y4wQ8EnWB/wR3jAEEneDHECUqO30CoExzokxMcVN5H4EE+OMHB2dwJuroHQ5zgAM0q7QQl19EQn5zgkDPgBN8UPMC/JXiAf1vQCb4DdIJD9fY6LNwJDjU4wWFZ4AQJEyXaDfsSiBN8R9AJDhXcMQ4TdIKXQJyg5PgNhzrB4T45wRHlfQQe4YMTHJnNnaCreyTECQ7TrNJOUHIdjfLJCY7STtBdLhk4/SDv/ejHe0LQ+zUx78UD3ktKvTcacZdbe5abepYbepZre5arepaTPcsJnuVrPMuXeZZfK3dq+XXP8hue5Tc9y295lt/2LL/jWX5XL49WrzNGxVgV41SMVzFBxUQVk8qfdNQFAqfmUg7PfAp/VBNZn0n/PehIb8Nv+eBmpRnfBjC+A2B8F8D4HoDxfQDjBwDGDwGMHwEYPwYwfgJg/BTA+BmA8XMA4xcAxi8BjF8BGL8GMH4DYPwWwPgdgPF7AOMPAMYfAYw/ARh/BjD+AmD8FcD4G4DxdwDjHwDGQInsz5gDwJgTwJgLwJgbwJgHwJgXwJgPwJgfwFgAwFgQwFgIwFgYwFgEwFgUwHgWgLEYgLE4gPFsAOM5AMZzAYwlAIznARhLAhjPBzBeAGC8EMB4EYDxYgBjKQDjJQDG0j4weh9SnDk9+kN9Ti4fCExRMVXFNBXTVcxQMVPFLBWzVcxRMVfFPBXzVSxQsVDFIhWLVSxRsVTFMhXLVaxQsVLFKhX3qlitYo2KtSrWqVivYoOKjSo2qdisYouKrSq2qdiuYoeKnSp2qditYo+KvSr2qdiv4oCKgyruU3FIxWEV96t4QMURFUdVHFPxoIqHVDys4riKR1ScUPGoisf096UfD78Sxx2Q/GG5qYbcNENuuiE3w5CbacjNMuRmG3JzDLm5htw8Q26+IbfAkFtoyC0y5BYbcksMuaWG3DJDbrkht8KQW2nIrTLk7jXkVhtyawy5tYbcOkNuvSG3wZDbaMhtMuQ2G3JbDLmthtw2Q267IbfDkNtpyO0y5HYbcnsMub2G3D5Dbr8hd8CQO2jI3WfIHTLkDhty9xtyDxhyRwy5o4bcMUPuQUPuIUPuYUPuuCH3iCF3wpB71JB7zJBzd37BwOmPHPpvNf03LrqH4x5kQn3ZXpiR0dF9JDlezpxhnNFe9CH4BXxnSnl/TIG0ZsnLcadCNAteIOBMg2gWvODAmQ7RLHgBgzMDolnyRkszIZoFL7BwZkE0C16w4cyGaBa8AMSZA9EseQvduRDNgheoOPMgmgUveHHmQzQLXkDjLIBolvxxlIUQzYIX+DiLIJoFLxhyFkM0C16A5CyBaJb82culEM2CF0g5yyCaBS+4cpZDNAtewOWsgGgWvCDMWQnRLHiBmbMKolnwgjXnXohmwQvgnNUQzYIX1DlrIJoFL9Bz1kI0C17w56yDaBa8gNBZD9EseEGiswGiWfACR2cjRLPgBZPOJohmwQswnc0QzYIXdDpbIJoFLxB1tkI0C15w6myDaBa8gNXZDtEseEGsswOiWfACW2cnRLPgBbvOLohmwQuAnd0QzYIXFDt7IJoFL1B29kI0C17w7OyDaBa8gNrZD9EseEG2cwCiWfACb+cgRLPgBePOfRDNghegO4cgmgUvaHcOQzQLXiDv3A/RLHjBvfMARLPgBfzOEYhmwRsCOEchmgVvMOAcg2gWvGGB8yBEs+ANEJyHIJoFb6jgPAzRLHiDBuc4RLPgDR+cRyCaBW8g4ZyAaBa8IYXzKESz4A0unMcENbs//lUwcPJaZveRw6M5/CHzmrEf/8rujLEf/5JhjP34lwxj7Me/ZBhjP/4lwxj78S8ZxtiPf8kwxn78S4Yx9uNfMoyxH/+SYYz9+JcMY+zHv2QYYz/+JcMY+/EvGcbYj3/JMMZ+/EuGMfbjXzKMsR//kmGM/fiXDGPsx79kGGM//iXDGPvxLxnG2I9/yTDGfvxLhjH2418yjLEf/5JhjP34lwxj7Me/ZBhjP/4lwxj78S8ZxtiPf8kwUn78y7e+4+PicnjGNtTnE+UDgSdVPKXiaRXPqHhWxXMqnlfxgooXVbyk4mUVr6h4VcVrKl5X8YaKN1W8peJtFe+oeFfFeyreV/GBig9VfKTiYxWfqPhUxWcqPlfxhYovVXyl4msV36j4VsV3Kr5X8YOKH1X8pOJnFb+o+FXFbyp+V/GHisClSpOKnCpyqcitIo+KvCryqcivooCKgioKqSisooiKopcGTv+RnT+fHJbLb8gVMOQKGnKFDLnChlwRQ66oznkf0hvFEz794I8055M+fQFbmvMpCOfTEM5nIJzPQjifg3A+D+F8AcL5IoTzJQjnyxDOVyCcr0I4X4Nwvg7hfAPC+SaE8y0I59sQzncgnO9CON+DcL4P4fwAwvkhhPMjCOfHEM5PIJyfQjg/g3B+DuH8AsL5JYTzKwjn1xDObyCc30I4v4Nwfg/h/AHC+SOE8ycI588Qzl8gnL9COH+DcP4O4fwDwul+wYLAmQPCmRPCmQvCmRvCmQfCmdcnztzRcjqn/zNfdJyn9ZY/Ws2e3gpcGv33qkI3dQxekU3XRdzpqgtKzBndWyGZ+fdnb4UF10WZ7L0u4kKqi8htv05Rwb4E57LjXRdRfXfR3S+rPooGTt2Q1Zd14/PcjovmkX3njB9ftv7vPsu7vs+69OTfYuFfCnYbXg/LuU8KBmITJdodannCDjVsQltqjteanbMEx6+Y4Ebr17rIKbwuJMevuKGv1Li09EQntWJ6JScjJTEpLS05wXHiUyqmVEyNT+qYkZroJCUmqT7TUuKT1MvFp6Q5GXEpFTPcg0iRwCkz7n2IX8UruIP18p59qY/Abufil+EKTga/dJ9z6akBFurXyCqxM3FZpTbY//4MlOA6Old44ocO6G6/ZdTfrHSC+QQP8PkFD/AFBA8qBS/156AitD0ZnWAJvb2eF+4ESxic4Hl+OkENWVDQfZQQ3BjP8/QVn56YEZeclJoUn5qSUCm1QkJqcnKK6rei4yR1TI+PS68Q3zHRqVgxLTkjuaOT0DE1MSOlYmJKcsX0P4+e6UGI+5Acv5JQ91HSJ/dx/qU+Ap/vg/u4IJu7D1f3BRD3cZ5mlXYfkuvoQp/cx4XafXgf0uN7kQB7koe9pGa8SB8A3eXuBbLv8nkezmKe5dHlTy2P8SyP9SyP8yyP9yxP8CxP9CxP0ssXq9cppeISFaXd13TXs4qyKspd+leXKb39lxOcryFTU171eamK/6i4TDsk71wub7iW/VJD7j+G3GWX/vWad2kzVU7y4yuBvk5ePx/nXCrI9R+fzFSusHURjWZ3XfxHZPxOrtfLBN+1SI6f39t4WR+28ctVn1eouFLFVYZt/HLDtnuFIXelIXdVFmzjZQW3pcsFt/ErJLkg2/iVgtv4VYLb+OWgbbyMD9v41arPa1Rcq+I6wzZ+tWHbvcaQu9aQuy4LtvEygtvS1YLb+DWCXFdCtvFrBbfx6wS38StB23jQh208TvXpqIhXkWDYxuMM265jyMUbcglZsI0HBbelOMFt3JHc90C28XjBbTxBcBu/GrSNl/ZhG6+g+kxUUVFFJcM2XsGw7SYachUNuUpZsI2XFtyWKghu44mCXNdCtvGKgtt4JcFt/FrQNn6JD9t4kuozWcX1Km4wbONJhm032ZC73pC7IQu28UsEt6UkwW08WdJfQLbx6wW38RsEt/E40DZeyodt/EbVZ2UVVVRUNWzjNxq23cqGXBVDrmoWbOOlBLelGwW38cqCXPGQbbyK4DZeVXAbjwdt4xf7sI1XU31WV1FDRU3DNl7NsO1WN+RqGHI1s2Abv1hwW6omuI1Xl3wPAdnGawhu4zUFt/EKkC9y5c4lN2dqCY6fd5uupb+nkEdFYc8c8j6k93tHcwp/uStnwPiQeo1Yv7F+Y/3G+o31G+s31m+s31i/sX5j/cb6jfUb6zfWb6zfWL+xfmP9xvqN9Zs9+pX+vPqL0tmfcQyAcSyAcRyAcTyAcQKAcSKAcRKAcTKAcQqAcSqAcRqAcTqAcQaAcSaAcRaAcTaAcQ6AcS6AcR6AcT6AcQGAcSGAcRGAcTGAcQmAcSmAcRmAcTmAcQWAcSWAcRWAsUfh7M/YE8CYCWDsBWDsDWDsA2DsC2DsB2DsD2AcAGAcCGAcBGAcDGAcAmAcCmAcBmAcDmAcAWAcCWAcBWAcDWAcA2AcC2AcB2AcD2CcAGCcCGCcBGCcDGCcAmCcCmCcBmCcDmCcAWCcCWCcBWCcDWCcA2CcC2CcB2CcD2BcAGBcCGBcBGBcDGBcAmBcCmBcBmCsVDz7MyYBGJMBjNcDGG8AMN4IYKwMYKwCYKwKYKwGYKwOYKwBYKwJYKwFYKwNYKwDYKwLYKwHYKwPYGwAYGwIYLwJwNgIwHgzgLExgLEJgLEpgLEZgLE5gLEFgLElgLEVgLE1gPEWAOOtAMbbAIxtAIxtAYztAIztAYwdAIy3AxhTAIypAMY0AGM6gDEDwNiRcC6uFOBcHICxCoCxKoCxGoCxOoCxBoCxJoCxFoCxNoCxDoCxLoCxHoCxPoCxAYCxIYDxJgBjIwDjzQDGxgDGJgDGpgDGZgDG5gDGFgDGlgDGVgDG1gDGWwCMtwIYbwMwtgEwtgUwtgMwtgcwdgAw3g5gTAEwpgIY0wCM6QDGDABjRwDjHQDGTgDGzgDGOwGMdwEY7wYw3gNg7AJg7Apg7AZg7A5g7AFg7AlgzAQw9gIw9gYw9gEw9gUw9gMw9gcwDgAwDgQwDgIwDgYwDgEwDgUwDgMwDgcwjgAwjgQwjgIwjgYwjgEwjgUwjgMwjgcwTgAwTgQwTgIwTgYwTgEwTgUwTgMwTgcwzgAwzgQwzgIwzgYwzgEwzgUwzgMwzgcwLgAwLgQwLgIwLgYwLgEwLgUwLgMwLgcwrgAwrgQwrgIw3gtgXA1gXANgXAtgXAdgXA9g3ABg3Ahg3ARg3Axg3AJg3Apg3AZg3A5g3AFg3Alg3AVg3A1g3ANg3Atg3Adg3A9gPABgPAhgvA/AeAjAeBjAeD+A8QEA4xEA41EA4zEA44MAxocAjA8DGI8DGB8BMJ4gXO96bvZn7A5g7AFg7AlgzAQw9gIw9gYw9gEw9gUw9gMw9gcwDgAwDgQwDgIwDgYwDgEwDgUwDgMwDgcwjgAwjgQwjgIwjgYwjgEwjgUwjgMwjgcwTgAwTgQwTgIwTgYwTgEwTgUwTgMwTgcwzgAwzgQwzgIwzgYwzgEwzgUwzgMwzgcwLgAwLgQwLgIwLgYwLgEwLgUwLgMwLgcwrgAwrgQwrgIw3gtgXA1gXANgXAtgXAdgXA9g3ABg3Ahg3ARg3Axg3AJg3Apg3AZg3A5g3AFg3Alg3AVg3A1g3ANg3Atg3Adg3A9gPABgPAhgvA/AeAjAeBjAeD+A8QEA4xEA41EA4zEA44MAxocAjA8DGI8DGB8BMJ4AMD4KYHwMwPg4gPEJAOOTAManAIxPAxifATA+C2B8DsD4PIDxBQDjiwDGlwCMLwMYXwEwvgpgfA3A+DqA8Q0A45sAxrcAjG8DGN8BML4LYHwPwPg+gPEDAOOHAMaPAIwfAxg/ATB+CmD8DMD4OYDxCwDjlwDGrwCMXwMYvwEwfgtg/A7A+D2A8QcA448Axp8AjD8DGH8BMP4KYPwNwPg7gPEPAGOgRPZnzAFgzAlgzAVgzA1gzANgzAtgzAdgzA9gLABgLAhgLARgLAxgLAJgLApgPAvAWAzAWBzAeDaA8RwA47kAxhIAxvMAjCUBjOcDGC8AMF4IYLwIwHgxgLEUgPESAGNpHxj94Mydyx/O/z5yCgPXuvRUXwlxFStUyKgUn+EkOClx8cmpSYlxFRJTKyY5SU5iUmJ6fFJCQkZShaRKyanJleKSnQoJGU7HxOSEjrqz2pcKflCq+silV5DbbzBsHMJXXLTsdTzsTsVUJ65SSkJGpY6piSnp8ckZyQnplTIyKiampKSkpiSnpKkeO6Ymp6anp6QkqicnVnQ6VqgUVyE10UmqUCEtt+qjkzsGuj+378ZqxXUvwIyAXhedAn99VBNa33+3XuOiezhDCwBOCgQEGakrajhgRdW6NLainJGAFdW9AGdFMQbBJ8a6oC3Kt0EYCFhR9WIrKs4ZDFhR9WMriuH6GsRWFMP1NYytKIbruym2ouKc0YAV1Si2ouKcsYAVdXNsRcU54wErqnFsRcU5EwErqklsRcU5kwErqmlsRcU5UwErqllsRcU50wErqnlsRcU5nXNmf8YWsRUV58wCbFEtYysqzkkHbFGtYisqzpkL2KJax1ZUnDMfsKJuia2oOGchYEXdGltRcc5iwIq6Lbai4pylgBXVJrai4pzlgBXVNrai4pyVgBXVLrai4px7ASuqfWxFxTlrACuqQ2xFxTnrACvq9tiKinM2AFZUSmxFqQ88AZ/1pcZWVJyzGbBFpcVWVJyzFbCi0mMrKs7ZDlhRGbEVFefsBKyojpfKMxpBo70s9w4x0Pg46oS649Lsz9iJMqE6y00oB/sdFMCEupMyoe6Sm1Dx1Al1F2BC3U2ZUPfITagE6oS6BzChulAmVFe5CVWBOqG6AiZUN8qE6i43oRKxN1cATKgelAnVU25CVaROqJ6ACZVJmVC95CZUJeqE6gWYUL0pE6qP3IRKok6oPoAJ1ZcyofrJTahk6oTqB5hQ/SkTaoDchEqhTqgBgAk1kDKhBslNqFTqhBoEmFCDYydd45z6gC8GDaFs+UPltvx07B3kAFv+MMqEGi43oTKwd7oDTKgRlAk1Um5CdcTekQ8woUb5NaFyCk8oSdFXBPwRLa1Z8LbzzpVZpDkuuodzleD4vZmTsZ5zCY7f1QGG5tyCmq+BzO1rBcevoU9zW/oAc12AwRkH4XQgnPEQzgQIZwUIZyKEsyKEsxKEMwnCmQzhvB7CeQOE80YIZ2UIZxUIZ1UIZzUIZ3UIZw0IZ00IZy0IZ20IZx0IZ10IZz0IZ30IZwMIZ0MI500QzkYQzpshnI0hnE0gnE0hnM0gnM0hnC0gnC0hnK0gnK0hnLdAOG+FcN4G4WwD4WwL4WwH4WwP4ewA4bwdwpkC4UyFcKZBONMhnBkQzo4QzjsgnJ0gnJ0hnHdCOO+CcN4N4bwHwtkFwtkVwtkNwtkdwtkDwtlTmFOa77mcgcDzOeW/i57p6Sva76K7fNl9DF/wYQx7CY7hC4AxfNGHMewtOIYvAsbwJR/GsI/gGL6U05/9trTmvmJ9JcQ/lzP68cvo6D7SOno1i9+OJ8A4pvaHcA6AcA6EcA6CcA6GcA6BcA6FcA6DcA6HcI6AcI6EcI6CcI6GcI6BcI6FcI6DcI6HcE6AcE6EcE6CcE6GcE6BcE6FcE6DcE6HcM6AcM6EcM6CcM6GcM6BcM6FcM6DcM6HcC6AcC6EcC6CcC6GcC6BcC6FcC6DcC6HcK6AcK6EcK6CcN4L4VwN4VwD4VwL4VwH4VwP4dwA4dwI4dwE4dwM4dwC4dwK4dwG4dwO4dwB4dwJ4dwF4dwN4dwD4dwL4dwH4dwP4TwA4TwI4bwPwnkIwnkYwnk/hPMBCOcRnzhzCnMe9fQV7fUxJ3IyNB8T1Hw0J2M+PhhgcD4E4XwYwnkcwvkIhPMEhPNRCOdjEM7HIZxPQDifhHA+BeF8GsL5DITzWQjncxDO5yGcL0A4X4RwvgThfBnC+QqE81UI52sQztchnG9AON+EcL4F4XwbwvmOT5zSn1G+G5D7jLLupQzN7wlqrgfR/L6g5voQzR8Iam4A0fyhoOaGEM0fCWq+CaL5Y0HNjSCaPxHUfDNE86eCmhtDNH8mqLkJRPPngpqbQjR/Iai5GUTzl4Kam0M0fyWouQVE89eCmltCNH8jqLkVRPO3gppbQzR/J6j5Fojm7wU13wrR/IOg5tsgmn8U1NwGovknQc1tIZp/FtTcDqL5F0HN7SGafxXU3AGi+TdBzbdDNP8uqDkFovkPQc2pEM3uiTopzWkQzTkENadDNOcU1JwB0ZxLUHNHiObcgpo7QTTnEdR8J0RzXkHNd0M05xPU3AWiOb+g5m4QzQUENfeAaC4oqDkTormQoObeEM2FBTX3hWguIqi5P0RzUUHNAyGazxLUPBiiuZig5iEQzcUFNQ+DaD5bUPMIiOZzBDWP8kmz9PfMz83B4CwB4TwPwlkSwnk+hPMCCOeFEM6LIJwXQzhLQTgvgXCWhnAGIZxlIJxlIZzlIJzlIZyXQjj/A+G8DMJ5OYTzCgjnlRDOqyCcV0M4r4FwXgvhvA7CGQfhdCCc8RDOBAhnBQhnIoSzIoSzEoQzCcKZDOG8HsJ5A4TzRghnZQhnFQhnVQhnNQhndQhnDQhnTQhnLQhnbQhnHQhnXQhnPQhnfQhnAwhnQwjnTRDORhDOmyGcjSGcTSCcTSGczSCczSGcLSCcLSGcrSCcrSGct0A4b4Vw3gbhbAPhbAvhbAfhbA/h7ADhvB3CmQLhTIVwpkE40yGcGRDOjhDOOyCcnSCcnSGcd0I474Jw3g3hvAfC2QXC2RXC2Q3C2R3C2QPC2RPCmQnh7AXh7A3h7APh7Avh7Afh7A/hHADhHAjhHAThHAzhHALhHArhHAbhHA7hHAHhHAnhHAXhHA3hHAPhHAvhHAfhHA/hnADhnAjhnAThnAzhnALhnArhnAbhnA7hnAHhnAnhnAXhnA3hnAPhnAvhnAfhnA/hXADhXAjhXAThXAzhXALhXArhXAbhXA7hXAHhXAnhXAXhvBfCuRrCuQbCuRbCuQ7CuR7CuQHCuRHCuQnCuRnCuQXCuRXCuQ3CuR3CuQPCuRPCuQvCuRvCuQfCuRfCuQ/CuR/CeQDCeRDCeR+E8xCE8zCE834I5wMQziMQzqMQzmMQzgchnA9BOB+GcB73iTOnMOcjHs5of2M4Ry6G5hOCmmv79LvKucM0R8t56aXR95XR0X3EOf8R6stdF5ddKqex4hXZe11knAR1Lo9ec7zW7FwRbV8V/jt+zpWC66JS9l0XcR5O56poNMefptm52r6vuLDxc64RXBdJ2XBdVOz4F07nWjvNSQbNznU2fSUZx8+JE1wXydlrXVT6G07HiVRzpb/V7MRH1lf8P4yfkyC4Lq7PLuui0j9yOhX+vea0/6HZSfy3fVX6n+PnVBRcFzec+XUR9y84nUr/RnPcv9LsJP3vvhL/5fg5yYLr4sYzuS4q/GtO5/p/1FyhYwSanRv+qa9KEY2fc6Pguqh8ZtZFUoScTuW/0ZzcMWLNThVzX3EW4+dUFVwXVbJ6XcRZcTrV/qrZsdTsVA/vK916/Jwaguuiatati4QoOJ2acp8POILvbx3v+7No10W1LFoXcdE9HMH3QY6gj3euF1wX1SHrQtDvOYJ+xaksuC5qQNaF4HHNEdwvO9UE10VNyLp4VO68gSO4L3AE57Lj17qQPk/wmOB5gtw+nRuRPm/1uIDmP88TpHdM/6d1E+14HhPU/ATknOKTEM6nIJxPQzifgXA+C+F8DsL5PITzBQjnixDOlyCcL0M4X4FwvgrhfA3C+TqE8w0I55sQzrcgnG9DON+BcL4L4XwPwvk+hPMDCOeHEM6PIJwfQzg/gXB+CuH8DML5OYTzCwjnlxDOryCcX0M4v4Fwfgvh/A7C+T2E8wcI548Qzp8gnD9DOH+BcP4K4fwNwvk7hPMPCKf7JQYCZw4IZ04IZy4IZ24IZx4IZ14IZz4IZ34IZwEIZ0EIZyEIZ2EIZxEIZ1EI51kQzmIQzuIQzrMhnOdAOM+FcJaAcJ4H4SwJ4TwfwnkBhPNCCOdFEM6LIZylIJyXQDhLQziDEM4yEM6yEM5yEM7yEM5LIZz/gXBe5hNnzjDOaK9ZzSOo+fIs0hwX3cO5Iqfc+L0DWc/5BMfvSojm/IKar4JoLiCo+WqI5oKCmq+BaC4kqPlayH77OsH99vuQ9VxEcPziIOvZEVzPH0HW81mC4xcPWc8Jguv5U8h6Li44fhUg6zlRcD1/AVnP5wiOX0WI5nMFNVeCaC4hqDkJovk8Qc3JkH3Y9YL7sK8h6/l8wfG7AaL5AkHNN0I0XyiouTJE80WCmqtANF8sqLkqRHMpQc3VIJovEdRcHXJ8riF4fP4OormmoOYfIZprCWr+BaK5tqDm3yH7sHKC41cHorm8oOa6EM2XCmquJ6jZ/T5A6D7qV3j059BjkEu3u+fP86pwz6+65xvd82/u+Sj3/ExhFe7n90VVuJ/vFlPhfv53tgr38yH38xL38wP3/XRJFe77Lff9h+vHXX/q+jXXv7jH89IqgirKqCirwt0+3Pnijt9/VFym4nIPZzDnKfYrVVyl4moV16i4VsV17hipcFTEu+tRRQUViSoqqqikIklFsorrVdyg4kYVlVVUUVFVr7fqKmqoqKmiloraKuqoqKuinor6KhqoaKjiJhWNVNysorGKJiqaqmimormKFipaqmilorWKW1TcquI2FW1UtFXRTkV7FR1U3K4iRUWqijQV7s29M1R0VHGHik4qOqu4U8VdKu5WcY+KLiq6quimoruKHip6qshU0UtFbxV9VPRV0U9FfxUDVAxUMUjFYBVDVAxVMUzFcBUjVIxUMUrFaBVjVIxVMU7FeBUTVExUMUnFZBVTVExVMU3FdBUzVMxUMUvFbBVzVMxVMU/FfBULVCxUsUjFYhVLVCxVsUzFchUrVKxUsUrFvSpWq1ijYq2KdSrWq9igYqOKTSo2q9iiYquKbSq2q9ihYqeKXSp2q9ijYq+KfSr2qzig4qCK+1QcUnFYxf0qHlBxRMVRFe490B9U8ZCKh1UcV/GIihMqHlXxmIrHVTyh4kkVT6l4WsUzKp5V8ZyK51W8oOJFFS+peFnFKypeVfGaitdVvKHiTRVvqXhbxTsq3lXxnor3VXyg4kMVH6n4WMUnKj5V8ZmKz1V8oeJLFV+p+FrFNyq+VfGdiu9V/KDiRxU/qfhZxS8qflXxm4rfVfyhwt0Z5FCRU0UuFblV5FGRV0U+FflVFFBRUEUhFYVVFFFRVMVZKoqpKK7ibBXnqDhXRQkV56koqeJ8FReouFDFRSouVlFKxSUqSqsIqiijoqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"7N3briRLsp3nd1nXvMiD54mvIggCJVECAYEUROqK4Lureq/OWdXtnpldMls+LTy+u90bgbly/sMqw8YfVeH//Y///T/+r//v//m//Kf//H/8l//6x7//n/77H//Xf/nf/sN/+0//5T//+F///Y9j+7f/33/9v//Df/7b//yv/+0//D//7Y9/f7yd2r/74z/+5//9b//nuf2Pf/fH//Gf/q//+Me/vx3/x7/rLj7dLs+LT7fb9evi46kNrj638+XvV58vh/uHq4+H2+3w/CSH2/3nRzkdD6Pr77fT8/L74/h19Xn4w4/H50c5Hq/t14v/53/3x/GCzAsyV2RekLmFyZzv5/vzd73ffl58vF/+7b9w/8v/C494usfDk+jpeD79/C+06zCv4/krrsuvV9//9nlOh9mf53R58jn+GM5/+Dyj6Tl+fZDHL9NzOpyHP/vn1adfJ/NwGlx9/Zrj++3yy7XDKT6cHtcvjOfD49PUt8PXb9lOt8jUn44SKp7QSULFEzpL6F9K6Hz+ebM4t9u8e/upSah4QpeVEjr+ktDjU0LHy+n885e8fbr6GzO61s7o1r56yeHwMaPz19XHy/H882c/HsWo31D/Bur376R+v3dNKqPZff0XTqfz4cPnOV0e56+Wf7x/7IHfltT5gMwLMgnd7tS+ftd/nMrrv/0XErrJDyv0/C+cf9lQXtC83H5+f9wf//D98bfPcy72eVqxz5OwZZ3vX99q7XT+8Hna6dnJ2vXYfZprqU9zK/Vp7qU+TcLd59wePz9N++dvkjb+Fj+3Lxt8/uVjDf8LP4zy8ecd9Jc/KT9+97/9F45/+X/h9Jf/F85/+X+hxf8LP25yXxffD//wXxjdYe5f++Pp8evzgeHP/nFP/LrhPX4+eziPb4+Py+Nna7t++tn345dAup9+8Uf/djNtF2DGYK7AjMHcdgzm/HVnuP+68v4J5g7MGMwDmCGYy2G/YG63208w938Gc1wIzOnnw+TTPzxM/v/x5Xs5ATMGcwZmDKbtGMzbL9+VNt9UMCttvqlgVtp8fxPM+9v1Ypvv/SeY8z/87L/9rosts+9+1+tK++npcP0ydcfDx5/99qZ6XWs/TQSz1n6aCGat/fT3wLy7qV4bMGMwa+2niWDW2k9/C8zbNey6mJm9/wTz6FaTVVfO0e+60sp5Op4uX7/rNeY2bkvtp5lgltpPM8EstZ/+Jph3N9XbUvtpJpgGzBjMUvvp74F5u4bdFvubAz9Xk2tniG7LrpyD33X6yvnzb5Wf2vny6Xf9vn8pdnsgMyZzPyDzgswRmRdkTsi8IHNG5gWZhswLMhdkXpC5IvOCzA2ZF2TswK/I2IFfkHnYgV+RsQO/ImMHfkWm+g78bf8u+NGQeUGm0g78t8+TsXl+Cdsff7g+fZ7NvJ/hcUPmBZmMzfPno8F/JvO3/8KLfw18+Br82y9f3cP/wv38/HV/fV4y/j44P563hPbLuxlOQ+6P2xeax+0XMz2mfv6S3r/+5PFzj9v967nH7fH4EFDiWykPL15v8TPO2+0D7NOlff1D8Mv1l781cR5d/eOK5+Rebsdfwv/bPxYefIFd7l/PAn4M1u0frv+3X+C49V/glPALPJ7/6Pp0bccPv8Dt8fWH4/hzHh6jt++0r1extsvPZzy30bC3w+n557Mdbr/+Qfrztzyv8Vsez19/po+/vqjr779l20WWl11ked1FlrddZHlf4rc8375ernG+3f/5L4IcD4/Jv+X9fvy5hJ7f/5rX2zOg2+2Xvy5w+TOg42HyR//xVf3zReC//EWT4We/XL7+DF0urYVv+cfjrn7bjwvO/fChMZyvt59z//PTj1b00+n482Vrv/SE43VYpE4/XzB+On36ayz7rgrH89Qcjz9fg3c6fsrxcXk8f/Ljerx+mNnH/fr8w/N4HA79xLbd/KaX3fym1938prdVftMf3fjafm4Yx1P/u9539Ls+1vldr5efj22ut/OH6/d93z0dFs391xe+/n3GT8cd/a6nHf2uy+yOfzs26usZ8uF+7r+nT8tsj//C77rM/vgv/K7LbJD/wu+60A758XddaIf8+LsutEN++l3PC+1NH3/Xhfamj7/rQnvTx991R3vTeUd703lHe9N5R3vTeUd703lHe9N5R3tT29He1Ha0N7Ud7U1tR3tT29He1Ha0N7Ud7U1tR3tT29He1Ha0N112tDdddrQ3XXa0N112tDdddrQ3XXa0N112tDdddrQ3XXa0N112tDddd7Q3XXe0N113tDddd7Q3XXe0N113tDddd7Q3XXe0N113tDddd7Q33Xa0N912tDfddrQ33Xa0N912tDfddrQ33Xa0N912tDfddrQ33Xa0N913tDfdd7Q33Xe0N913tDfdd7Q33Xe0N913tDfdd7Q33Xe0N913tDc9drQ3PXa0Nz12tDc9drQ3PXa0Nz12tDc9drQ3PXa0Nz12tDc99rM3nQ772ZtOh7l70+nrNbun868HxQ5/1/vpCeZ+aR+uPV/a8+Lz5ZfX8o6Obrhfn+8Qu//yWrC//dx/I3JC5J+InBH5JyKtLpHj4ZfXEv564Mzw6t95Zff58MTXzsefUE7XwcWX01cwl9Mvrzv+cfG/AbwAGAN4BTAG8AZgDOAdwBjAB4AhgMcDgDGAhZf/bQAs3BW2AbBwtdgGwAZgDKAmEgSoiQQBaiJBgJpIEKAmEgN40kSCADWRIEBNJAhQEwkCbADGAGoiQYCaSBCgJhIEqIkEAWoiMYBnTSQIUBMJAtREggA1kSDABmAMoCYSBKiJBAFqIkGAmkgQoCYSA9g0kSBATSQIUBMJAtREggAbgDGAmkgQoCYSBKiJBAFqIkGAmkgM4EUTCQLURIIANZEgwF02kevl+Lz2er11TBomHZNd9oUPTHZZAT4w2eVWfzs8P0a7HXsmu1zUPzDZ5e79nsl1l+v0Bya73JA/MNnl0vv+vnO1x/ZMGiYdE3tsz2SXe+yH71h7bM/EHtszscd2TG722J6JPbZnsss99gOTXe6xH5g0TDomu9xjPzCxx/ZM7LE9E3tsz8Qe2zG573KPfe8K7rvcYz8w4WN7Jnxsz6T5ju2Y2GN7JvbYnok9tmdij+2Z2GM7Jg8+tmfCx/ZM+NieCR/bM2mYdEzssT0Te2zPxB7bM9nlHvveFTx2uce+ZXI+8LE9Ez62Z2KP7ZnYY3smDZOOiT22Z2KP7ZnYY3smfGzPhI/tmOzzeM0PTPjYnok9tmdij+2ZNEw6JvbYnon3FfRMdrnHfmDCx/ZM+NiOyT4PZ3z/HbvP8xY/MLHH9kzssT2ThknHxB7bM+FjeyZ8bM+Ej+2Z8LEdk30e7feBiT22Z2KP7ZnYY3smjSvomHjvVs+Ej+2Z8LE9E3tsz8Qe2zHZ58FwH5jYY3sm9tieiT22Z9Iw6ZjwsT0TPrZnwsf2TOyxPRN7bMdkn8eKfWBij+2ZeO9Wz8R7t3omDZOOCR/bM7HH9kzssT0Te2zPxB7bMXGe14CJPbZnwsf2TPjYnknDpGPCx/ZM7LE9E3tsz8Qe2zOxx3ZM9nme13tXsM/zvD4w4WN7Jnxsz6T5ju2Y2GN7JvbYnok9tmdij+2Z2GM7Jvs8z+sDEz62Z8LH9kz42J5Jw6RjYo/tmdhjeyb22J6J9271TLx3q2Oyz/O8PjDhY3sm9tieiT22Z9Iw6ZjYY3sm9tieiT22Z8LH9kz42H9m0vZ5ntcHJnxsz8Qe2zOxx/ZMGiYdE3tsz8R7t3om3rvVM+FjeyZ8bMfEeV79d6zzvAZM7LE9E3tsz6Rh0jGxx/ZM+NieCR/bM+FjeyZ8bMfEeV4DJvbYnok9tmdij+2ZNK6gY+K9Wz0TPrZnwsf2TOyxPRN7bMfEeV4DJvbYnok9tmdij+2ZNEw6Jnxsz4SP7ZnwsT0Te2zPxB7bMXGe14CJPbZn4r1bPRPv3eqZNEw6Jnxsz8Qe2zOxx/ZM7LE9E3tsx8R5XgMm9tieCR/bM+FjeyYNk44JH9szscf2TOyxPRN7bM/EHtsx2ed5Xu9dwT7P8/rAhI/tmfCxPZPmO7ZjYo/tmdhjeyb22J6JPbZnYo/tmOzzPK8PTPjYngkf2zPhY3smDZOOiT22Z2KP7ZnYY3sm3rvVM/HerY7JPs/z+sCEj+2Z2GN7JvbYnknDpGNij+2Z2GN7JvbYngkf2zPhYzsm+zzP6wMTPrZnYo/tmdhjeyYNk46JPbZn4r1bPRPv3eqZ8LE9Ez72n5lcnOd17JnYY3sm9tieiT22Z9Iw6ZjYY3smfGzPhI/tmfCxPRM+tmPiPK8BE3tsz8Qe2zOxx/ZMGlfQMfHerZ4JH9sz4WN7JvbYnok9tmPiPK8BE3tsz8Qe2zOxx/ZMGiYdEz62Z8LH9kz42J6JPbZnYo/tmDjPa8DEHtsz8d6tnon3bvVMGiYdEz62Z2KP7ZnYY3sm9tieiT22Y+I8rwETe2zPhI/tmfCxPZOGSceEj+2Z2GN7JvbYnok9tmdij+2Y7PM8r/euYJ/neX1gwsf2TPjYnknzHdsxscf2TOyxPRN7bM/EHtszscd2TPZ5ntcHJnxsz4SP7ZnwsT2ThknHxB7bM7HH9kzssT0T793qmXjvVsdkn+d5fWDCx/ZM7LE9E3tsz6Rh0jGxx/ZM7LE9E3tsz4SP7ZnwsR2TfZ7n9YEJH9szscf2TOyxPZOGScfEHtsz8d6tnon3bvVM+NieCR/bMXGeV/8d6zyvARN7bM/EHtszaZh0TOyxPRM+tmfCx/ZM+NieCR/7z0yuzvMaMLHH9kzssT0Te2zPpHEFHRPv3eqZ8LE9Ez62Z2KP7ZnYYzsmzvMaMLHH9kzssT0Te2zPpGHSMeFjeyZ8bM+Ej+2Z2GN7JvbYjonzvAZM7LE9E+/d6pl471bPpGHSMeFjeyb22J6JPbZnYo/tmdhjOybO8xowscf2TPjYngkf2zNpmHRM+NieiT22Z2KP7ZnYY3sm9tiOyT7P83rvCvZ5ntcHJnxsz4SP7Zk037EdE3tsz8Qe2zOxx/ZM7LE9E3tsx2Sf53l9YMLH9kz42J4JH9szaZh0TOyxPRN7bM/EHtsz8d6tnon3bnVM9nme1wcmfGzPxB7bM7HH9kwaJh0Te2zPxB7bM7HH9kz42J4JH9sx2ed5Xh+Y8LE9E3tsz8Qe2zNpmHRM7LE9E+/d6pl471bPhI/tmfCxHRPnefXfsc7zGjCxx/ZM7LE9k4ZJx8Qe2zPhY3smfGzPhI/tmfCxHRPneQ2Y2GN7JvbYnok9tmfSuIKOifdu9Uz42J4JH9szscf2TOyx/8zk5jyvARN7bM/EHtszscf2TBomHRM+tmfCx/ZM+NieiT22Z2KP7Zg4z2vAxB7bM/HerZ6J9271TBomHRM+tmdij+2Z2GN7JvbYnok9tmPiPK8BE3tsz4SP7ZnwsT2ThknHhI/tmdhjeyb22J6JPbZnYo/tmOzzPK/3rmCf53l9YMLH9kz42J5J8x3bMbHH9kzssT0Te2zPxB7bM7HHdkz2eZ7XByZ8bM+Ej+2Z8LE9k4ZJx8Qe2zOxx/ZM7LE9E+/d6pl471bHZJ/neX1gwsf2TOyxPRN7bM+kYdIxscf2TOyxPRN7bM+Ej+2Z8LEdk32e5/WBCR/bM7HH9kzssT2ThknHxB7bM/HerZ6J9271TPjYnok9tmPiPK8BE3tsz8Qe2zOxx/ZMGiYdE+8r6JnYY3sm9tieCR/bM7HHdkyc5zVgYo/tmdhjeyb22J5Jcy/umNhjeyb22J6JPbZnYo/tmdhjOybO8xowscf2TOyxPRN7bM+kYdIx8fcKeib+fmzPxN+P7ZnYY3smu9xj76f789r7+fBPTO77PM/rfDg/rz0fH78y6S++nE7Piy+nduwA7nLpzQS4yw05E+Au1+lMgA3AGMBdLuqZAHe51WcC3GUFyAS4y76QCXCX5SIR4D5PZMsEqIkEAWoiQYCaSBBgAzAGUBMJAtREggA1kSBATSQIUBOJAdznmXqZADWRIEBNJAhQEwkCbADGAGoiQYCaSBCgJhIEqIkEAWoiMYD7PBUxE6AmEgSoiQQBaiJBgA3AGEBNJAhQEwkC1ESCADWRIEBNJAZwn+daZgLURIIANZEgQE0kCLABGAOoiQQBaiJBgJpIEKAmEgTosNF//of5d4eNDpg4bLRnsssK8IGJlyn1TBomHRMvU+qZeJlSz8TLlHomDmnqmdhjOyb7PGz0AxN7bM/ES0F7JvbYnknDpGNij+2Z2GN7JvbYnomXgvZMvNy+Y+Kw0QETL7fvmdhjeyb22J5Jw6RjYo/tmTikqWfikKaeCR/bM+FjOyYOG+2/Yx02OmBij+2Z2GN7Jg2Tjok9tmfCx/ZM+NieCR/bM+FjOyYOGx0wscf2TOyxPRN7bM+kcQUdk13usR+Y8LE9Ez62Z2KP7ZnYY/+ZyWOfh41+YGKP7ZnYY3sm9tieScOkY8LH9kz42J4JH9szscf2TOyxHZN9HlX5gYk9tmfifQU9k13usR+YNEw6Jnxsz8Qe2zOxx/ZM7LE9E3tsx2SfBx1+YGKP7ZnwsT0TPrZn0jDpmPCxPRN7bM/EHtszscf2TOyxHZN9HpP33hXs8+S7D0z42J4JH9szab5jOyb22J6JPbZnYo/tmdhjeyb22I7JPg9Z+8CEj+2Z8LE9Ez62Z9Iw6ZjYY3sm9tieiT22Z+K9Wz0T793qmDjPa8CEj+2Z2GN7JvbYnknDpGNij+2Z2GN7JvbYngkf2zPhYzsm+zzP6wMTPrZnYo/tmdhjeyYNk46JPbZn4r1bPRPv3eqZ8LE9Ez62Y+I8r/471nleAyb22J6JPbZn0jDpmNhjeyZ8bM+Ej+2Z8LE9Ez62Y+I8rwETe2zPxB7bM7HH9kwaV9Ax8d6tngkf2zPhY3sm9tieiT22Y+I8rwETe2zPxB7bM7HH9kwaJh0TPrZnwsf2TPjYnok9tmdij/1nJseDA71GUGyyAyhevTWA4t1bAygNlB4KKzuAYp0dQLHPDqBYaAdQbLQ9FEd7jaDYaAdQyNkBFHZ2AKWB0kPhZwdQbLQDKDbaARQb7QCKjbaHss9Dvj6og32e8vUJCkc7gMLRDqA0X7Q9FBvtAIqNdgDFRjuAYqMdQLHR9lD2edzXJygc7QAKRzuAwtEOoDRQeig22gEUG+0Aio12AMXruQZQvJ+rh7LPg78+QeFoB1BstAMoNtoBlAZKD8VGO4Biox1AsdEOoHC0AygcbQ9ln0eAfYLC0Q6g2GgHUGy0AygNlB6KjXYAxQu7BlC8sWsAhaMdQOFoeygOAxt80ToNbATFRjuAYqMdQGmg9FBstAMoHO0ACkc7gMLRDqBwtD0Ux4KNoNhoB1BstAMoNtoBlEYd9FC8vWsAhaMdQOFoB1BstAMoNtoeigPCRlBstAMoNtoBFBvtAEoDpYfC0Q6gcLQDKBztAIqNdgDFRttDcVTYCIqNdgDF27sGULy9awClgdJD4WgHUGy0Ayg22gEUG+0Aio22g3J0ZtgIio12AIWjHUDhaAdQGig9FI52AMVGO4Biox1AsdEOoNhoeyj7PDPsvTo47vPMsE9QONoBFI52AKX5ou2h2GgHUGy0Ayg22gEUG+0Aio22h7LPM8M+QeFoB1A42gEUjnYApYHSQ7HRDqDYaAdQbLQDKN7eNYDi7V09lH2eGfYJCkc7gGKjHUCx0Q6gNFB6KDbaARQb7QCKjXYAhaMdQOFoeyj7PDPsExSOdgDFRjuAYqMdQGmg9FBstAMo3t41gOLtXQMoHO0ACkfbQ3Fm2OCL1plhIyg22gEUG+0ASgOlh2KjHUDhaAdQONoBFI52AIWj7aE4M2wExUY7gGKjHUCx0Q6gNOqgh+LtXQMoHO0ACkc7gGKjHUCx0fZQnBk2gmKjHUCx0Q6g2GgHUBooPRSOdgCFox1A4WgHUGy0Ayg22h6KM8NGUGy0Ayje3jWA4u1dAygNlB4KRzuAYqMdQLHRDqDYaAdQbLQ9FGeGjaDYaAdQONoBFI52AKWB0kPhaAdQbLQDKDbaARQb7QCKjbaDctrnmWHv1cFpn2eGfYLC0Q6gcLQDKM0X7f/ooNhoB1BstAMoNtoBFBvtAIqNtoeyzzPDPkHhaAdQONoBFI52AKWB0kOx0Q6g2GgHUGy0Ayje3jWA4u1dPZR9nhn2CQpHO4Biox1AsdEOoDRQeig22gEUG+0Aio12AIWjHUDhaHso+zwz7BMUjnYAxUY7gGKjHUBpoPRQbLQDKN7eNYDi7V0DKBztAApH20NxZtjgi9aZYSMoNtoBFBvtAEoDpYdiox1A4WgHUDjaARSOdgCFo+2hODNsBMVGO4Biox1AsdEOoDTqoIfi7V0DKBztAApHO4Biox1AsdH2UJwZNoJiox1AsdEOoNhoB1AaKD0UjnYAhaMdQOFoB1BstAMoNtoeijPDRlBstAMo3t41gOLtXQMoDZQeCkc7gGKjHUCx0Q6g2GgHUGy0PRRnho2g2GgHUDjaARSOdgClgdJD4WgHUGy0Ayg22gEUG+0Aio22h7LPM8M+qIN9nhn2CQpHO4DC0Q6gNF+0PRQb7QCKjXYAxUY7gGKjHUCx0XZQzvs8M+wTFI52AIWjHUDhaAdQGig9FBvtAIqNdgDFRjuA4u1dAyje3tVD2eeZYZ+gcLQDKDbaARQb7QBKA6WHYqMdQLHRDqDYaAdQONoBFI62h7LPM8M+QeFoB1BstAMoNtoBlAZKD8VGO4Di7V0DKN7eNYDC0Q6gcLQ9FGeGDb5onRk2gmKjHUCx0Q6gNFB6KDbaARSOdgCFox1A4WgHUDjaHoozw0ZQbLQDKDbaARQb7QBKow56KN7eNYDC0Q6gcLQDKDbaARQbbQ/FmWEjKDbaARQb7QCKjXYApYHSQ+FoB1A42gEUjnYAxUY7gGKj7aE4M2wExUY7gOLtXQMo3t41gNJA6aHYaAdQbLQDKDbaARQb7QCKjbaH4sywERTvOhhAsdEOoNhoB1Ca75Qeio12AMVGO4Biox1AsdEOoNhoeyj7PDPswy15n2eGfYJiox1AsdEOoDRftD0UG+0Aio12AMVGO4Biox1AsdH2UPZ5ZtgnKP7WwQCKv0c7gOLv0Q6gNFB6KLvcaO+n+/Pa+/nQQ9nlRns+nJ/Xno+PX6H0F19Op+fFl1M79gR3uf6mEtzlrpxKcJeLdSLBts9zzlIJ7nJlTyW4y/0+leAuy0AqwYZgkOAua0YqQZ0kSlAniRLUSaIEdZIgwX2eVJdKUCeJEtRJogR1kijBhmCQoE4SJaiTRAnqJFGCOkmUoE4SJLjPswZTCeokUYI6SZSgThIl2BAMEtRJogR1kihBnSRKUCeJEtRJggT3eVpkKkGdJEpQJ4kS1EmiBBuCQYI6SZSgThIlqJNECeokUYI6SZDgPs/7TCWok0QJ6iRRgjpJlGBDMEjQgaa3HooDTQdQHGg6gLLLMvAJihcx9VAcaDqC4kVMAyhexDSA4kVMAyjN3aeHYqMdQLHRDqDYaAdQvFp0AMVG20NxoOkIio12AMVGO4Biox1AaaD0ULwsfwDFy/IHULwsfwDFRjuAYqPtoTjQdATFRjuA4vinARTHPw2gNFB6KBztAIqNdgDFRjuAYqMdQLHR9lD2eaDpJyg22gEUjnYAhaMdQGmg9FA42gEUG+0Aio12AMVGO4Bio+2h7PNA0w/qYJ8Hmn6CwtEOoHC0AyjNF20PxUY7gGKjHUCx0Q6g2GgHUGy0HZTLPg8H/QSFox1A4WgHUDjaAZQGSg/FRjuAYqMdQLHRDqB418EAyi432g9Q9nm05CcoHO0Aio12AMVGO4DSQOmh2GgHUGy0Ayg22gEUjnYAhaPtoezzYMJPUDjaARQb7QCKjXYApYHSQ7HRDqB4e9cAird3DaBwtAMoHG0PZZ/H2n34ot3nSXWfoNhoB1BstAMoDZQeio12AIWjHUDhaAdQONoBFI62h7LPQ9E+QbHRDqDYaAdQbLQDKI066KF4e9cACkc7gMLRDqDYaAdQbLQ9FGeGjaDYaAdQbLQDKDbaAZQGSg+Fox1A4WgHUDjaARQb7QCKjbaH4sywERQb7QCKt3cNoHh71wBKA6WHwtEOoNhoB1BstAMoNtoBFBttD8WZYSMoNtoBFI52AIWjHUBpoPRQONoBFBvtAIqNdgDFRjuAYqPtoezzzLAP6mCfZ4Z9gsLRDqBwtAMozRdtD8VGO4Biox1AsdEOoNhoB1BstD2UfZ4Z9gkKRzuAwtEOoHC0AygNlB6KjXYAxUY7gGKjHUDx9q4BFG/v6qBc93lm2CcoHO0Aio12AMVGO4DSQOmh2GgHUGy0Ayg22gEUjnYAhaPtoezzzLBPUDjaARQb7QCKjXYApYHSQ7HRDqB4e9cAird3DaBwtAMoHG0PxZlhgy9aZ4aNoNhoB1BstAMoDZQeio12AIWjHUDhaAdQONoBFI62h+LMsBEUG+0Aio12AMVGO4DSqIMeird3DaBwtAMoHO0Aio12AMVG20NxZtgIio12AMVGO4Biox1AaaD0UDjaARSOdgCFox1AsdEOoNhoeyjODBtBsdEOoHh71wCKt3cNoDRQeigc7QCKjXYAxUY7gGKjHUCx0fZQnBk2gmKjHUDhaAdQONoBlAZKD4WjHUCx0Q6g2GgHUGy0Ayg22h7KPs8M+6AO9nlm2CcoHO0ACkc7gNJ80fZQbLQDKDbaARQb7QCKjXYAxUbbQ9nnmWGfoHC0Aygc7QAKRzuA0kDpodhoB1BstAMoNtoBFG/vGkDx9q4eyj7PDPsEhaMdQLHRDqDYaAdQGig9FBvtAIqNdgDFRjuAwtEOoHC0HZTbPs8M+wSFox1AsdEOoNhoB1AaKD0UG+0Aird3DaB4e9cACkc7gMLR9lCcGTb4onVm2AiKjXYAxUY7gNJA6aHYaAdQONoBFI52AIWjHUDhaHsozgwbQbHRDqDYaAdQbLQDKI066KF4e9cACkc7gMLRDqDYaAdQbLQ9FGeGjaDYaAdQbLQDKDbaAZQGSg+Fox1A4WgHUDjaARQb7QCKjbaH4sywERQb7QCKt3cNoHh71wBKA6WHwtEOoNhoB1BstAMoNtoBFBttD8WZYSMoNtoBFI52AIWjHUBpoPRQONoBFBvtAIqNdgDFRjuAYqPtoezzzLAP6mCfZ4Z9gsLRDqBwtAMozRdtD8VGO4Biox1AsdEOoNhoB1BstD2UfZ4Z9gkKRzuAwtEOoHC0AygNlB6KjXYAxUY7gGKjHUDx9q4BFG/v6qHs88ywT1A42gEUG+0Aio12AKWB0kOx0Q6g2GgHUGy0Aygc7QAKR9tD2eeZYZ+gcLQDKDbaARQb7QBKA6WHYqMdQPH2rgEUb+8aQOFoB1A42g7K3ZlhxwEUG+0Aio12AMVGO4DSQOmh2GgHUDjaARSOdgCFox1A4Wh7KM4MG0Gx0Q6g2GgHUGy0AyiNOuiheHvXAApHO4DC0Q6g2GgHUGy0PRRnho2g2GgHUGy0Ayg22gGUBkoPhaMdQOFoB1A42gEUG+0Aio22h+LMsBEUG+0Aird3DaB4e9cASgOlh8LRDqDYaAdQbLQDKDbaARQbbQ/FmWEjKDbaARSOdgCFox1AaaD0UDjaARQb7QCKjXYAxUY7gGKj7aHs88ywD+pgn2eGfYLC0Q6gcLQDKM0XbQ/FRjuAYqMdQLHRDqDYaAdQbLQ9lH2eGfYJCkc7gMLRDqBwtAMoDZQeio12AMVGO4Biox1A8fauARRv7+qh7PPMsE9QONoBFBvtAIqNdgClgdJDsdEOoNhoB1BstAMoHO0ACkfbQ9nnmWGfoHC0Ayg22gEUG+0ASgOlh2KjHUDx9q4BFG/vGkDhaAdQONoeijPDBl+0zgwbQbHRDqDYaAdQGig9FBvtAApHO4DC0Q6gcLQDKBxtB+XhzLARFBvtAIqNdgDFRjuA0qiDHoq3dw2gcLQDKBztAIqNdgDFRttDcWbYCIqNdgDFRjuAYqMdQGmg9FA42gEUjnYAhaMdQLHRDqDYaHsozgwbQbHRDqB4e9cAird3DaA0UHooHO0Aio12AMVGO4Biox1AsdH2UJwZNoJiox1A4WgHUDjaAZQGSg+Fox1AsdEOoNhoB1BstAMoNtoeyj7PDPugDvZ5ZtgnKBztAApHO4DSfNH2UGy0Ayg22gEUG+0Aio12AMVG20PZ55lhn6BwtAMoHO0ACkc7gNJA6aHYaAdQbLQDKDbaARRv7xpA8fauHso+zwz7BMVGO4Biox1AsdEOoDRQeig22gEUG+0AincdDKDYaAdQbLQ9lH2eGfbhO2WfZ4Z9gmKjHUCx0Q6gNFB6KDbaARRv7xpAsdEOoNhoB1BstD0UZ4YNvmidGTaCYqMdQLHRDqA0UHooNtoBFI52AMXfOhhA8fdoB1D8PdoeijPDRlB2udHeT/fntffzoYdSeaM9/vwUp9Onq2+P58e4//jlvq4df+TT16icT8fDP1z9J5bKO+1fh+V8Oz8/czscPlzdDqfnj26H2y+j9fg7w4bhR4bH8+PJ8Pg49gwrb8x/HcMfLL4YtvaJYbt/6Z3L8efnOLXRj761408ct18v/hN45W18k8Dv18vzR99HwCtv+ksCr9wilgReuaGsB/x0KH2+3JLAKzerJYHvs7V9I/B99sFvBN4Anwt8mab5OD8/xuN6+oTw8YRyab929ZFKu7Sva381dMf7b9fMH7SXqZklaH+a7WU65iZoL1MwN0F7mXa5BdqlD3pcj/YyvXITtJcplZugvUyj3ATthvZE2rrkB9rXw/Xv117Plw+079fntff78Zefe/07bFUyEfbj6+/hPH79Y/AD9uAznA/PR/3tfHz8/GMwuvjy4/d/fuJTO/568Z8x6qhLxKj8LhGjVr1CjKVPsRXjvxwjD7BEjATDEjEyF0vE2MS4QoxcyxIxsjhLxMjiLBEji7NEjCzOCjGWPrldjP9yjCzOEjGyOEvEyOIsEWMT4woxsjhLxMjiLBEji7NEjCzOEjGyOCvE2FicJWJkcZaIkcVZIkYWZ4kYmxhXiJHFWSJGFmeJGFmcJWJkcZaIkcVZIcYLi7NEjCzOEjGyOEvEyOIsEWMT4woxsjhLxMjiLBEji7NEjCzOEjGyOCvEeGVxloiRxVkiRhZniRhZnCVibGJcIUYWZ4kYWZzvivF6+Tpd6nq99ckQM1WT4VqqJkOfFE3mxoh8VzK3w5NFux0HyZAcVZPhLaomQ0VUTaZJpmgyhEHV3YwDqJoMB1A1GQ6gajIcQNEN4M4BVE2GA6iaDAdQNRkOoGoyTTJFk+EAqibDAVRNhgOomgwHUDUZDqBoMg8OoGoyHEDVZDiAqslwAN+VzIenAI8mmaLJcABVk+EAqibDAVTdADiAqslwADWTOR44gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAAVZPhAKomwwEUTebIAVRNhgP4rmTePwU4HjmAqslwAFWTaZIpmgwHUHUD4ACqJsMBVE2GA6iaDAdQNJkTB1A1GQ6gajIcQNVkOICqyTTJFE2GA6iaDAdQNRkOoGoyHEDVZDiA70rmw1OAMwdQNRkOoGoyHEDVZDiAohvAuUmmaDIcQNVkOICqyXAAVZPhAKomwwEUTaZxAFWT4QCqJsMBVE2GA6iaTJNM0WQ4gKrJcABVk+EAviuZD08BGgdQNRkOoGgyFw6gajIcQNEN4MIBVE2GA6iaTJNM0WQ4gKrJcABVk+EAqibDAVRNhgMomsyVA6iaDAdQNRkOoGoyHEDVZJpkiibDAXxXMh+eAlw5gKrJcABVk+EAqibDARTdAG4cQNVkOICqyXAAVZPhAKom0yRTNBkOoGoyHEDVZDiAqslwAFWT4QCKJnPnAKomwwFUTYYDqJoMB/BdyXx4CnBvkimaDAdQNRkOoGoyHEDVDYADqJoMB1A0mQcHUDUZDqBqMhxA1WQ4gKrJNMkUTYYDqJoMB1A1GQ6gajIcQNVkOICayZwOHEDVZDiA70rm/VOA04EDqJoMB1A1mSaZoslwAFU3AA6gajIcQNVkOICqyXAARZM5cgBVk+EAqibDAVRNhgOomkyTTNFkOICqyXAAVZPhAKomwwFUTYYD+K5kPjwFOHEAVZPhAKomwwFUTYYDKLoBnJpkiibDAVRNhgOomgwHUDUZDqBqMhxA0WTOHEDVZDiAqslwAFWT4QCqJtMkUzQZDqBqMhxA1WQ4gO9K5sNTgDMHUDUZDqBoMo0DqJoMB1B0A2gcQNVkOICqyTTJFE2GA6iaDAdQNRkOoGoyHEDVZDiAoslcOICqyXAA/6NoMhxA1WQ4gKrJNMkUTYYD+K5kPjwFuHAAVZPhAKomwwFUTYYDKLoBXDmAqslwAFWT4QCqJsMBVE2mSaZoMhxA1WQ4gKrJcABVk+EAqibDARRN5sYBVE2GA6iaDAdQNRkO4LuS+fAU4NYkUzQZDqBqMhxA1WQ4gKobAAdQNRkOoGgydw6gajIcQNVkOICqyXAAVZNpkimaDAdQNRkOoGoyHEDVZDiAqslwAEWTeXAAVZPhAL4rmQ9PAR4cQNVkOICqyTTJFE2GA6i6AXAAVZPhAKomwwFUTYYDqJnM+cABVE2GA6iaDAdQNRkOoGoyTTJFk+EAqibDAVRNhgOomgwHUDUZDuC7knn/FOB85ACqJsMBVE2GA6iaDAdQdAM4NskUTYYDqJoMB1A1GQ6gajIcQNVkOICiyZw4gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAA35XMh6cAJw6gajIcQNFkzhxA1WQ4gKIbwJkDqJoMB1A1mSaZoslwAFWT4QCqJsMBVE2GA6iaDAdQNJnGAVRNhgOomgwHUDUZDqBqMk0yRZPhAL4rmQ9PARoHUDUZDqBqMhxA1WQ4gKIbwIUDqJoMB1A1GQ6gajIcQNVkmmSKJsMBVE2GA6iaDAdQNRkOoGoyHEDRZK4cQNVkOICqyXAAVZPhAL4rmQ9PAa5NMkWT4QCqJsMBVE2GA6i6AXAAVZPhAIomc+MAqibDAVRNhgOomgwHUDWZJpmiyXAAVZPhAKomwwFUTYYDqJoMB1A0mTsHUDUZDuC7kvnwFODOAVRNhgOomkyTTNFkOICqGwAHUDUZDqBqMhxA1WQ4gKLJPDiAqslwAFWT4QCqJsMBVE2mSaZoMhxA1WQ4gKrJcABVk+EAqibDAXxXMu+fArQDB1A1GQ6gajIcQNVkOICaG0A7NMkUTYYDqJoMB1A1GQ6gajIcQNVkOICiyRw5gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAA35XMh6cARw6gajIcQNFkThxA1WQ4gKIbwIkDqJoMB1A1mSaZoslwAFWT4QCqJsMBVE2GA6iaDAdQNJkzB1A1GQ6gajIcQNVkOICqyTTJFE2GA/iuZD48BThzAFWT4QCqJsMBVE2GAyi6ATQOoGoyHEDVZDiAqslwAFWTaZIpmgwHUDUZDqBqMhxA1WQ4gKrJcABFk7lwAFWT4QCqJsMBVE2GA/iuZD48Bbg0yRRNhgOomgwHUDUZDqDqBsABVE2GAyiazJUDqJoMB1A1GQ6gajIcQNVkmmSKJsMBVE2GA6iaDAdQNRkOoGoyHEDRZG4cQNVkOIDvSubDU4AbB1A1GQ6gajJNMkWT4QCqbgAcQNVkOICqyXAAVZPhAIomc+cAqibDAVRNhgOomgwHUDWZJpmiyXAAVZPhAKomwwFUTYYDqJoMB/BdyXx4CvDgAKomwwFUTYYDqJoMB1B0A3g0yRRNhgOomgwHUDUZDqBqMhxA1WQ4gJrJXA4cQNVkOICqyXAAVZPhAKom0yRTNBkOoGoyHEDVZDiA70rm/VOAy4EDqJoMB1A0mSMHUDUZDqDoBnDkAKomwwFUTaZJpmgyHEDVZDiAqslwAFWT4QCqJsMBFE3mxAFUTYYDqJoMB1A1GQ6gajJNMkWT4QC+K5kPTwFOHEDVZDiAqslwAFWT4QCKbgBnDqBqMhxA1WQ4gKrJcABVk2mSKZoMB1A1GQ6gajIcQNVkOICqyXAARZNpHEDVZDiAqslwAFWT4QC+K5kPTwFak0zRZDiAqslwAFWT4QCqbgAcQNVkOICiyVw4gKrJcABVk+EAqibDAVRNpkmmaDIcQNVkOICqyXAAVZPhAKomwwEUTebKAVRNhgP4rmQ+PAW4cgBVk+EAqibTJFM0GQ6g6gbAAVRNhgOomgwHUDUZDqBoMjcOoGoyHEDVZDiAqslwAFWTaZIpmgwHUDUZDqBqMhxA1WQ4gKrJcADflcyHpwB3DqBqMhxA1WQ4gKL3mTsHUDWZJpmiyXAAVZPhAKomwwFUTYYDqLo1cwBFk3lwAFWT4QCK3mceHEDVZDiAqsk0yRRNhgOomgwHUDUZDqDq1swBVE2GA6iZzPXAAVRNhgOouQFcDxxA1WQ4gKrJNMkUTYYDqJoMB1A1GQ6gajIcQNVkOICiyRw5gKrJcABVk+EAviuZ++n+TOZ+PvTJcACJyRzb+Wkpj+1y/ZDN9Xw6fv3o1n7NZkT5+gzyB/CfP/p0GV18Pj6eF59Pl18v/jP1JvUdps5d7DF1XmSPqXMuK6be2pPzuV3ufep8zh5T54qWTP32lUl7nN5ffHrcv37y4XD4cHG7PNGd2u3+/uLL4Qvz+djVxxMZZvS+afTYPqP3W6P3eP7k0+V0CI0enWn0vmn0+Fqj9zujdzs/cZxut8uHiw/t+QueDtcWmtNmTs3pBuaUEzenf92c3p6S9nQ8nEJzyuKb0y3MqecOe5/T8+HUvub0/OEnn873rzlth/OvF/85T55omKffmadEweixitH7ntE7e6xi9L5p9DxWMXq/NXppbvvssYrR+6bR81jF6P3O6F2/xulvt8yutp6beTJPifPkMYV5ypwnjxPMU+Y80f7m6Xfm6XceTx3vX3EfH8f+GcHZMwLD923D5ymB4furhi/xLzo1jxTM6Rbm1PMHc7qFOfWwwpz+dXOa9hfymicb5nQLc9rM6d7n9Pj1Frnz8Rzs5c0TE/OUOU+emJin35inzKrh4YrR+6bR82jF6H3T6HmwYvR+a/TSuujFsxKj902j5/HHiqN3uZyfF1+uH/59zu/9O+8P/3724jGFefqeF/RdPHkwet80es3oGb3vGT3PHYze97wb8uIRhdH7ptHziMLo/c7offj3RBfPHcxT5jx5mGCeEufp6gmBecqcJ9rfPP1Vr3f99Ffbrp4RGL5vGz5PCQzfBg4KuDZzak43MKeeP5jTLcyphxXmdAMHWlw92TCnW5hTT0z2Pqff9cr4q4crRu97Ru/mOYzR+55Xxt88sjF63zR6HtgYvQ28I+3m2Y453cKcNnNqTuu/I+3m2Y453cKceraz+znNfPfazTMY85Q5T56VmKfveavVzbMSo/c9o3f3rMTofdPoeVZi9L7nhWp3z0qM3jeNnscfmaN3/4J9vJ+O/zB6f+JucM/ETUZPxc2pTsVNOf5VuI9tgJuRm4qbhZqJ+8G8TMXNNkzFrWFPxa1VzlwEHw3umbi1yqm4tcqpuLXKqbi1yqm4tcqJuG8HrXIqbq1yKm6tcipurXIq7gZ3Iu43fyvhT9xa5VTcWuVU3FrlVNxa5VTcWuUH3Lf2/Mj34+ED7uvh+bfbrqefDxfOx+OfsI865UTYGuVE2PrkRNja5ETYDex5sDXJibD1yImwtciJsHXIibA1yHmwTxrkRNga5ETYGuRE2BrkRNgN7HmwNciJsDXIibA1yImwNciJsDXIebDPGuRE2BrkRNga5ETYGuRE2A3sebA1yImwNciJsDXIibA1yImwNch5sJsGORG2BjkRtgY5EbYGORF2A3sebA1yImwNciJsDXIibA1yImwNch7siwY5EbYGORG2BjkRtgY5EXYDex5sDXIibA1yImwNciJsDXIibA1yHuyrBjkRtgY5EbYGORG2BjkRdgN7HmwNciJsDXIibA1yImwN8gPs++N5VPbj49tYT9fnzz39guJ8GX6EJ4nL8fbh0sP1+ULYdjxef734zwwV081neNN3t5+hGr39DLXz7Weo9G8/wybDzWdIUWw/Q+Zj+xkSKtvPkKfZfoY8zeYzvPM028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZPnia7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/UM7weeZvsZ8jTbz5Cn2X6GPM32M2wy3HyGPM32M+Rptp8hT7P9DHma7WfI02w+wyNPs/0MeZrtZ8jTbD9Dnmb7GTYZbj5Dnmb7GfI028+Qp9l+hjzN9jPkaTaf4Ymn2X6GPM32M+Rptp8hT7P9DJsMN58hT7P9DHma7WfI02w/Q55m+xnyNJvP8MzTbD9Dnmb7GfI028+Qp6mf4en+/LHt3E7vLz4dj8/Pezq21gfeBL6vwBmgnQVOF+0scG5pZ4ETUTsLnLXaV+CN4tpZ4HzYzgInz3YWONO2s8CbwPcVONO2s8CZtp0FzrTtLHCmbWeBM237CvzCtO0scKZtZ4EzbTsLnGnbWeBN4PsKnGnbWeBM284CZ9p2FjjTtrPAmbZ9BX5l2nYWONO2s8CZtp0FzrTtLPAm8H0FzrTtLHCmrXzgl9P9+atdzqdLnyF5tv0M+bDtZ0hxbT7DG2u1/QyJqO1nyC1tP0O6aPsZNhluPkNSZ/sZ8jTbz5Cn2X6GPM32M+RpNp/hnafZfoY8zfYz5Gm2nyFPs/0Mmww3nyFPs/0MeZrtZ8jTbD9Dnmb7GfI0m8/wwdNsP0OeZvsZ8jTbz5Cn2X6GTYabz5Cn2X6GPM32M+Rptp8hT7P9DHmarWf4OPA028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZHnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/kMTzzN9jPkabafIU+z/Qx5mu1n2GS4+Qx5mu1nyNNsP0OeZvsZ8jTbz5Cn2XyGZ56mfoaX29e1l79x/ecMeZrtZ8jTbD9Dnmb7GTYZbj5Dnmb7GfI028+Qp9l+hjzN9jPkaTafYeNptp8hT7P9DHma7WfI02w/wybDzWfI02w/Q55m+xnyNNvPkKfZfoY8zeYzvPA028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZXnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNNvPkKfZfoY8zfYz5Gm2nyFPs/kMbzzN9jPkabafIU+z/Qx5mu1n2GS4+Qx5mu1nyNNsP0OeZvsZ8jTbz5Cn2XyGd55m+xnyNNvPkKfZfoY8zfYzbDLcfIY8zfYz5Gm2nyFPs/0MeZrtZ8jTbD7DB0+z/Qx5mu1nyNNsP0OeZvsZNhlWz/B6ase/X3s9H859hjzN9jPkabafIU+z/Qx5mu1nyNNsPMPz4cDTbD9Dnmb7GfI028+Qp9l+hk2Gm8+Qp9l+hjzN9jPkabafIU+z/Qx5ms1neORptp8hT7P9DHma7WfI02w/wybDzWfI02w/Q55m+xnyNNvPkKfZfoY8zeYzPPE028+Qp9l+hjzN9jPkabafYZPh5jPkabafIU+z/Qx5mu1nyNNsP0OeZvMZnnma7WfI02w/Q55m+xnyNNvPsMlw8xnyNPUz/HHFM8NLa32GPM32M+Rptp8hT7P9DHmazWfYeJrtZ8jTbD9Dnmb7GfI028+wyXDzGfI028+Qp9l+hjzN9jPkabafIU+z+QwvPM32M+Rptp8hT7P9DHma7WfYZLj5DHma7WfI02w/Q55m+xnyNNvPkKfZfIZXnmb7GfI028+Qp9l+hjzN9jNsMtx8hjzN9jPkabafIU+z/Qx5mu1nyNNsPsMbT7P9DHma7WfI02w/Q55m+xk2GW4+Q55m+xnyNNvPkKfZfoY8zfYz5Gk2n+Gdp9l+hjzN9jPkabafIU+z/QybDDefIU+z/Qx5mu1nyNNsP0OeZvsZ8jSbz/DB02w/Q56mfob32/PHXh+Ha58hT7P9DHma7WfYZFg+w8fp8JXh5fD+4vv5/PzB9/Pl+uHi9mR2v/bnSD34H7PxajZ4JbPxajb4KrPxajZ4MLPxajb4NbMxno3jgbczG69mgw80G69mg2c0G69mg780G69mo5kNs/FiNnhRs/FqNnhRs/FqNnhRs/FqNnhRs/FqNnhRs/FiNo68qNl4NRu8qNl4NRu8qNl4NRu8qNl4NRvNbJiNF7PBi5qNV7PBi5qNV7PBi5qNV7PBi5qNV7PBi5qNF7Nx4kXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxqvZaGbDbLyYDV7UbLyaDV7UbLyaDV7UbLyaDV7UbLyaDV7UbLyYjTMvajZezQYvajZezQYvajZezQYvajZezUYzG2bjxWzwombj1Wzwombj1Wzwombj1Wzwombj1WzwombjxWw0XtRsvJoNXtRsvJoNXtRsvJoNXtRsvJqNZjbMxovZ4EXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxqvZ4EXNxovZuPCiZuPVbPCiZuPVbPCiZuPVbPCiZuPVbDSzYTZezAYvajZezQYvajZezQYvajZezQYvajZezQYvajZezMaVFzUbr2aDFzUbr2aDFzUbr2aDFzUbr2ajmQ2z8WI2eFGz8Wo2eFGz8Wo2eFGz8Wo2eFGz8Wo2eFGz8WI2bryo2Xg1G7yo2Xg1G7yo2Xg1G7yo2Xg1G81smI0Xs8GLmo1Xs8GLmo1Xs8GLmo1Xs8GLmo1Xs8GLmo0Xs3HnRc3Gq9ngRc3Gq9ngRc3Gq9ngRc3Gq9loZsNsvJgNXtRsvJoNXtRsvJoNXtRsvJoNXtRsvJoNXtRsvJiNBy9qNl7NBi9qNl7NBi9qNl7NBi9qNl7NRjMbZuPFbPCiZuPVbPCiZuPVbPCiZuPVbPCiZuPVbPCiZmM8G6cDL2o2Xs0GL2o2Xs0GL2o2Xs0GL7rabBzPX7NxbX3gTeD7CpzB3FngtOTOAucadxY4gbizwFnBfQV+pPp2Fjh/t7PASbmdBc60LRZ4u3yZ1R//jfcXnx63+/MDPx4/p+N0HVx8OXyN0uVwPv568Z+j1IySUcoZJXbQKCWNEu9olJJGidE0SkmjxJUapaRRYmGNUs4onfhdo5Q0SsyxUUoaJU7aKCWNEtttlJJGqRklo5QzSmy3UUoaJbbbKCWNEtttlJJGie02SkmjxHYbpZxROrPdRilplNhuo5Q0Smy3UUoaJbbbKCWNUjNKRilnlNhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGie02Sjmj1Nhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGqRklo5QzSmy3UUoaJbbbKCWNEtttlJJGie02SkmjxHYbpZxRurDdRilplNhuo5Q0Smy3UUoaJbbbKCWNUjNKRilnlNhuo5Q0Smy3UUoaJbbbKCWNEtttlJJGie02SjmjdGW7jVLSKLHdRilplNhuo5Q0Smy3UUoapWaUjFLOKLHdRilplNhuo5Q0Smy3UUoaJbbbKCWN0i5t9+3y/MG3++XDKLXz4UmwnY+PD7h/fM4n7lPrcd92aYS/D/curen34d6lWfw+3Lu0b9+Hu8E9E/cuLc734d6l6fg+3Lu0Ad+He5eN+ftwa5Uzcd+1yqm4tcqpuLXKqbi1yqm4G9wzcWuVU3FrlVNxa5VTcWuVU3FrlTNxP7TKqbi1yqm4tcqpuLXKqbgb3DNxa5VTcWuVU3FrlVNxa5VTcWuVE3GfD1rlVNxa5VTcWuVU3FrlVNwN7pm4tcqpuLXKqbi1yqm4tcqpuLXKmbiPWuVU3FrlVNxa5VTcWuVU3A3umbi1yqm4tcqpuLXKqbi1yk+4r5fjE/f1eusJKopBgifdL0pQnYsS1NA+Ebwdnp+53Y4DgkpXlGBDMEhQNYoS1HaiBBWY6L1YJ4kS1EmCBM86SZSgThK8k5x1kihBnSRKsCEYJKiTRAnqJFGCOkmUoE4SJaiTBAk2nSRKUCeJEtRJogR1kijBhmCQoE4StFtNJ4kS1EmiBHWSKEGdJHgnuegkUYI6SZSgThIlqJNECTYEgwR1kihBnSRKUCeJEtRJogR1kiDBq04SJaiTRAnqJFGCOknQbl0bgkGCOkmUoE4SJaiTRO8kOkmUoE4SJHjTSaIEdZIoQZ0kSlAniRJsCAYJ6iRRgjpJlKBOEiWok0QJ6iRBgnedJEpQJwnarbtOEiWok0QJNgSDBHWS6J1EJ4kS1EmiBHWSKEGdJEjwoZNECeokUYI6SZSgThIl2BAMEtRJogR1kihBnSRKUCeJEtRJYnarHXSSKEGdJEpQJ4kS1Elid5J2aAgGCeokUYI6SZSgThIlqJNECeokQYJHnSRKUCeJEtRJogR1kijBhmCQoE4SJaiTRAnqJEG75Rz3MEGdJEjQOe5hgjpJ8E7iHPcwQZ0kSrAhGCSok0QJ6iRRgjpJlKBOEiWokwQJOsc9TFAniRLUSaIEdZIowYZgkKBOErRbznEPE9RJogR1kihBnSR4J3GOe5igThIlqJNECeokUYINwSBBnSRKUCeJEtRJogR1kihBnSRI0DnuYYI6SZSgThIlqJME7ZZz3MMEdZIoQZ0kSlAnid5JdJIoQZ0kSNA57mGCOkmUoE4SJaiTRAk2BIMEdZIoQZ0kSlAniRLUSaIEdZIgQee4hwnqJEG75Rz3MEGdJEqwIRgkqJNE7yQ6SZSgThIlqJNECeokQYLOcQ8T1EmiBHWSKEGdJEqwIRgkqJNECeokUYI6SZSgThIlqJME7ZZz3MMEdZIoQZ0kSlAnCd5JnOMeJqiTRAnqJFGCOkmUoE4SJaiTxAhenOMeJqiTRAnqJFGCOkmUYEMwSFAniRLUSaIEdZKY3bo4xz1MUCcJEnSOe5igThK8kzjHPUxQJ4kSbAgGCeokUYI6SZSgThIlqJNECeokQYLOcQ8T1EmiBHWSKEGdJEqwIRgkqJME7ZZz3MMEdZIoQZ0kSlAnCd5JnOMeJqiTRAnqJFGCOkmUYEMwSFAniRLUSaIEdZIoQZ0kSlAnCRJ0jnuYoE4SJaiTRAnqJEG75Rz3MEGdJEpQJ4kS1EmidxKdJEpQJwkSdI57mKBOEiWok0QJ6iRRgg3BIEGdJEpQJ4kS1EmiBHWSKEGdJEjQOe5hgjpJ0G45xz1MUCeJEmwIBgnqJNE7iU4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJEmwIBgnqJFGCOkmUoE4SJaiTRAnqJEG75Rz3MEGdJEpQJ4kS1EmCdxLnuIcJ6iRRgjpJlKBOEiWok0QJ6iRBgs5xDxPUSaIEdZIoQZ0kSrAhGCSok0QJ6iRRgjpJ0G45xz1MUCeJEbw6xz1MUCeJ3UmuznEPE9RJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJEmwIBgnqJEG75Rz3MEGdJEpQJ4kS1EmCdxLnuIcJ6iRRgjpJlKBOEiXYEAwS1EmiBHWSKEGdJEpQJ4kS1EmCBJ3jHiaok0QJ6iRRgjpJ0G45xz1MUCeJEtRJogR1kuidRCeJEtRJggSd4x4mqJNECeokUYI6SZRgQzBIUCeJEtRJogR1kihBnSRKUCcJEnSOe5igThK0W85xDxPUSaIEG4JBgjpJ9E6ik0QJ6iRRgjpJlKBOEiToHPcwQZ0kSlAniRLUSaIEG4JBgjpJlKBOEiWok0QJ6iRRgjpJ0G45xz1MUCeJEtRJogR1kuCdxDnuYYI6SZSgThIlqJNECeokUYI6SZCgc9zDBHWSKEGdJEpQJ4kSbAgGCeokUYI6SZSgThK0W85xDxPUSYIEneMeJqiTBO8kznEPE9RJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmM4M057mGCOkmUoE4SJaiTRAk2BIMEdZKY3bo5xz1MUCeJEtRJogR1kuCdxDnuYYI6SZSgThIlqJNECTYEgwR1kihBnSRKUCeJEtRJogR1kiBB57iHCeokUYI6SZSgThK0W85xDxPUSaIEdZIoQZ0keifRSaIEdZIgQee4hwnqJFGCOkmUoE4SJdgQDBLUSaIEdZIoQZ0kSlAniRLUSYIEneMeJqiTBO2Wc9zDBHWSKMGGYJCgThK9k+gkUYI6SZSgThIlqJMECTrHPUxQJ4kS1EmiBHWSKMGGYJCgThIlqJNECeokUYI6SZSgThK0W85xDxPUSaIEdZIoQZ0keCdxjnuYoE4SJaiTRAnqJFGCOkmUoE4SJOgc9zBBnSRKUCeJEtRJogQbgkGCOkmUoE4SJaiTBO2Wc9zDBHWSIEHnuIcJ6iTBO4lz3MMEdZIowYZgkKBOEiWok0QJ6iRRgjpJlKBOEiToHPcwQZ0kSlAniRLUSaIEG4JBgjpJ0G45xz1MUCeJEtRJogR1ktid5O4c9zBBnSRKUCeJEtRJogQbgkGCOkmUoE4SJaiTRAnqJFGCOkmQoHPcwwR1kihBnSRKUCeJ2a27c9zDBHWSKEGdJEpQJ4neSXSSKEGdJEjQOe5hgjpJlKBOEiWok0QJNgSDBHWSKEGdJEpQJ4kS1EmiBHWSIEHnuIcJ6iRBu+Uc9zBBnSRKsCEY/B7USaIEdZIoQZ0kSlAniRLUSYIEneMe3Wac4x4mqJNECeok0e/BhmCQoE4SJaiTRAnqJFGCOkmUoE4S3Gac4x4mqJNECeokUYI6SfBO4hz3MEGdJEpQJ4kS1EmiBHWSKEGdJEjQOe5hgjpJlKBOEiWok0QJNgQ/ELyf7k+C9/OhJ7jPTvJ4Xns/H/+B4J9QlqkZx8Pp8rz6cDl8wNIez4sv7fBhsC7t69r7L9ce7yMYt3b8SeOXP8bt77yXKSVFeP/4Y/2kcR/xXqbCbIT3MoVnG7zXOVJ+I7yXKVMb4b1M9doI72WK2kZ4N7yn8l6mBG6Et375kff1cP37tdfz5QPvH4X9Wefvv9b5vzuOm3qZivtxbU/T8usfhR+4B5/hfDg//dP5+PjVPw3+jP0g8PzEp3bsZNVNb10kSIV4jSDvmvYiQarwiwTJDSwSJOmwSJBNkGsESZMsEiT/skiQzM4iQTI7iwTJ7KwR5IPZWSRIZmeRIJmdRYJkdhYJsglyjSCZnUWCZHYWCZLZWSRIZmeRIJmdJYJ8HJidRYJkdhYJktlZJEhmZ5EgmyDXCJLZWSRIZmeRIJmdRYJkdhYJktlZI8gjs7NIkMzOIkEyO4sEyewsEmQT5BpBMjuLBMnsLBIks7NIkMzOIkEyO2sEeWJ2FgmS2VkkSGZnkSCZnUWCbIJcI0hmZ5EgmZ1FgmR2vi/I9ydbP05kTd1s+Jey2ZwplbrZsCTfl837MzcfZ+KjbjZcRt1smmzKZsM41M2GRKi7p/ECdbPhBepmwwuUzabxAmV3gcYL1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabCy9QNxteoG42vEDdbHiButk02VR9RnDhBepmwwvUzYYXqJsNL1B3F+AFymZz5QXqZsML1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabGy9QNxteoG42vEDZZwQ3XqBuNk02ZbPhBepmwwvU3QV4gbrZ8AJ1s+EFymZz5wXqZsML1M2GF6ibDS9QN5smm7LZ8AJ1s+EF6mbDC9TNhheomw0vUDabBy9Q9hnBgxeomw0vUDcbXqBuNk02ZXcBXqBuNrxA3Wx4gbrZ8AJ1s+EFimbTDgdeoG42vEDdbHiButnwAnWzabIpmw0vUDcbXqBuNrxA3Wx4gaLPCH5kwwuUzebIC9TNhheomw0vUHYXOPICdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfECdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAmWfEZx4gbrZ8AJ1s+EFymZz5gXK7gJnXqBuNrxA3Wx4gbrZNNmUzYYXqJsNL1A3G16gbja8QN1seIGy2TReoG42vEDdbHiButnwAnWzabKp+oyg8QJ1s+EF6mbDC9TNhheouwvwAmWzufACdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzZUXqJsNL1A3G16g7DOCKy9QN5smm7LZ8AJ1s+EF6u4CvEDdbHiButnwAmWzufECdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzZ0XKPuM4M4L1M2GF6ibDS9QN5smm7K7AC9QNxteoG42vEDdbHiButnwAmWzefACdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsMLlH1G8OAFqmZzPPACdbPhBepmwwtU3QWOB16gbjZNNmWz4QXqZsML1M2GF6ibDS9QNxteoGw2R16gbja8QN1seIG62fACdbNpsimbDS9QNxteoOwzgiMvUDcbXqBuNrxA2WxOvEDZXeDEC9TNhheomw0vUDebJpuy2fACdbPhBepmwwvUzYYXqJsNL1A2mzMvUDcbXqBuNrxA3Wx4gbrZNNlUfUZw5gXqZsML1M2GF6ibDS9QdxfgBcpm03iButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sIL1M2GF6ibDS9Q9hnBhReom02TTdlseIG62fACdXcBXqBuNrxA3Wx4gbLZXHmButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sYLlH1GcOMF6mbDC9TNhheom02TTdldgBeomw0vUDcbXqBuNrxA3Wx4gbLZ3HmButnwAnWz4QXqZsML1M2myaZsNrxA3Wx4gbrZ8AJ1s+EFyj4juPMCZbN58AJ1s+EF6mbDC5TdBR68QN1smmzKZsML1M2GF6ibDS9QNxteoG42vEDVbE4HXqBuNrxA3Wx4gbrZ8AJ1s2myKZsNL1A3G16g6jOC04EXqJsNL1A3G16gbDZHXqDsLnDkBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzYkXqJsNL1A3G16gbja8QN1smmyqPiM48QJ1s+EF6mbDC9TNhheouwvwAmWzOfMCdbPhBepmwwvUzYYXqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibTeMF6mbDC9TNhhco+4yg8QJ1s2myKZsNL1A3G16g7i7AC9TNhheomw0vUDabCy9QNxteoG42vEDdbHiButk02ZTNhheomw0vUDcbXqBuNrxA3Wx4gbLZXHmBss8IrrxA3Wx4gbrZ8AJ1s2myKbsL8AJ1s+EF6mbDC9TNhheomw0vUDabGy9QNxteoG42vEDdbHiButk02ZTNhheomw0vUDcbXqBuNrxA2WcEN16gbDZ3XqBuNrxA3Wx4gbK7wJ0XqJtNk03ZbHiButnwAnWz4QXqZsML1M2GFyibzYMXqJsNL1A3G16gbja8QN1smmzKZsML1M2GFyj7jODBC9TNhheomw0vUDWb84EXqLoLnA+8QN1seIG62fACdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfICdbPhBepmwwvUzYYXqJtNk03VZwRHXqBuNrxA3Wx4gbrZ8AJ1dwFeoGw2J16gbja8QN1seIG62fACdbNpsimbDS9QNxteoG42vEDdbHiButnwAmWzOfMCdbPhBepmwwuUfUZw5gXqZtNkUzYbXqBuNrxA3V2AF6ibDS9QNxteoGw2jReomw0vUDcbXqBuNrxA3WyabMpmwwvUzYYXqJsNL1A3G16gbja8QNlsLrxA2WcEF16gbja8QN1seIG62TTZlN0FeIG62fACdbPhBepmwwvUzYYXKJvNlReomw0vUDcbXqBuNrxA3WyabMpmwwvUzYYXqJsNL1A3G16g7DOCKy9QNpsbL1A3G16gbja8QNld4MYL1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5s4L1M2GF6ibDS9QNxteoG42TTZls+EF6mbDC5R9RnDnBepmwwvUzYYXKJvNgxcouws8eIG62fACdbPhBepm02RTNhteoG42vEDdbHiButnwAnWz4QWqZtMOvEDdbHiButnwAnWz4QXqZtNkU/QZQTvwAnWz4QXqZsML1M2GF6i7C/ACZbM58gJ1s+EF6mbDC9TNhheom02TTdlseIG62fACdbPhBepmwwvUzYYXKJvNiReomw0vUDcbXqDsM4ITL1A3myabstnwAnWz4QXq7gK8QN1seIG62fACZbM58wJ1s+EF6mbDC9TNhheom02TTdlseIG62fACdbPhBepmwwvUzYYXKJtN4wXKPiNovEDdbHiButnwAnXvN002ZbPhBepmwwvUzYYXqJsNL1A3G16g7A594QXqZsML1M2GFyh7v7nwAnWzabIpmw0vUDcbXqBuNrxA3Wx4gbo7NC9QNpsrL1A3G16gbja8QNld4MoL1M2myaZsNrxA3Wx4gbrZ8AJ1s+EF6mbDC5TN5sYL1M2GF6ibDS9QNxte4PuyuZ/uz2zu50OfTZNNZjbHdn76y+OPh8of0rmeT8evH93ar+mMOF+fUf5A/vNHny6ji8/Hx/Pi8+ny68V/5s457DN3PmOfuXMl+8ydh1kz99aepM/tcu9z53h2mfudP1o099tXKu1xen/x6XH/+smHw+HDxe3yRHdqt/v7iy+HL8znY1cm7wSZ4fu24WMADd9vDt/j+ZNPl9MhNHwUp+H7tuFrhs/w/dbw3c5PHKfb7fLh4kN7/oKnw7WFJpV1NqnbmFSe3KT+lZN6e2rb04+AQpPK7JvUbUyqZxEm9Xw4ta9JPX/4yafz/WtS2+H868V/TpSnHCbq9yYqTzg+PGoxfN82fB61GL5vGz6PWgzfbw5fmu1+eNRi+L5t+JrhM3y/NXzXr4E6XX+dqL9X2IdHIiYqd6I8ujBRuRPlEYOJyp0ojwJM1O9N1O88tDrevwI/Po79c4OH5wbG79vG73Lw5MD4/XXjl/fXoC4HjxlM6jYm1TMJk7qNSfUAw6T+lZOa9Rf2LodmUk3qJibVUxSTej5+vYfufDxHO7qnKCYqd6I8RTFRvzVRmaXDAxfD923D53GL4fuu4Tt62GL4fnP40nrp0fMTw/dtw+eRyJrDd7mcnxdfrh/+Jc/v/cvw9//e9nL06MJEfdML/i7HZvgM33cNnwcMhu/bhs+zCMP3TW+XvBw9tjB83zZ8HlsYvt8bvvf/8uhy9CzCRKVO1MkDBhOVO1GeGpio3InyKMBE/XUvif30V99OnhsYv28cv2b8jN8Gjh24nDxmMKnbmFTPJEzqNibVAwyTuoUDMi4nTztM6jYm1VMUk/pNr5+/nD1wMXzfNnyezRi+b3r9/OXsMY7h+7bh8xDH8G3iDWvnZlJN6iYm1fMek7qJN6ydPe8xqduYVM97TGrqm9vOnsuYqNyJ8vzERH3XG7Ga5yeG79uGz/MTw/dtw+f5ieH7rtexNc9PDN+3DV8zfKnDd//Cfbyfjv8wfH8CZ/YnAyeoJwPnWScDpyH/OuDHNgDO0s0FfmGmJgNnYyYDZyAmA9e6524plwb4XOCa5mTgmuZk4JrmZOCa5mTgmuZc4FdNczJwTXMycE1zMnBNczLwBvisB+p/Atc0JwPXNCcD1zQnA9c0JwPXND8Cv7Xnh74fDx+AXw/Pv6J1Pf18/HA+Hv/EfdMzp+LWMqfi1jGn4tYwp+JucM/ErV1Oxa1bTsWtWU7FrVdOxa1VzsR91yqn4tYqp+LWKqfi1iqn4m5wz8StVU7FrVVOxa1VTsWtVU7FrVXOxP3QKqfi1iqn4tYqp+LWKqfibnDPxK1VTsWtVU7FrVVOxa1VTsWtVU7EfT1olR9x3x/PN0g+Pv4N79P1+XNPv8A4X4Yf4cnicrx9uPRwff4l83Y8Xn+9+M8UldUVUtSBV0hRtV4hxSbFBVIkAlZIkV9YIUXaYoUU2ZAVUiRZFkjxyN2skCJ3s0KK3M0KKXI3K6TYpLhAitzNCilyNyukyN2skCJ3s0KK3M0CKZ64mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFM3ezQorczQopcjcrpMjdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpNi4mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFC3ezQorczQopcjcrpMjdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpHjlblZIkbtZIUXuZoUUuZsVUmxSXCBF7mYLKZ7uzx/bzu30/uLT8fj8vKdja33kRM/uImeFdhc5hbS7yPmmvUV+I6d2FzmTtbvIaa/dRc6R7S7yJvK9Rc6+7S5y9m13kbNvu4ucfdtd5Ozb3iK/s2+7i5x9213k7NvuImffdhd5E/neImffdhc5+7a7yNm33UXOvu0ucvZtb5E/2LfdRc6+7S5y9m13kbNvu4u8iXxvkbNvu4ucfdtd5Ozb7iJn3zYQ+eV0fzK+nE+XPkVCbfsp3g4c2Qop0l4rpMhkrZAiObVCik2KC6RIIa2QIiu0QopEzwopcjcrpMjdLJDikbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUjxxNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKZ+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSLFxNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKF+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSPHK3ayQInezQorczRZSvNy+rr38jew/p8jdrJBik+ICKXI3K6TI3ayQInezQorczQopcjcLpHjjblZIkbtZIUXuZoUUuZsVUmxSXCBF7maFFLmbFVLkblZIkbtZIUXuZoEU79zNCilyNyukyN2skCJ3s0KKTYoLpMjdrJAid7NCitzNCilyNyukyN0skOKDu1khRe5mhRS5mxVS5G5WSLFJcYEUuZsVUuRuVkiRu1khRe5mhRS5m+2neD9wNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKR+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G4WSPHE3ayQInezQorczQopcjcrpNikuECK3M0KKXI3G0jxemrHv197PR/OfYrczQopcjcrpMjdLJDimbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUmzczQopcjcrpMjdrJAid7NCik2KC6TI3ayQInezQorczQopcjcrpMjdLJDihbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUrxyNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyN1tI8ccVzxQvrfUpcjcrpMjdLJDijbtZIUXuZoUUuZsVUuRuVkixSXGBFLmbFVLkblZIkbtZIUXuZoUUuZsFUrxzNyukyN2skCJ3s0KK3M0KKTYpLpAid7NCitzNCilyNyukyN2skCJ3s0CKD+5mhRS5mxVS5G5WSJG7WSHFJsUFUuRuVkiRu1khRe5mhRS5mxVS5G62n+LjwN2skCJ3s0KK3M0KKXI3K6TYpLhAitzNCilyNyukyN2skCJ3s0KK3M0CKR65mxVS5G5WSJG7WSFF7maFFJsUF0iRu1khRe5mhRS5mxVS5G5WSJG7WSDFE3ezQorczQopcjcrpMjdbCHF++35Y68/Huz3KTYpLpAid7NCitzNFlL80SW+UvzldxtefD+fnz/4fr5cP1zcnuHdr+d+Ojgh0/F6Orgm0/F6Ojgs0/FyOs7cmOl4PR2cm+l4PR1cnul4PR0coel4PR3NdJiOl9PBaZqO19PBlZqO19PBlZqO19PBlZqO19PBlZqOl9PRuFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8Xo6mukwHS+ngys1Ha+ngys1Ha+ngys1Ha+ngys1Ha+ngys1HS+n48KVmo7X08GVmo7X08GVmo7X08GVmo7X09FMh+l4OR1cqel4PR1cqel4PR1cqel4PR1cqel4PR1cqel4OR1XrtR0vJ4OrtR0vJ4OrtR0vJ4OrtR0vJ6OZjpMx8vp4EpNx+vp4EpNx+vp4EpNx+vp4EpNx+vp4EpNx8vpuHGlpuP1dHClpuP1dHClpuP1dHClpuP1dDTTYTpeTgdXajpeTwdXajpeTwdXajpeTwdXajpeTwdXajpeTsedKzUdr6eDKzUdr6eDKzUdr6eDKzUdr6ejmQ7T8XI6uFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8Xo6uFLT8XI6Hlyp6Xg9HVyp6Xg9HVyp6Xg9HVyp6Xg9Hc10mI6X08GVmo7X08GVmo7X08GVmo7X08GVmo7X08GVmo4X03E5HLhS0/F6OrhS0/F6OrhS0/F6OrhS0/F6OprpMB0vp4MrNR2vp4MrNR2vp4MrNR2vp4MrNR2vp4MrNR0vp+PIlZqO19PBlZqO19PBlZqO19PBlZqO19PRTIfpeDkdXKnpeD0dXKnpeD0dXKnpeD0dXKnpeD0dXKnpeDkdJ67UdLyeDq7UdLyeDq7UdLyeDq7UdLyejmY6TMfL6eBKTcfr6eBKTcfr6eBKTcfr6eBKTcfr6eBKTcfL6Thzpabj9XRwpabj9XRwpabj9XRwpabj9XQ002E6Xk4HV7redBzPX9NxbX3kBOhykbfL1x/yH/+N9xefHrf78wM/Hj/n43QdXPy3f7Xy/Mg/SsqvF/85THypYUobJnrVMKUNExtrmLKGqZG3hiltmLhew5Q2TNSwYUobJibZMKUNUzNMhilrmHhqw5Q2TAy4YUobJgbcMKUNEwNumNKGiQE3TFnDdGHADVPaMDHghiltmBhww5Q2TAy4YUobpmaYDFPWMDHghiltmBhww5Q2TAy4YUobJgbcMKUNEwNumLKG6cqAG6a0YWLADVPaMDHghiltmBhww5Q2TM0wGaasYWLADVPaMDHghiltmBhww5Q2TAy4YUobJgbcMGUN040BN0xpw8SAG6a0YWLADVPaMDHghiltmJphMkxZw8SAG6a0YWLADVPaMDHghiltmBhww5Q2TAy4YcoapjsDbpjShokBN0xpw8SAG6a0YWLADVPaMDXDZJiyhokBN0xpw8SAG6a0YWLADVPaMDHghiltmBhww5Q1TA8G3DClDRMDbpjShmmnBvx2ef7o2/3yYZja+fBk2M7HxwfgPz7pE/ipDYDv1BJ/H/AG+FzgO7WN3wd8p0bu+4Dv1Fp9H/Cdmp3vA75T+/FdwI+HnRqC7wO+0xb9fcA1zcnANc3JwBvgc4FrmpOBa5qTgWuak4FrmpOBa5pzgR81zcnANc3JwDXNycA1zcnAG+BzgWuak4FrmpOBa5qTgWuak4FrmnOBnzTNycA1zcnANc3JwDXNycAb4HOBa5qTgWuak4FrmpOBa5qTgWuac4GfNc3JwDXNycA1zcnANc3JwBvgc4FrmpOBa5qTgWuak4FrmpOBa5pzgTdNczJwTfMz8Ovl+AR+vd56hspjnKE+GGfYMAwz1No+M7wdnp+63Y4DhopYnKFuFWeoLsUZakBhhhelJnxfvugpcYZ6SpyhnhJn2DAM31P0lDhDPSXOUE+JM9RT4gz1lDDDq54SZ6inxBnqKXGGekqcYcMwzFBPiTPUU+IM9ZQ4Qz0l7L6uekqY4U1PiTPUU+IM9ZTwPeWmp8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMMO7nhJnqKfEGeopcYZ6SpxhwzDMUE+JM9RTwu7rrqfEGeopcYZ6SpjhQ08J31MeekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQow9NBT4kz1FPiDPWUOEM9Jc6wYRh0X6eDnhJnqKfEGeopcYZ6SvyeoqeEGR71lDhDPSXOUE+JM9RT4gwbhmGGekqcoZ4SZ6inxBnqKXGGekqY4UlPiTPUU+IM9ZSw+zrpKXGGDcMwQz0lzlBPid9T9JQ4Qz0lzlBPCTM86ylxhnpKnKGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMEOH18fdl/PoExjqKXGGekqcYcMwfE/RU+IM9ZQ4Qz0lzlBPiTPUU8IMnUefwFBPiTPUU+IM9ZQ4w4ZhmKGeEmeop8QZ6ilxhnpK2H05jz7O0Hn0CQz1lDhDPSV8T3EefQLDhmGYoZ4SZ6inxBnqKXGGekqcoZ4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0l7L6cR5/AUE+JM9RTwgydRx+/pziPPoGhnhJnqKfEGTYMwwz1lDhDPSXOUE+JM9RT4gz1lDBD59EnMNRT4gz1lDhDPSXOsGEYdV/Oo09gqKfEGeopcYZ6SvyeoqdEGZ6dR5/AUE+JM9RT4gz1lDjDhmGYoZ4SZ6inxBnqKXGGekqcoZ4SZug8+gSGekqcoZ4SdV9n59EnMGwYhhnqKXGGekr8nqKnxBnqKXGGekqYofPoExjqKXGGekqcoZ4SZ9gwDDPUU+IM9ZQ4Qz0lzlBPiTPUU8IMnUcfd1/Oo09gqKfEGeopcYYNw/A9RU+JM9RT4gz1lDhDPSXOUE8JM3QefQJDPSXOUE+JM9RT4gwbhmGGekqcoZ4SZ6inxBnqKWH35Tz6OEPn0Scw1FPiDPWU8D3FefQJDBuGYYZ6SpyhnhJnqKfEGeopcYZ6Spih8+gTGOopcYZ6SpyhnhJn2DAMM9RT4gz1lLD7ch59AkM9Jc5QTwkzdB59/J7iPPoEhnpKnKGeEmfYMAwz1FPiDPWUOEM9Jc5QT4kz1FPCDJ1Hn8BQT4kz1FPiDPWUOMOGYdR9OY8+gaGeEmeop8QZ6inxe4qeEmboPPoEhnpKnKGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUKMPmPPoEhnpKnKGeEnVfzXn0CQwbhmGGekqcoZ4Sv6foKXGGekqcoZ4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQwQ+fRx92X8+gTGOopcYZ6SpxhwzB8T9FT4gz1lDhDPSXOUE+JM9RTwgydR5/AUE+JM9RT4gz1lDjDhmGYoZ4SZ6inxBnqKXGGekrYfTmPPs7QefQJDPWUOEM9JXxPcR59AsOGYZihnhJnqKfEGeopcYZ6SpyhnhJm6Dz6BIZ6SpyhnhJnqKfEGTYMwwz1lDhDPSXsvpxHn8BQT4kz1FPCDJ1HH7+nOI8+gaGeEmeop8QZNgzDDPWUOEM9Jc5QT4kz1FPiDPWUMEPn0Scw1FPiDPWUOEM9Jc6wYRh1X86jT2Cop8QZ6ilxhnpK/J6ip4QZOo8+gaGeEmeop8QZ6ilxhg3DMEM9Jc5QT4kz1FPiDPWUOEM9JczQefQJDPWUOEM9Jey+nEefwLBhGGaop8QZ6inxe4qeEmeop8QZ6ilRhhfn0Scw1FPiDPWUOEM9Jc6wYRhmqKfEGeopcYZ6SpyhnhJnqKeEGTqPPuy+Ls6jT2Cop8QZ6ilxhg3D8D1FT4kz1FPiDPWUOEM9Jc5QTwkzdB59AkM9Jc5QT4kz1FPiDBuGYYZ6SpyhnhJnqKfEGeopYfflPPo4Q+fRJzDUU+IM9ZTwPcV59AkMG4ZhhnpKnKGeEmeop8QZ6ilxhnpKmKHz6BMY6ilxhnpKnKGeEmfYMAwz1FPiDPWUsPtyHn0CQz0lzlBPCTN0Hn38nuI8+gSGekqcoZ4SZ9gwDDPUU+IM9ZQ4Qz0lzlBPiTPUU8IMnUefwFBPiTPUU+IM9ZQ4w4Zh1H05jz6BoZ4SZ6inxBnqKfF7ip4SZug8+gSGekqcoZ4SZ6inxBk2DMMM9ZQ4Qz0lzlBPiTPUU+IM9ZQwQ+fRJzDUU+IM9ZSw+3IefQLDhmGYoZ4SZ6inxO8pekqcoZ4SZ6inhBk6jz6BoZ4SZ6inxBnqKXGGDcMwQz0lzlBPiTPUU+IM9ZQ4Qz0lyvDqPPqw+7o6jz6BoZ4SZ6inxBk2DMP3FD0lzlBPiTPUU+IM9ZQ4Qz0lzNB59AkM9ZQ4Qz0lzlBPiTNsGIYZ6ilxhnpKnKGeEmeop4Tdl/Po4wydR5/AUE+JM9RTwvcU59EnMGwYhhnqKXGGekqcoZ4SZ6inxBnqKWGGzqNPYKinxBnqKXGGekqcYcMwzFBPiTPUU8Luy3n0CQz1lDhDPSXM0Hn08XuK8+gTGOopcYZ6SpxhwzDMUE+JM9RT4gz1lDhDPSXOUE8JM3QefQJDPSXOUE+JM9RT4gwbhlH35Tz6BIZ6SpyhnhL/PtRT4gz1lDBD59EnMNRT4gz1lDhDPSW82ziPPoGhnhJnqKfEvw/1lDhDPSXOUE8JM3QefQJDPSXOUE8J7zbOo09g2DAMM9RT4gz1lPg9RU+JM9RT4gz1lDBD59EnMNRT4gz1lDhDPSXOsGEYZqinxBnqKXGGespnhvfT/cnwfj70DPfaUx7PD30/H/+B4Z9Y1qkex8NTmByPl/sHLOfr19Xna/t09aU9iV/uvwA/3kc/+daOP3n88oe5/Ul8oQPpqxC/X58Xn+8j4uvUmq0QX6cEbYX4OpVpK8Qb4pOJr1PHtkJ8nfK2FeLrVL2tEF+nGG6FuM75LxC/Hq5/v/h6vnwgfr8+r73ffy35f7qP20HlTAb+uLa/X/v49Y/DD+ADM3U+nJ9m6nx8/GqmBn/OfjB4/kE7teM/a6zbQZddJkoleZkote9lomyiXCVKvmCZKImIZaJkOJaJkjpZJkpOZpUoj2zPMlGyPctEyfYsEyXbs0yUTZSrRMn2LBMl27NMlGzPMlGyPctEyfasEuWJ7VkmSrZnmSjZnmWiZHuWibKJcpUo2Z5lomR7lomS7VkmSrZnmSjZnlWiPLM9y0TJ9iwTJduzTJRszzJRNlGuEiXbs0yUbM8yUbI9y0TJ9iwTJduzSpSN7VkmSrZnmSjZnmWiZHuWibKJcpUo2Z5lomR7lomS7VkmSrZnmSjZnlWivLA93xnl+/O2bxcCp3I6nEzldGiWyuk06XxjOu/P/rxdyJDK6fAbldOhLCqnw0JUTodYKLyzXbmCyulwBZXT4Qoqp8MVFN4Krk06hdPhCiqnwxVUTocrqJwOV1A5Ha6gcDo3rqByOlxB5XS4gsrpcAWV02nSKZwOV1A5Ha6gcjpcQeEnCDeuoHI6XEHhdO5cQeV0uILCW8GdK6icDldQOZ0mncLpcAWV0+EKKqfDFVROhyuonA5XUDidB1dQOR2uoHI6XEHldLiCyuk06RROhyso/AThwRVUTocrqJwOV1A5Ha6g7lZwP3AFldPhCiqnwxVUTocrqJxOk07hdLiCyulwBZXT4Qoqp8MVVE6HKyiczpErqJwOV1A5Ha6gcjpcQd0nCPdjk07hdLiCyulwBZXT4QoqbwVcQeV0uILC6Zy4gsrpcAWV0+EKKqfDFVROp0mncDpcQeV0uILK6XAFldPhCiqnwxUUTufMFVROhyso/AThzBVUTocrqJxOk07hdLiCylsBV1A5Ha6gcjpcQeV0uILC6TSuoHI6XEHldLiCyulwBZXTadIpnA5XUDkdrqByOlxB5XS4gsrpcAWFnyBcuILK6XAFldPhCiqnwxUU3gouTTqF0+EKKqfDFVROhyuonA5XUDkdrqBwOleuoHI6XEHldLiCyulwBZXTadIpnA5XUDkdrqByOlxB4ScIV66gcjpcQeF0blxB5XS4gsJbwY0rqJwOV1A5nSadwulwBZXT4Qoqp8MVVE6HK6icDldQOJ07V1A5Ha6gcjpcQeV0uILK6TTpFE6HKyj8BOHOFVROhyuonA5XUDkdrqDwVvDgCiqnwxVUTocrqJwOV1A5nSadwulwBZXT4Qoqp8MVVE6HK6icDldQN53HgSuonA5XUDkdrqByOlxB3ScIj0OTTuF0uILK6XAFldPhCipvBVxB5XS4gsLpHLmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58QVVE6HKyj8BOHEFVROhyuonE6TTuF0uILKWwFXUDkdrqByOlxB5XS4gsLpnLmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRR+gtC4gsrpcAWV0+EKKqfDFRTeClqTTuF0uILK6XAFldPhCiqnwxVUTocrKJzOhSuonA5XUDkdrqByOlxB5XSadAqnwxVUTocrqJwOV1D4CcKFK6icDldQOJ0rV1A5Ha6g8FZw5Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58YVVE6HK6icDldQOR2uoHI6TTqF0+EKCj9BuHEFldPhCiqnwxVUTocrKLwV3LmCyulwBZXT4Qoqp8MVVE6nSadwOlxB5XS4gsrpcAWV0+EKKqfDFRRO58EVVE6HK6icDldQOR2uoPAThEeTTuF0uILK6XAFldPhCipvBVxB5XS4grLpXA8HrqByOlxB5XS4gsrpcAWV02nSKZwOV1A5Ha6gcjpcQeV0uILK6XAFhdM5cgWV0+EKyj5B+PERuYLK6XAFldNp0imcDldQeSvgCiqnwxVUTocrqJwOV1A4nRNXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILCTxDOXEHldLiCyulwBZXT4QoKbwXnJp3C6XAFldPhCiqnwxVUTocrqJwOV1A4ncYVVE6HK6icDldQOR2uoHI6TTqF0+EKKqfDFVROhyso/AShcQWV0+EKCqdz4Qoqp8MVFN4KLlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILC6Vy5gsrpcAWV0+EKKqfDFVROp0mncDpcQeEnCFeuoHI6XEHldLiCyulwBYW3ghtXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uILC6dy5gsrpcAWV0+EKKqfDFRR+gnBv0imcDldQOR2uoHI6XEHlrYArqJwOV1A4nQdXUDkdrqByOlxB5XS4gsrpNOkUTocrqJwOV1A5Ha6gcjpcQeV0uIK66RwPXEHldLiCuk8QjgeuoHI6XEHldJp0CqfDFVTeCriCyulwBZXT4Qoqp8MVFE7nyBVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoPAThBNXUDkdrqByOlxB5XS4gsJbwalJp3A6XEHldLiCyulwBZXT4Qoqp8MVFE7nzBVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HKyj8BOHMFVROhysonE7jCiqnwxUU3goaV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6F66gcjpcQeV0uILK6XAFldNp0imcDldQ+AnChSuonA5XUDkdrqByOlxB4a3gyhVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6N66gcjpcQeV0uILK6XAFhZ8g3Jp0CqfDFVROhyuonA5XUHkr4Aoqp8MVFE7nzhVUTocrqJwOV1A5Ha6gcjpNOoXT4Qoqp8MVVE6HK6icDldQOR2uoHA6D66gcjpcQeEnCA+uoHI6XEHldJp0CqfDFVTeCriCyulwBZXT4Qoqp8MV1E3ndOAKKqfDFVROhyuonA5XUDmdJp3C6XAFldPhCiqnwxVUTocrqJwOV1D3CcLpyBVUTocrqJwOV1A5Ha6g8FZwbNIpnA5XUDkdrqByOlxB5XS4gsrpcAWF0zlxBZXT4Qoqp8MVVE6HK6icTpNO4XS4gsrpcAWV0+EKCj9BOHEFldPhCgqnc+YKKqfDFRTeCs5cQeV0uILK6TTpFE6HK6icDldQOR2uoHI6XEHldLiCwuk0rqByOlxB5XS4gsrpcAWV02nSKZwOV1D4CULjCiqnwxVUTocrqJwOV1B4K7hwBZXT4Qoqp8MVVE6HK6icTpNO4XS4gsrpcAWV0+EKKqfDFVROhysonM6VK6icDldQOR2uoHI6XEHhJwjXJp3C6XAFldPhCirfd7iCyulwBZXT4QoKp3PjCiqnwxVUTocrKLxR37iCyuk06RROhyuofN/hCiqnwxVUTocrqJwOV1A4nTtXUDkdrqDwRn3nCiqnwxVUTqdJp3A6XEHlrYArqJwOV1A5Ha6gcjpcQeF0HlxB5XS4gsrpcAWV0+EKKqfTpFM4Ha6gcjpcwXemcz/dn+ncz4c+Ha4gOZ1jO399jna5fsjnej4dv350a7/mM/rQ1/vXh779/NGny+ji8/HxvPh8uvx68Z/J8xB7TZ7j2Gfy5wN/stfkuZlVk2/tyfrcfuHxlTzvs9fkOaVlk7995dIep/cX/9j0v37y4XD4cHG7XJ4pttv9/cWXw/Pay/n4z9XyfGjGz/h93/ixgsbvt8fv8fzJp8vpEBo/2tP4feP48brG73fH73Z+4jjdbpcPFx/a8xc8Ha4tNKtMtFndyqxy52b1r53V21Pkno6HU2RWj2y/Wd3KrHo+YVb/NqCn9jWr5w8/+XS+f81qO5x/vfjPmfLkw0z97kzlCcijxy/G7xvHrxk/4/d94+fxi/H77fFL899Hj1+M3zeOn8cvxu93x+/6NVKn668z9ayzHpOYqeyZ8jjDTCXP1MljBzOVPVMeD5ip352p33mUdbx/RX58HPtnCSfPEgzgtw6gpwkG8K8cwMS/JHVqZtWsbmRWPacwq1uZVQ81zOpfO6tpf6Hv5AmIWd3KrHqyYlZ/XHH8epPd+XiO9nVPVsxU8kydPVkxU785U4n14+whjPH7xvHzCMb4feP4eQBj/H57/NI66rkZP+P3fePnMcmq43e5nJ8XX64f/s3P7/1b8g//PvfscYaZ+uPbXhB49oTC+H3j+HnoYPy+cfw8nzB+f3zb+ymbRxnG7xvHz6MM4/e74/fh3yg1zyfMVPZMeehgprJnqpkpM5U8Ux4PmKk//sJXzX76q3HNswQD+K0D6GmCAfxjG4cYNI8ezOpWZtVzCrO6kVm9eKhhVv/YxoEbF09AzOpWZtWTFbP6x7e9yv7iIYzx+8bxa8bP+H3bq+wvHu0Yv28cPw92jN8f23g/28UzILO6lVn1DMis/rGN97NdPAMyqxuZ1atnQGb1j9z3vl09qzFT2TPlmYqZ+uPb3qZ19UzF+H3j+DXjZ/y+b/w8UzF+f3zby9yunqkYv28cP49Jssfv/gX8eD8d/2H8/kTO9k9HTlrPRn7jXqcjpyb/SuTHNkDO3E1HzlZNR94gn42clZiOXBOfvrFon9ORa5/TkWufs5Hftc/pyLXP6ci1z+nItc/pyBvks5Frn9ORa5/TkWufEx+9/4lc+5yOXPucjfyhfU5Hrn1OR659/gvIb+35se/Hwwfk18Pzr3VdTz8fUJyPx78D1z0nA2+AzwWud04GrnVOBq5zTgaucU4Grm9OBd4O2uZk4LrmZOCa5mTgmuZk4A3wucA1zcnANc3JwDXNycA1zcnANc25wI+a5mTgmuZk4JrmZOCa5mTgDfC5wDXNycA1zcnANc3JwDXNycA1zbnAT5rmZOCa5mTgmuZk4JrmvwD8/ni+s/Lx8W+In65fx2r+guM8egll+6JxOd4+XHq4Pv+S+g//df314j9zbHJcIke9eI0c1e01ctTi18iRHFgjR85hiRzPVMYaOTIka+RIvKyRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyRY+Nz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc9bIkc9ZI0c+Z40c+Zxt5Hi6P39sO7fT+4tPx+Pz856OrfWhkz/7C/3BFO0wdFpph6FzUDsMnbDaYehN6PsLnQrbYei82Q5DJ9l2GDojt8PQGbndhX45MHI7DJ2R22HojNwOQ2fkdhh6E/r+Qmfkdhg6I7fD0Bm5HYbOyO0wdEZuf6EfGbkdhs7I7TB0Rm6HoTNyOwy9CX1/oTNyOwydkdth6IzcDkNn5HYYOiO3v9BPjNwOQ2fkNhH65XR/Ur6cT5c+R5JtjRx5szVybHJcIkd2a40cCas1cuSg1siRVlojR6ZoiRzP5M8aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyRY+Nz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc7aR448nGs9rL39j+8858jlr5MjnrJEjn7NGjnzOEjk++Jw1cuRz1siRz1kjRz5njRybHJfIkc9ZI0c+Z40c+Zw1cuRz1siRz1khx+uBz1kjRz5njRz5nDVy5HPWyLHJcYkc+Zw1cuRz1siRz1kjRz5njRz5nCVyPPI5a+TI56yRI5+zRo58zho5NjkukSOfs0aOfM4aOfI5a+TI56yRI5+zRI4nPmeNHPmcNXLkc9bIkc9ZI8cmxyVy5HPWyJHPWSNHPmeNHPmcNXLkc5bI8cznrJEjn7NGjnzOGjnyOWvk2OS4RI58zho58jlr5MjnrJEjn7NGjnzOEjk2PmeNHPmcNXLkc9bIkc9ZI8cmxyVy5HPWyJHPWSNHPmeNHPmcNXLkczaR4/XUnp/3ej6cuxwvfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45XPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXK88Tlr5MjnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NEjnc+Z40c+Zw1cuRz1siRz1kjxybHJXLkc9bIkc9ZI0c+Z40c+Zw1cuRzlsjxwedsI8cfVzxzvLTW58jnrJEjn7NGjnzOGjk2OS6RI5+zRo58zho58jlr5MjnrJEjn7NCjrcDn7NGjnzOGjnyOWvkyOeskWOT4xI58jlr5MjnrJEjn7NGjnzOGjnyOUvkeORz1siRz1kjRz5njRz5nDVybHJcIkc+Z40c+Zw1cuRz1siRz1kjRz5niRxPfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs0aOfM4aOfI5a+TI5yyR45nPWSNHPmeNHPmcNXLkc9bIsclxiRz5nDVy5HPWyJHPWSNHPmeNHPmcJXJsfM4aOfI5a+TI56yRI5+zRo5NjkvkyOeskSOfs40c77fnj70+Dtc+Rz5njRz5nDVy5HO2kePjdPjK8XJ4f/H9fH7+4Pv5cv1wcXvGd79252bdLjyR+Xg3H/yT+Xg3H7yW+Xg3H3yZ+Xg3H818mI8388HvmY9388Ebmo9388FHmo9388Fzmo9388Gfmo8383HlT83Hu/ngT83Hu/ngT83Hu/ngT83Hu/lo5sN8vJkP/tR8vJsP/tR8vJsP/tR8vJsP/tR8vJsP/tR8vJmPG39qPt7NB39qPt7NB39qPt7NB39qPt7NRzMf5uPNfPCn5uPdfPCn5uPdfPCn5uPdfPCn5uPdfPCn5uPNfNz5U/Pxbj74U/Pxbj74U/Pxbj74U/Pxbj6a+TAfb+aDPzUf7+aDPzUf7+aDPzUf7+aDPzUf7+aDPzUfb+bjwZ+aj3fzwZ+aj3fzwZ+aj3fzwZ+aj3fz0cyH+XgzH/yp+Xg3H/yp+Xg3H/yp+Xg3H/yp+Xg3H/yp+Xg9H/cDf2o+3s0Hf2o+3s0Hf2o+3s0Hf2o+3s1HMx/m48188Kfm49188Kfm49188Kfm49188Kfm49188Kfm4818HPlT8/FuPvhT8/FuPvhT8/FuPvhT8/FuPpr5MB9v5oM/NR/v5oM/NR/v5oM/NR/v5oM/NR/v5oM/NR9v5uPEn5qPd/PBn5qPd/PBn5qPd/PBn5qPd/PRzIf5eDMf/Kn5eDcf/Kn5eDcf/Kn5eDcf/Kn5eDcf/Kn5eDMfZ/7UfLybD/7UfLybD/7UfLybD/7UfLybj2Y+zMeb+eBPzce7+eBPzce7+eBPzce7+eBPzce7+eBPzceb+Wj8qfl4Nx/8qfl4Nx/8qfl4Nx/8qfl4Nx/NfJiPN/PBn5qPd/PBn5qPd/PBn5qPd/PBn5qPd/PBn5qPN/Nx4U/Nx7v54E/Nx7v54E/Nx7v54E/Nx7v5aObDfLyZD/7UfLybD/7UfLybD/7UfLybD/50xfk4nr/m49r60EnRBUNvl68/6D/+G+8vPj1u9+cHfjx+TsjpOrj4cvgap8vhfPz14n8bpyuHapwSx4lyNU6J48TQGqfEcSJ0jVPiODXjZJzyxokuNk6J48QuG6fEcSKjjVPiOHHXxilxnFhx45Q3TjdW3DgljhMrbpwSx4kVN06J48SKG6fEcWrGyTjljRMrbpwSx4kVN06J48SKG6fEcWLFjVPiOLHixilvnO6suHFKHCdW3DgljhMrbpwSx4kVN06J49SMk3HKGydW3DgljhMrbpwSx4kVN06J48SKG6fEcWLFjVPeOD1YceOUOE6suHFKHCdW3DgljhMrbpwSx6kZJ+OUN06suHFKHCdW3DgljhMrbpwSx4kVN06J48SKG6e0cXocWHHjlDhOrLhxShwnVtw4JY4TK26cEsepGSfjlDdOrLhxShwnVtw4JY4TK26cEseJFTdOiePEihunvHE6suLGKXGcWHHjlDhOrLhxShwnVtw4JY5TM07GKW+c9mrF74evT/2D/j9c/SeYdfzu6XL9uvrWPoA5Xe6P5ye5/vIbvrj6fH/+7FM7/Pwkp8vfKa6jNf9Kiu3y9RXUfvklT5fhn+jntZfRn+d1xN9fCvzx/B1Pl9MhBHwdNfZXAr9+QTxdf6X49++J0zpG6K+keDt/fdvebpf3Y3u8f/2Sxx8lpEe+jjXZDPJ1zEIV5KdDe259p8O1Rb7JT+sU9RXTadJJT+f29aOPh1MonXVq5IrpLNRlDz/TeXzi3X72qtZu109Xnw9PVdLOx8evFAfAf3zWJ/FTGyBfqPhuBflC1XcryBcqvxtBfl6oKW8F+UJNeSvIF2rKW0G+UP3dCvIG+WzkCxXVrSDXPqcj1z6nI9c+pyPXPmcjb9rndOTa53Tk2ud05NrndOQN8tnItc/pyLXP6ci1z+nItc/pyLXP2cgv2ud05NrndOTa53Tk2ud05A3y2ci1z+nItc/pyLXP6ci1z+nItc/ZyK/a53Tk2ud05NrndOTa53TkDfLZyLXP6ci1z+nItc/pyLXP6ci1z9nIb9rndOTa53Tk2ud05NrndOQN8tnItc9/Bfn18nxfV7tebz1FhTKDoo6YQVHty6Coyf0rFG+H5+dut2NP8a6cZVDUtzIoqlAZFLWiDIoNxfg9+q67ZFDUXTIo6i4ZFHWXjLuL7pJA8aG7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd8mgqLuEKd4OB90lg6LukkFRdwmbsR8UdZcMig3FBIq6SwZF3SXj7qK7ZFDUXTIo6i4JFI+6SwZF3SWDou6SQVF3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWT7pJgxk66SwZF3SWDou6SQbGhmHB30V0yKOouGRR1lwyKuksGRd0lgeJZd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SYMbOuksCxaa7ZFDUXTIo6i4Jd5emu2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiRXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKukuCGbvoLhkUdZcMirpLAsWr7pJwd7nqLhkUdZcMirpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKN50lwyKuksGRd0lg6LukkGxoRg3YzfdJYOi7pJBUXfJoKi7ZNxddJcEinfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJDd8mgqLtkUNRdEszYQ3fJoNhQTKCou2RQ1F0y7i66SwZF3SWDou4Sp3g86C4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUj7pL3Iwdj7pLBkXdJYOi7pJBsaGYcHfRXTIo6i4ZFHWXDIq6SwZF3SWB4kl3yaCou2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJgxk66SwLFs+6SQVF3yaCouyTcXc66SwbFhmICRd0lg6LukkFRd8mgqLtkUNRdEig23SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglmrOkuGRR1lwyKuksCxYvuknB3ueguGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIoXnWXDIq6SwZF3SWDou6SQbGhGDdjV90lg6LukkFRd8mgqLtk3F10lwSKN90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6SwZF3SWB4l13yaCou2RQ1F0SzNhdd8mg2FBMoKi7ZFDUXTLuLrpLBkXdJYOi7pJA8aG7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd8mgqLvEKZ4OukvcjJ0OuksGRd0lg6LukkGxoZhwd9FdMijqLhkUdZcMirpLBkXdJYHiUXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukmDGjrpLAsWT7pJBUXfJoKi7JNxdTrpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKJ51lwyKuksGRd0lg6LukkGxoZhAUXfJoKi7JJixs+6SQVF3yaCouyRQbLpLwt2l6S4ZFHWXDIq6SwbFhmICRd0lg6LukkFRd8mgqLtkUNRdEihedJcMirpLBkXdJYOi7pJBsaEYN2MX3SWDou6SQVF3yaCou2TcXXSXBIpX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiTXfJoKi7ZFDUXRLM2E13yaDYUEygqLtkUNRdMu4uuksGRd0lg6LukkDxrrtkUNRdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQfOguCWbsobtkUNRdMijqLhkUG4oJdxfdJYOi7pJBUXfJoKi7ZFDUXeIUzwfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukvcjJ0PuksCxaPukkFRd8mgqLsk3F2OuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIonnSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLskmLGT7pJBUXfJoKi7JFA86y4Jd5ez7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgWLTXTIo6i4ZFHWXDIq6SwbFhmLcjDXdJYOi7pJBUXfJoKi7ZNxddJcEihfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJVd8mgqLtkUNRdEszYVXfJoNhQTKCou2RQ1F0y7i66SwZF3SWDou6SQPGmu2RQ1F0yKOouGRR1lwyKDcUEirpLBkXdJYOi7pJBUXfJoKi7JFC86y4JZuyuu2RQ1F0yKOouGRQbigl3F90lg6LukkFRd8mgqLtkUNRdEig+dJcMirpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouCWbsobvEKbaD7pJBUXfJoKi7xO8u7aC7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJRd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6S4IZO+ouGRR1lwyKuksCxZPuknB3OekuGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7ZFDUXRIonnWXDIq6SwZF3SWDou6SQbGhGDdjZ90lg6LukkFRd8mgqLtk3F10lwSKTXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNFdMijqLhkUdZcEM3bRXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQvOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFG+6S4IZu+kuGRR1lwyKuksGxYZiwt1Fd8mgqLtkUNRdMijqLhkUdZcEinfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukuCGbvrLgkUH7pLBkXdJeF78aG7ZFDUXTIoNhQTKOouGRR1lwyKukvGpqO7ZFDUXeIULwfdJf69eDnoLhkUdZcMirpLBsWGYgJF3SWDou6SsenoLhkUdZcMirpLAsWj7pJwdznqLhkUdZcMirpLBsWGYgJF3SWDou6SQVF3yaCou2RQ1F0SKJ50lwyKusu/QvF+uj+vvp8PPcW9dpcfv/mTy6WdP119PpyfV5+Pj18p9hf/+MnPiy+nduyR77XofCPyBvls5HutUN+IfK996xuR77WcfSPyvTa5b0S+19r3fcjPe+2I34h8r4XyG5Frn9ORa5/TkTfIZyPXPqcj1z6nI9c+pyPXPqcj1z5nI2/a53Tk2ud05NrndOTa53TkDfLZyLXP6ci1z+nItc/pyLXP6ci1z9nIL9rndOTa53Tk2ud05NrndOQN8tnItc/pyLXP6ci1z+nItc/pyLXP2civ2ud05NrndOTa53Tk2ud05A3y2ci1z+nItc/pyLXP6ci1z+nItc/ZyG/a53Tk2ue/gvzDC3lvCmUGRR0xg2JDMYGiJvevUPzwmrqbcpZBUd/KoKhCZVDUihIo3hWdhHv0XXfJoKi7ZFDUXTIoNhQT7i66SwZF3SWDou6SQVF3yaCouyRQfOguGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXRLM2EN3iVO8HnSXDIq6SwZF3SV+d7kedJcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQPOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXdJMGNH3SWDou6SQVF3SaB40l0S7i4n3SWDou6SQVF3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWz7pJBUXfJoKi7ZFDUXTIoNhTjZuysu2RQ1F0yKOouGRR1l4y7i+6SQLHpLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRQvuksGRd0lg6LukmDGLrpLBsWGYgJF3SWDou6ScXfRXTIo6i4ZFHWXBIpX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiTXdJMGM33SWDou6SQVF3yaDYUEy4u+guGRR1lwyKuksGRd0lg6LukkDxrrtkUNRdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3STBjd90lgeJDd8mgqLtkUNRdEu4uD90lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i5xireD7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1l7gZux10lwyKuksGRd0lgeJRd0m4uxx1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFE+6SwZF3SWDou6SQVF3yaDYUIybsZPukkFRd8mgqLtkUNRdMu4uuksCxbPukkFRd8mgqLtkUNRdMig2FBMo6i4ZFHWXDIq6SwZF3SWDou6SQLHpLhkUdZcMirpLghlruksGxYZiAkXdJYOi7pJxd9FdMijqLhkUdZcEihfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKuksGRd0lgeJVd0kwY1fdJYOi7pJBUXfJoNhQTLi76C4ZFHWXDIq6SwZF3SWDou6SQPGmu2RQ1F0yKOouGRR1lwyKDcUEirpLBkXdJYOi7pJBUXdJMGM33SWB4l13yaCou2RQ1F0S7i533SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUH7pLBkXdJYOi7pJBUXfJoNhQTKCou2RQ1F0SzNhDd8mgqLtkUNRd4hTvB90lfnf5gQjFBIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLgkUj7pLBkXdJYOi7pJBUXfJoNhQjJuxo+6SQVF3yaCou2RQ1F0y7i66SwLFk+6SQVF3yaCou2RQ1F0yKDYUEyjqLhkUdZcMirpLBkXdJYOi7pJA8ay7ZFDUXTIo6i4JZuysu2RQbCgmUNRdMijqLhl3F90lg6LukkFRd0mg2HSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEihfdJcGMXXSXDIq6SwZF3SWDYkMx4e6iu2RQ1F0yKOouGRR1lwyKuksCxavukkFRd8mgqLtkUNRdMig2FBMo6i4ZFHWXDIq6SwZF3SXBjF11lwSKN90lg6LukkFRd0m4u9x0lwyKDcUEirpLBkXdJYOi7pJBUXfJoKi7JFC86y4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd0kwY3fdJYOi7pJBUXdJoPjQXRLuLg/dJYOi7pJBUXfJoNhQTKCou2RQ1F0yKOouGRR1lwyKukuc4uOgu2RQ1F0yKOouGRR1lwyKDcWwGXscdJcMirpLBkXdJYOi7pJxd9FdEigedZcMirpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKJ90lg6LukkFRd0kwYyfdJYNiQzGBou6SQVF3ybi76C4ZFHWXDIq6SwLFs+6SQVF3yaCou2RQ1F0yKDYUEyjqLhkUdZcMirpLBkXdJYOi7pJAsekuCWas6S4ZFHWXDIq6SwbFhmLC3UV3yaCou2RQ1F0yKOouGRR1lwSKF90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6S4IZu+guCRSvuksGRd0lg6LuknB3ueouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjTXTIo6i4ZFHWXDIq6SwbFhmICRd0lg6LukmDGbrpLBkXdJYOi7pJA8a67JNxd7rpLBkXdJYOi7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKD90lg6LukkFRd8mgqLtkUGwoxs3YQ3fJoKi7ZFDUXTIo6i4ZdxfdJUzxfjjoLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRSPuksGRd0lg6LuEjZjPwjpLhkUG4oJFHWXDIq6S8bdRXfJoKi7ZFDUXRIonnSXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEimfdJcGMnXWXDIq6SwZF3SWDYkMx4e6iu2RQ1F0yKOouGRR1lwyKuksCxaa7ZFDUXTIo6i4ZFHWXDIoNxQSKuksGRd0lg6LukkFRd0kwY013SaB40V0yKOouGRR1l4S7y0V3yaDYUEygqLtkUNRdMijqLhkUdZcMirpLAsWr7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1lwQzdtVdMijqLhkUdZcEijfdJeHuctNdMijqLhkUdZcMig3FBIq6SwZF3SWDou6SQVF3yaCouyRQvOsuGRR1lwyKuksGRd0lg2JDMW7G7rpLBkXdJYOi7pLxvai7ZFDUXRIoPnSXDIq6SwZF3SWDou6SsOk8GooJFHWXDIq6S8b3ou6SQVF3yaCou8QpHg+6SwZF3SWDou4S33SOB90lg2JDMYGi7pJBUXfJuLvoLhkUdZcMirpLAsWj7pJBUXfJoKi7ZFDUXTIoNhQTKOouGRR1lwyKusu/QvF+uj+vvp8PPcXddpf7F8XrsX26+nw4P68+Hx+/Uuwv/pHP8+LLqR175LstOt+G/LTbVvR9yHdbob4P+W771vch3205+z7kDfLZyHdb+74P+W474vch322h/D7k2ud05NrnbORn7XM6cu1zOnLtczpy7XM68gb5bOTa53Tk2ud05NrndOTa53Tk2uds5E37nI5c+5yOXPucjlz7nI68QT4bufY5Hbn2OR259jkdufY5Hbn2ORv5Rfucjlz7nI5c+5yOXPucjrxBPhu59jkdufY5Hbn2OR259jkdufY5G/lV+5yOXPucjlz7nI5c+5yOvEE+G7n2OR259jkdufb5ryD/8ELeq0KZQVFHTKB4U/syKGpy/wrFD6+puylnGRT1rQyKDcUEilpRBkVFJ+MerbtkUNRdMijqLgkU77pLwt3lrrtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SQVF3SaD40F0yKOouGRR1lwyKuksGxYZi3Iw9dJcMirpLBkXdJYOi7pJxd9Fd4hRPB90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4ZFHWXDIq6SwZF3SWB4lF3yaCou2RQ1F3iZux01F0yKDYUEyjqLhkUdZeMu4vukkFRd8mgqLskUDzpLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRTPukuCGTvrLhkUdZcMirpLBsWGYsLdRXfJoKi7ZFDUXTIo6i4ZFHWXBIpNd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SYMaa7pJA8aK7ZFDUXTIo6i4Jd5eL7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKV90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4JZuyqu2RQ1F0yKOouCRRvukvC3eWmu2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjXXTIo6i4ZFHWXDIq6SwbFhmLcjN11lwyKuksGRd0lg6LuknF30V0SKD50lwyKuksGRd0lg6LukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXOMXzQXfJoKi7ZFDUXeJm7HzQXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQPOouGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFE+6S4IZO+kuGRR1lwyKuksGxYZiwt1Fd8mgqLtkUNRdMijqLhkUdZcEimfdJYOi7pJBUXfJoKi7ZFBsKCZQ1F0yKOouGRR1lwyKukuCGTvrLgkUm+6SQVF3yaCouyTcXZrukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIoX3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglm7KK7ZFDUXTIo6i4JFK+6S8Ld5aq7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNNdMijqLhkUdZcMirpLBsWGYtyM3XSXDIq6SwZF3SWDou6ScXfRXRIo3nWXDIq6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEig/dJYOi7pJBUXdJMGMP3SWDYkMxgaLukkFRd8m4u+guGRR1lwyKukucYjvoLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRSPukvcjLWj7pJBUXfJoKi7ZFBsKCbcXXSXDIq6SwZF3SWDou6SQVF3SaB40l0yKOouGRR1lwyKuksGxYZiAkXdJYOi7pJBUXfJoKi7JJixk+6SQPGsu2RQ1F0yKOouCXeXs+6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEik13yaCou2RQ1F0yKOouGRQbigkUdZcMirpLghlruksGRd0lg6LukkDxorsk3F0uuksGRd0lg6LukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIpX3SWDou6SQVF3yaCou2RQbCjGzdhVd8mgqLtkUNRdMijqLhl3F90lgeJNd8mgqLtkUNRdMijqLhkUG4oJFHWXDIq6SwZF3SWDou6SQVF3SaB4110yKOouGRR1lwQzdtddMig2FBMo6i4ZFHWXjLuL7pJBUXfJoKi7JFB86C4ZFHWXDIq6SwZF3SWDYkMxgaLukkFRd8mgqLtkUNRdMijqLnGKl4PuEjdjl4PukkFRd8mgqLtkUGwoJtxddJcMirpLBkXdJYOi7pJBUXdJoHjUXTIo6i4ZFHWXDIq6SwbFhmICRd0lg6LukkFRd8mgqLskmLGj7pJA8aS7ZFDUXTIo6i4Jd5eT7pJBsaGYQFF3yaCou2RQ1F0yKOouGRR1lwSKZ90lg6LukkFRd8mgqLtkUGwoJlDUXTIo6i4JZuysu2RQ1F0yKOouCRSb7pJwd2m6SwZF3SWDou6SQbGhmEBRd8mgqLtkUNRdMijqLhkUdZcEihfdJYOi7pJBUXfJoKi7ZFBsKMbN2EV3yaCou2RQ1F0yKOouGXcX3SWB4lV3yaCou2RQ1F0yKOouGRQbigkUdZcMirpLBkXdJYOi7pJBUXdJoHjTXTIo6i4ZFHWXBDN2010yKDYUEyjqLhkUdZeMu4vukkFRd8mgqLskULzrLhkUdZcMirpLBkXdJYNiQzGBou6SQVF3yaCou2RQ1F0yKOouCRQfukuCGXvoLhkUdZcMirpLBsWGYsLdRXfJoKi7ZFDUXTIo6i4ZFHWXOMXrQXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LuEjdj14PukkDxqLtkUNRdMijqLgl3l6PukkGxoZhAUXfJoKi7ZFDUXTIo6i4ZFHWXBIon3SWDou6SQVF3yaCou2RQbCgmUNRdMijqLglm7KS7ZFDUXTIo6i4JFM+6S8Ld5ay7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mg2HSXDIq6SwZF3SWDou6SQbGhGDdjTXfJoKi7ZFDUXTIo6i4ZdxfdJYHiRXfJoKi7ZFDUXTIo6i4ZFBuKCRR1lwyKuksGRd0lg6LukkFRd0mgeNVdMijqLhkUdZcEM3bVXTIoNhQTKOouGRR1l4y7i+6SQVF3yaCouyRQvOkuGRR1lwyKuksGRd0lg2JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4JFO+6S4IZu+suGRR1lwyKukvG92JDMYGi7pJBUXfJoKi7ZFDUXTIo6i4Jm85Dd8mgqLtkUNRdEr4XH7pLBsWGYgJF3SWDou6SQVF3yaCou2RsOrpLnOLtoLtkUNRdMijqLvG7y+2gu2RQbCgmUNRdMijqLhkUdZcMirpLBkXdJYHiUXfJoKi7ZFDUXTIo6i7/CsX76f68+n4+9BTbTileL+2L4uPy4er79fmj7/dff/IT4l6ry29BfFyfFz/uh3+AOPjJ58P5+ZPPx8evY9tffPnxe/394supHfsZ32sn2kg8ey1bG4lnry1uI/HstR5uI57TXnvnRuLZa6HdSDx7bcobiWevFXwj8TTxVI6HNSgdD2tQOh7WoHQ8rEHpeFiDyvGcWYPS8bAGpeNhDUrHwxqUjqeJp3I8rEHpeFiD0vGwBqXjYQ1Kx8MaVI6nsQal42ENSsfDGpSOhzUoHU8TT+V4WIPS8bAGpeNhDUrHwxqUjoc1qBzPhTUoHQ9rUDoe1qB0PKxB6XiaeCrHwxqUjoc1KB0Pa1A6HtagdDysQeV4rqxB6XhYg9LxsAal42ENSsfTxFM5HtYgO54Ph2FciYDZxHX72cTV9dnENfBs4h9eaX1TqmcT15NnE1d9ZxPXZmcTb4jP3VVuOuds4jrnbOI652ziOufsO6fOOZn4XeecTVznnE1c55xNXOecTbwhPpm4zjmbuM45m7jOOZu4zjmbuM45mfhD55xNXOecTVznnGxrHzrnbOIN8cnEdc7ZxHXO2XdOnXM2cZ1zNnGdcy7x+0HnnE1c55xNXOecTVznnE28IT6ZuM45m7jOOZu4zjmbuM45m7jOOZn4Ueeca2vvR51zNnGdczZxnXM28Yb45DunzjmbuM45m7jOOZu4zjmbuM45mfhJ55xNXOecTVznnE1c55xNvCE+mbjOOZu4zjmbuM45m7jOOdnWnnTOycTPOuds4jrnbOI65+Q751nnnE28IT6ZuM45m7jOOZu4zjmbuM45m7jOOZl40zlnE9c5ZxPXOWcT1zlnE2+ITyauc84mrnNOtrVN55xNXOecTVznnEz8onNOvnNedM7ZxHXO2cR1ztnEG+KTieucs4nrnLOJ65yzieucs4nrnJOJX3XO2cR1ztnEdc7ZxHXO2cQb4nNt7VXnnE1c55xNXOecTVznnH3n1DknE7/pnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOWcT1zlnE9c5ZxPXOScTv+ucs4nrnLOJ65yTbe1d55xNvCE+mbjOOZu4zjn7zqlzziauc84mrnNOJv7QOWcT1zlnE9c5ZxPXOWcTb4hPJq5zziauc84mrnPOJq5zziauc84l/jjonHNt7eOgc84mrnPOJq5zzibeEJ9859Q5ZxPXOWcT1zlnE9c5ZxPXOScTP+qcs4nrnLOJ65yzieucs4k3xCcT1zlnE9c5ZxPXOWcT1zkn29qjzjmZ+EnnnE1c55xNXOecfOc86ZyziTfEJxPXOWcT1zlnE9c5ZxPXOWcT1zknEz/rnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOSfb2rPOOZu4zjmbuM45mXjTOSffOZvOOZu4zjmbuM45m3hDfDJxnXM2cZ1zNnGdczZxnXM2cZ1zMvGLzjmbuM45m7jOOZu4zjmbeEN8rq296Jyzieucs4nrnLOJ65yz75w652TiV51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnbOI652ziOuds4jrnZOI3nXM2cZ1zNnGdc7Ktvemcs4k3xCcT1zlnE9c5Z985dc7ZxHXO2cR1zsnE7zrnbOI652ziOuds4jrnbOIN8cnEdc7ZxHXO2cR1ztnEdc7ZxHXOycQfOudkW/vQOWcT1zlnE9c5ZxNviE++c+qcs4nrnLOJ65yzieucs4nrnFOJPw4HnXM2cZ1zNnGdczZxnXM28Yb4ZOI652ziOuds4jrnbOI651Rb+4O4zjmZ+FHnnE1c55xNXOecfOc86pyziTfEJxPXOWcT1zlnE9c5ZxPXOWcT1zknEz/pnLOJ65yzieucs4nrnLOJN8QnE9c5ZxPXOSfb2pPOOZu4zjmbuM45mfhZ55x85zzrnLOJ65yzieucs4k3xCcT1zlnE9c5ZxPXOWcT1zlnE9c5JxNvOuds4jrnbOI652ziOuds4g3xuba26Zyzieucs4nrnLOJ65yz75w652TiF51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnbOI652ziOuds4jrnZOJXnXM2cZ1zNnGdc7Ktveqcs4k3xCcT1zlnE9c5Z985dc7ZxHXO2cR1zsnEbzrnbOI652ziOuds4jrnbOIN8cnEdc7ZxHXO2cR1ztnEdc7ZxHXOycTvOudkW3vXOWcT1zlnE9c5ZxNviE++c+qcs4nrnLOJ65yzieucs4nrnJOJP3TO2cR1ztnEdc7ZxHXO2cQb4pOJ65yzieucs4nrnLOJ65yTbe1D55xL/HjQOWcT1zlnE9c55945jwedczbxhvhk4jrnbOI652ziOuds4jrnbOI652TiR51zNnGdczZxnXM2cZ1zNvGG+GTiOuds4jrnZFt71DlnE9c5ZxPXOScTP+mck++cJ51zNnGdczZxnXM28Yb4ZOI652ziOuds4jrnbOI652ziOudk4medczZxnXM2cZ1zNnGdczbxhvj/19657TayZVf2X85zPcRl7bh8TKFRNhqNAgpVDbu6AcOof7cyT5LSSZFiMmJyaoox/GD4wNyh4BhbihhLTIV3WjvSnG7iNKebOM3pJk5zuq+cNKeZeNGcbuI0p5s4zekmTnO6iRfEzcRpTjdxmtNNnOZ0E6c53cRpTjPxRnO6idOcbuI0p3la22hON/GCuJk4zekmTnO6r5w0p5s4zekmTnOaiU80p5s4zekmTnO6idOcbuIFcTNxmtNNnOZ0E6c53cRpTjdxmtNMfKY5zdPameZ0E6c53cRpTjfxgrj5yklzuonTnG7iNKebOM3pJk5zmokvNKebOM3pJk5zuonTnG7iBXEzcZrTTZzmdBOnOd3EaU7ztHahOc3EV5rTTZzmdBOnOc1XzpXmdBMviJuJ05xu4jSnmzjN6SZOc7qJ05xe4kNHc7qJ05xu4jSnmzjN6SZeEDcTpzndxGlO77R26GhON3Ga002c5jQT72lO85WzpzndxGlON3Ga0028IG4mTnO6idOcbuI0p5s4zekmTnOaiQ80p5s4zekmTnO6idOcbuIFce+0dqA53cRpTjdxmtNNnOZ0XzlpTjPxkeZ0E6c53cRpTjdxmtNNvCBuJk5zuonTnG7iNKebOM3pJk5zmokXzekmTnO6idOc5mlt0Zxu4gVxM3Ga002c5nRfOWlON3Ga002c5jQTbzSnmzjN6SZOc7qJ05xu4gVxM3Ga002c5nQTpzndxGlON3Ga00x8ojnN09qJ5nQTpzndxGlON/GCuPnKSXO6idOcbuI0p5s4zekmTnOaic80p5s4zekmTnO6idOcbuIFcTNxmtNNnOZ0E6c53cRpTvO0dqY5zcQXmtNNnOY0/xxfaE43cZrTTbwgbiZOc7qJ05xu4jSn++6Q5nQTpznNxFea0/xzfKU53cRpTjdxmtNNvCBuJk5zuonTnO67Q5rTTZzmdBOnOb3Ex47m9F45x47mdBOnOd3EaU438YK4mTjN6SZOc7qJ05xu4jSnmzjNaSbe05xu4jSnmvgyLKcjL2P3njjN+QvE+xpP06m+2nSD+TQOp1dPY9Vb5pfoTSdBLyBfDz20Sy8e+/X04nFob1/8u0169plsFjafyCYd/kw2afyvZLPqxG+stry3yfzgmWwym/hSNucz61qHj188rMv5yF3X3XhxtXYyU/Py8Ytbd3ptG/v3mcTwhS2l3VID0yW21PcttZ6OPLSh27WlGJ+xpcRbivkgW+rbi+fxRG+Y53bjxV2d3uAL9Nq1/5hosv8+c/8V+4/9d/f+m0/Dw6Hvhl37j6kx++8z9x9z7mfdf2M31Hn/jTeOPIzLef9VN7598e/7hAk6+0Q8IGOMz5YSbynG+Gwp7ZYaGeOzpbQz15ExPltKvKUY47OlvpmZzttkmN7ukx8ZNzJuZ5/8yj4p9gn75Bf2CeNr9smv7BPGzOyTf975a45+OWvs1/79THpkJs2mkm8qptJsqns3lfADKSMjbPbfJ+6/Yt7N/vvM/cdwnP13//6TfSCqmKSz/z5z/zGhf9r915//OtLYjzs7tYp9wj75hX3ChJ59Ir5FZ5jPlhJvKUb5bCnxlmKQz5YStxmzebaUdks1xu1faUu1Np5e3KYb/67gvn//eePf3zXG4uyTby/W/cuWxqSbLSXeUgyv2VLiLVVsKbbUb8p/LNUYibOlxFuKkThb6tuLb/w7iMacm33yK/uE4TX75Ff2CRNp9skv7JOJMTP75NuLlf9UamImzaaSbyqm0myqezeV8GMjEyNs9t9n7r9i/7H/PnH/MRxn/92//2QfiJqYpLP/PnP/MaF/1v33WX9CeGKYz5YSbynm/myp71tK9hGGmV8RsKXEW4pfELClPnGWMfO7BPbfZ+4/fpfA/vvEWcZc7D/23yfuP36X8LT7T/k3imZm/uyTX9knzObZJ+JbdGbzbCnxlmI2z5bSbqmF2TxbSttmC7N5tpR4SzFu/5UttZwh9svQ/2FL/Y6RqbEEY4FRgZEZngQjI657MfZ1ASMTIAlGph4SjJS+AuNK3UowUnSKK/VKxUgwUjESjAVGBUYqRoKRipFgpGIkGKkYCUYqRoCxOipGgpGKkWCkYnb+eu93jFSMBGOBUYGRipFgpGIkGI9aMWt/OpN6ofCHV/8O5qhdchPMUUvjFpj+qO1wE8xRa+AmmKPe398Ec9Q79ptgCjCXwRz1rvommKPeJ98Ew53vFTDc+V4Bw53vZTADd75XwHDnewUMd75XwHDnewVMAeYyGO58r4DhzvcKGO58r4DhzvcKGO58L4MZufO9AoY73ytguPO9AoY73ytgCjCXwXDnewUMd75XwHDnewXMQe98Wzeejt36ubvx6r4b1vPBX1au59cPfXfp9dWd/jpI/1Jd51ePdfFt9udPg/Zv/tLQy4t/V3TQe/AvpKgOWgNfSdFBu+ReReM4viqq+ZaiZT7/zc/lzblsU3TQQvpKig7aal9JUaGoX4ZbN8ZjdzL0MrJ6cyW69Mfe2su5ng49VP/2xb8jP2iPfibyg5buZyI/aEN/JnLq3I6c2nYjb9SzHTk1bEdO3dqRU6t25AVyN3Lq046c+rQjpz7tyKlPO3Lq0418oj7tyKlPO3Lq046c+rQjL5C7kVOfduTUpx059WlHTn3akVOfbuQz9WlHTn3akVOfduTUpx15gdyNnPq0I6c+7cipTzty6tOOnPp0I1+oTzty6tOOnPq0I6c+7cgL5G7k1KcdOfVpR0592pFTn3bk1Kcb+Up92pFTn3bk1KcdOfX5K8indnpEaE3T/J5iQVFAkUZUUCT7FBQpuV+hOHfnv5k79xcoEmcKivTWfoqtI6EUFKkiBUVCZ/81+uVgUBRQLCgKKNIuCoq0i+LqQrsoKNIuCoq0i4BiT7soKNIuCoq0i4Ii7aKgWFAUUKRdFBRpFwVF2kVBkXZRUKRdBBQH2kUwGRtoFwVF2kVBkXZRUCwoCq4utIuCIu2ioEi7KCjSLgqKtIuA4ki7KCjSLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2EUzGRtpFQLFoFwVF2kVBkXYRXF2KdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuAoqNdlFQpF0UFGkXBUXaRUGxoCigSLsoKNIugslYo10UFGkXBUXaRUBxol0EV5eJdlFQpF0UFGkXBcWCooAi7aKgSLsoKNIuCoq0i4Ii7SKgONMuCoq0i4Ii7aKgSLsoKBYU90/GZtpFQZF2UVCkXRQUaRfF1YV2EVBcaBcFRdpFQZF2UVCkXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJKuygo0i4KirSLYDK20i4KigVFAUXaRUGRdlFcXWgXBUXaRUGRdtlPcepoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu2ioEi7KCjSLgqKtIuAYk+77J+MTT3toqBIuygo0i4KigVFwdWFdlFQpF0UFGkXBUXaRUGRdhFQHGgXBUXaRUGRdlFQpF0UFAuKAoq0i4Ii7aKgSLsoKNIugsnYQLsIKI60i4Ii7aKgSLsIri4j7aKgWFAUUKRdFBRpFwVF2kVBkXZRUKRdBBSLdlFQpF0UFGkXBUXaRUGxoCigSLsoKNIugslY0S4KirSLgiLtIqDYaBfB1aXRLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2UVCkXQQUJ9pFQZF2UVCkXRQUaRcFxYLi/snYRLsoKNIuCoq0i4Ii7aK4utAuAooz7aKgSLsoKNIuCoq0i4JiQVFAkXZRUKRdFBRpFwVF2kVBkXYRUFxoFwVF2kVBkXYRTMYW2kVBsaAooEi7KCjSLoqrC+2ioEi7KCjSLgKKK+2ioEi7KCjSLgqKtIuCYkFRQJF2UVCkXRQUaRcFRdpFQZF22U9x7miX/ZOxuaNdFBRpFwVF2kVBsaAouLrQLgqKtIuCIu2ioEi7KCjSLgKKPe2ioEi7KCjSLgqKtIuCYkFRQJF2UVCkXRQUaRcFRdpFMBnraRcBxYF2UVCkXRQUaRfB1WWgXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJIuygo0i4KirSLgiLtoqBYUBRQpF0UFGkXwWRspF0UFGkXBUXaRUCxaBfB1aVoFwVF2kVBkXZRUCwoCijSLgqKtIuCIu2ioEi7KCjSLgKKjXZRUKRdFBRpFwVF2kVBsaC4fzLWaBcFRdpFQZF2UVCkXRRXF9pFQHGiXRQUaRcFRdpFQZF2UVAsKAoo0i4KirSLgiLtoqBIuygo0i4CijPtoqBIuygo0i6CydhMuygoFhQFFGkXBUXaRXF1oV0UFGkXBUXaRUBxoV0UFGkXBUXaRUGRdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuAoor7SKYjK20i4Ii7aKgSLsoKBYUBVcX2kVBkXZRUKRdFBRpFwVF2mU/xaWjXRQUaRcFRdpFQZF2UVAsKAoo0i4KirSLgiLtoqBIu+yfjC0d7SKg2NMuCoq0i4Ii7SK4uvS0i4JiQVFAkXZRUKRdFBRpFwVF2kVBkXYRUBxoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu0imIwNtIuCIu2ioEi7CCiOtIvg6jLSLgqKtIuCIu2ioFhQFFCkXRQUaRcFRdpFQZF2UVCkXQQUi3ZRUKRdFBRpFwVF2kVBsaC4fzJWtIuCIu2ioEi7KCjSLoqrC+0ioNhoFwVF2kVBkXZRUKRdFBQLigKKtIuCIu2ioEi7KCjSLgqKtIuA4kS7KCjSLgqKtItgMjbRLgqKBUUBRdpFQZF2UVxdaBcFRdpFQZF2EVCcaRcFRdpFQZF2UVCkXRQUC4oCirSLgiLtoqBIuygo0i4KirSLgOJCuwgmYwvtoqBIuygo0i4KigVFwdWFdlFQpF0UFGkXBUXaRUGRdhFQXGkXBUXaRUGRdlFQpF0UFAuKAoq0i4Ii7aKgSLsoKNIugsnYSrvsp7h2tIuCIu2ioEi77L+6rB3toqBYUBRQpF0UFGkXBUXaRUGRdlFQpF0EFHvaRUGRdlFQpF0UFGkXBcWCooAi7aKgSLsIJmM97aKgSLsoKNIuAooD7SK4ugy0i4Ii7aKgSLsoKBYUBRRpFwVF2kVBkXZRUKRdFBRpFwHFkXZRUKRdFBRpFwVF2kVBsaC4fzI20i4KirSLgiLtoqBIuyiuLrSLgGLRLgqKtIuCIu2ioEi7KCgWFAUUaRcFRdpFQZF2UVCkXRQUaRcBxUa7KCjSLgqKtItgMtZoFwXFgqKAIu2ioEi7KK4utIuCIu2ioEi7CChOtIuCIu2ioEi7KCjSLgqKBUUBRdpFQZF2UVCkXRQUaRcFRdpFQHGmXQSTsZl2UVCkXRQUaRcFxYKi4OpCuygo0i4KirSLgiLtoqBIuwgoLrSLgiLtoqBIuygo0i4KigVFAUXaRUGRdlFQpF0UFGkXwWRsoV0EFFfaRUGRdlFQpF0EV5eVdlFQLCgKKNIuCoq0i4Ii7aKgSLsoKNIuuyn23cv/gFGBkXqRYCRfJBjpFwnGAqMCIwUjwUjC7B6QfcNIw0gwEjESjFSM4mdjT8VIMFIxEoxUjAQjFSPBWGBUYKRiFDc8PRUjwUjFSDBSMZKfjVSMAuNAxUgwUjESjFSMBCMVI8FYYBTc8AxUjAQjFSPBSMVIMFIxkksMFaPAOFIxEoxUjAQjFSPBSMVIMBYYFRipGAlGKkaCkYqRYKRiJBipmF/BuAzLCeMydu8x1lErZqw6YRzn9Q+v/kHmqGFym8zztEZ17fTqGuYbZJbphHFZ3lI8fy89TzzcxWWdThtmXbo/cLnwA2nsxtMPpLFf3/5AurAVX870tBWH6i/89CqIm4k/T5J8FeLPUy9fhfjzhM5XIf48TfRViD9PPn0R4u15SuurEH+egvsqxA9ahp9InOZ0Ey+Im4nTnG7iNKebOM3pJk5zuonTnGbiE83pJk5zuonTnG7iNKebeEHcTJzmdBOnOd3EaU43cZrTTZzmNBOfaU43cZrTTZzmdBOnOd3EC+Jm4jSnmzjN6SZOc7qJ05xu4jSnmfhCc7qJ05xu4jSnmzjN6SZeEDcTpzndxGlON3Ga002c5nQTpznNxFea002c5nQTpzndxGnO28Rv/aHwtYC4HyJlKIBI7Akg0m+3Id76e5krSSaASGXthviCEYj7IdJCAojkze6rc99RLAKIBcT9ECkWAUSKRXBhoVgEECkWAUSKZT/EnmIRQKRYBBApFgFEikUAsYC4HyLFIoBIsQggUiwCiBSLACLFsh/iQLHsH4UNFIsAIsUigEixCCAWEPdfWCgWAUSKRQCRYhFApFgEECmW/RBHikUAkWIRQKRYBBApFgHEAuJ+iBSLACLFIoBIsQggUiz7R2EjxbIfYlEsAogUiwAixbL/wlIUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP8RGsQggUiwCiBSLACLFIoBYQNwPkWIRQKRY9o/CGsUigEixCCBSLPshThTL/gvLRLEIIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP8SZYhFApFgEECkWAUSKRQCxgLh7FDZTLAKIFIsAIsUigEixCC4sFMt+iAvFIoBIsQggUiwCiBSLAGIBcT9EikUAkWIRQKRYBBApFgFEimU/xJViEUCkWAQQKZb9ozCeea+AWEDcD5FiEUCkWAQXFopFAJFiEUCkWHZDHHjmvQIixSKASLEIIFIsAogFxP0QKRYBRIpFAJFiEUCkWAQQKZb9EHnm/f5R2MAz7xUQKRYBRIpFALGAuP/CQrEIIFIsAogUiwAixSKASLHsh8gz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsAogUiwAixbJ/FMYz7wUQeea9AiLFIoBIsey/sPDMewXEAuJ+iBSLACLFIoBIsQggUiwCiBTLfog8814BkWIRQKRYBBApFgHEAuJ+iBSLACLFsn8UxjPvFRApFgFEimU/RJ55L7iw8Mx7BUSKRQCRYhFALCDuh0ixCCBSLAKIFIsAIsUigEix7IfIM+8VECkWAUSKRQCRYhFALCDuHoXxzHsFRIpFAJFiEUCkWAQXFoplP0Seea+ASLEIIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP0Seea+ASLEIIFIs+0dhPPNeAbGAuB8ixSKASLEILiwUiwAixSKASLHsh8gz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsAogUiwAixSKASLHshjjyzPv9o7CRZ94rIFIsAogUiwBiAXH/hYViEUCkWAQQKRYBRIpFAJFi2Q+RZ94rIFIsAogUiwAixSKAWEDcD5FiEUCkWAQQKRYBRIpl/yiMZ94LIPLMewVEikUAkWLZf2HhmfcKiAXE/RApFgFEikUAkWIRQKRYBBAplv0Qeea9AiLFIoBIsQggUiwCiAXE/RApFgFEimX/KIxn3isgUiwCiBTLfog8815wYeGZ9wqIFIsAIsUigFhA3A+RYhFApFgEECkWAUSKRQCRYtkPkWfeKyBSLAKIFIsAIsUigFhA3D0K45n3CogUiwAixSKASLEILiwUy36IPPNeAZFiEUCkWAQQKRYBxALifogUiwAixSKASLEIIFIsAogUy36IPPNeAZFiEUCkWPaPwnjmvQJiAXE/RIpFAJFiEVxYKBYBRIpFAJFi2Q+RZ94rIFIsAogUiwAixSKAWEDcD5FiEUCkWAQQKRYBRIpFAJFi2Q+RZ94LRmE8814BkWIRQKRYBBALiPsvLBSLACLFIoBIsQggUiwCiBTLbojFM+8VECkWAUSKRQCRYhFALCDuh0ixCCBSLAKIFIsAIsWyexRWPPNeAJFn3isgUiwCiBTL/gsLz7xXQCwg7odIsQggUiwCiBSLACLFIoBIseyHyDPvFRApFgFEikUAkWIRQCwg7odIsQggUiz7R2E8814BkWIRQKRY9kPkmfeCCwvPvFdApFgEECkWAcQC4n6IFIsAIsUigEixCCBSLAKIFMt+iDzzXgGRYhFApFgEECkWAcQC4u5RGM+8V0CkWAQQKRYBRIpFcGGhWPZD5Jn3CogUiwAixSKASLEIIBYQ90OkWAQQKRYBRIpFAJFiEUCkWPZD5Jn3CogUiwAixbJ/FMYz7xUQC4j7IVIsAogUi+DCQrEIIFIsAogUy36IPPNeAZFiEUCkWAQQKRYBxALifogUiwAixSKASLEIIFIsAogUy36IPPNeMArjmfcKiBSLACLFIoBYQNx/YaFYBBApFgFEikUAkWIRQKRY9kPkmfcKiBSLACLFIoBIsQggFhD3Q6RYBBApFgFEikUAkWLZPwrjmff7ITaeea+ASLEIIFIsuy8sjWfeKyAWEPdDpFgEECkWAUSKRQCRYhFApFj2Q+SZ9wqIFIsAIsUigEixCCAWEPdDpFgEECmW/aMwnnmvgEixCCBSLPsh8sx7wYWFZ94rIFIsAogUiwBiAXE/RIpFAJFiEUCkWAQQKRYBRIplP0Seea+ASLEIIFIsAogUiwBiAXH3KIxn3isgUiwCiBSLACLFIriwUCz7IfLMewVEikUAkWIRQKRYBBALiPshUiwCiBSLACLFIoBIsQggUiz7IfLMewVEikUAkWLZPwrjmfcKiAXE/RApFgFEikVwYaFYBBApFgFEimU/RJ55r4BIsQggUiwCiBSLAGIBcT9EikUAkWIRQKRYBBApFgFEimU/RJ55LxiF8cx7BUSKRQCRYhFALCDuv7BQLAKIFIsAIsUigEixCCBSLPsh8sx7BUSKRQCRYhFApFgEEAuI+yFSLAKIFIsAIsUigEix7B+F8cx7AUSeea+ASLEIIFIs+y8sPPNeAbGAuB8ixSKASLEIIFIsAogUiwAixbIb4sQz7xUQKRYBRIpFAJFiEUAsIO6HSLEIIFIsu0dhE8+8V0CkWAQQKZb9PxN55r0CIsUigEixCCBSLAKIBcT9ECmW/bc4PPNeAZFiEUCkWAQ/EymW/RB55r0CIsUigEixCCBSLAKIBcTdtzg8814BkWIRQKRYBBApFsGFhWLZD5Fn3isgUiwCiBSLACLFIoBYQNwPkWIRQKRYBBApFgFEikUAkWK5DXEZlhPEZezeQzzqM+/7Gvvzq9t0A+PL7fTp1S/3M/UW4yUe04n5C5rXQw/t0ovHfj29ePz2itcX/xB00Br6OoIOWlpfR9BBK+7rCCoEfaqgqhORsdpyQdBB6/PrCDpo2eYIms/0ah0+fvGwLucjd11348XVTjyGmpePX9zO7NrYX7jXP2i6s0vu2iUHnU0cYZespyMPbej27ZKDDl/YJffsksZ06Vl3yTxOJ9bz3G68uKvTGxxefnTs21LMw9hS4i3FBI8t9W0fzac51dB3w74txcyRLSXeUsWW+jJbauyGOm+p8caRh3E5b6nqxn+9G+815q/Pql44uGkMgdklt3cJQ2B2ye1dwhD4aXeJcLzHEJhdcnOXTAyBn3WXTGcew/RW/SlcJoa1h1XPUPWw6hl+HlZ9of5J1d8z9+6Xs5h+7S9MNCcmmuyTX9knzDTZJ79Jf9s/MQBlS4m3FNNStpR4SzFaZUv9Jv0Aycwcli0l3lLMd7/QlurPf1Bj7Me9ZTYz3z2seua7T6peeQc7F7uEXXJzlzAIZpfc3iWMgZ92lwhrhMkuu+T2LmFY+7m7pLXx9OI23fiY8n3/NOvWv6OZGao+q3rhZ98X5qTsktu7hNEnu+T2LmFK+rS7RPcvJBYGquyS27uk2CVPuktufax6YUp6WPWMPg+rnnnmYdUzpHxW9dJ/H7Ew0WSf/MI+WZlpsk9+k/5OfmUAypYSbymmpWwp8ZZitMqW+k36AZK12FJsKe2WYr77dbbUp/1RxpVRMLvk9i5havy0u0T3y+SVATO75PYuYbz8rLvkk4J87phEs6XEW4pJNFtKGuRzxySaLSXeUkyiv9CWUv7BjLkr1B9VPZPdJ1UvvYNlsssuub1LmOyyS27vEia7T7tLhDXCZJddcnOX9Ecd1i6vr16G/g+75AeZo84cb5M56ujsNpmjToBukynILH1dInPU+cFtMkdt5ttkjtqJt8kctY1ukzlqD9y8Ng3cA18jwz3wNTLcA18jwz3wNTIFmStkuAe+RoZ74GtkuAe+RoZ74GtkuAe+QmbkQ7vvflvwgwyfPb1Gho9QXiPDJwGvkSnIXCHzRPfAS53f67ev/obMj/f6RHe1N9/rE92n3nyvT3TnefO9PtG95K33Wk90d3jzvT7R/d7N9/pEd3A33+sT3ZPdfK91oPd6oPumOtB9Ux3ovqkOdN9UB7pvage6b2oHum9qB7pvage6b2p1oPd6oPumdqD7pnag+6Z2oPumdqD7pulA903Tge6bpgPdN00Hum+a6kDv9UD3TVPyfdNQ57Mf5rrx6rWd/snkur6e8dB3l85jOv+p1jenPF7615V1PuPWzx+/dFi7E7Vhbd3bF/+AnXzj9nSwk+8cvxjssV9PpzAObz7bcNlM35/+WfTQv/kH169mku9zD21mTr4rP7aZ5IY4tpnk4jm2meQ+O7aZwkyomeT2PbYZSj3VDFmfaoYZQKoZZgChZhZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWZWZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAJlmlo4ZQKoZZgCpZpgBpJphBpBqpjATaoYZQKoZZgCpZpgBpJphBpBqhhlAqJnoZ8cf2wwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMAMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzIDCDVDDOAVDPMAHRmpvZKorsEm6yXwb71ZKVlLGD7YBPfRtj0tBE2iWyETfUaYROyPthFmxphk5tG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sBsFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBnihII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA/2TEEaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAXCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgXpg71SkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgZbOkDEl7EYSbUDG2aaoaQTTVD9aaaKcyEmqGnU80Q36lmKPVUM2R9qhlmAKFmemYAqWaYAaSaYQaQaoYZQKqZwkyoGWYAqWaYAaSaYQaQaoYZQKoZZgChZgZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWZGZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmihlAqhlmAKlmmAGkmmEGkGqmMBNqhhlAqhlmAKlmmAGkmmEGkGqGGUComcYMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzEDCDVDDOAVDPMAFLNMAPQmZnm6Uyi6z5+8VInassbEK9eCi+RXuj/TC/Uf6YX2j/TC+Wf6YXuj/QyU/2ZXmj+TC8Uf6YXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeFno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0rvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu8Heum7jt7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00tP7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXgZ6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0stI72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3opej/TC72f6YXez/RC72d6KbxEeqH3M73Q+5le6P1ML/R+phd6P9JLo/czvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9TPR+phd6P9MLvZ/phd7P9FJ4ifRC72d6ofczvdD7mV7o/Uwv9H6kl5nez/RC72d6ofczvdD7mV4KL5Fe6P1ML/R+phd6P9MLvZ/phd6P9LLQ+5le6P1ML/R+phd6P9NL4SXSC72f6YXez/RC72d6ofczvdD7kV5Wej/TC72f6YXez/RC72d6KbxEeqH3M73Q+5le6P1ML/R+phd6P9FL39H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXnp6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0stA72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3oZ6f1ML/R+phd6P9MLvZ/ppfAS6YXez/RC72d6ofczvdD7mV7ofaGX9kqiq/ewi4iXwR7W7kRtWFt3ATZlboRNbhth09BG2AVsH2xq1wibhDXCpkuNsIlNI2wK0ge7UZBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yJgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUH6YM8UpBE2BWmETUEaYVOQRtgFbB9sCtIIm4I0wqYgjbApSCNsCtIHe6EgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgVphE1BGmFTkD7YKwVphE1BGmFTkEbYFKQRdgHbB5uCNMKmII2wKUgjbArSCJuCtMEeOgrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQcpgjy830icSQ5tumOn78XQOfdUFM+RmqhnaNNUMIRtqpqd6U82QyKlm6OlUM8R3qpnCTKgZsj7VDDOAVDPMAFLNMANINcMMINTMwAwg1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMgMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1EwxA0g1wwwg1QwzgFQzzABSzRRmQs0wA0g1wwwg1QwzgFQzzABSzTADCDXTmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSamZgBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmAKlmmAGEmpmZAejMTPN0JtF1H794qRO15Q2IVy9MADK90P+ZXqj/TC+Fl0gvlH+mF7o/0wvVn+mF5s/0QvFHelno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9n+hl7Oj9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILz29n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWg9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I72M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXovczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9NHo/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0TvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8LvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpfczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9xO9VEfvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Heunp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8DvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpPczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9FL2f6YXez/RC72d6ofczvRReIr3Q+5le6H2hl/ZKoqsLsIl4Gexh7U7UhrV1F2BT5kbY5LYPdqOhjbAJYyNsatcIm4Q1wi5g+2ATm0bYFKQRNgVphE1BGmFTkD7YEwVphE1BGmFTkEbYFKQRdgHbB5uCNMKmII2wKUgjbArSCJuC9MGeKUgjbArSCJuCNMKmII2wC9g+2BSkETYFaYRNQRphU5BG2BSkD/ZCQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sFcK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BWmD3ToK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BemD3VOQRtgUpBE2BWmETUHKYI/9ejqFcWjTDTN9P57Ooa+6YKYwE2qGNk01Q8immqF6U82QyKlm6OlQMwPxnWqGUk81Q9anmmEGkGqmMBNqhhlAqhlmAKlmmAGkmmEGkGqGGUComZEZQKoZZgCpZpgBpJphBpBqpjATaoYZQKoZZgCpZpgBpJphBpBqhhlAqJliBpBqhhlAqhlmAKlmmAGkminMhJphBpBqhhlAqhlmAKlmmAGkmmEGEGqmMQNINcMMINUMM4BUM8wAUs0UZkLNMANINcMMINUMM4BUM8wAUs0wAwg1MzEDSDXDDCDVDDOAVDPMAFLNFGZCzTADSDXDDCDVDDOAVDPMAFLNMAMINTMzA0g1wwwg1QwzgFQzzABSzRRmQs0wA0g1wwwg1QwzAJ2ZaZ7OJLru4xcvdaK2vAHx6oUJQKYX+j/Sy0L9Z3qh/TO9UP6ZXuj+TC+Fl0gvNH+mF4o/0wu9n+mF3s/0Qu9Helnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9RC9TR+9neqH3M73Q+5le6P1ML4WXSC/0fqYXej/TC72f6YXez/RC70d66en9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILwO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWk9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70UvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+ml0fuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeJno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0zvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Helno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9n+jlZTleIr3Q+5le6P1ML/R+ppfCS6QXej/TC72f6YXez/RC72d6ofcjvfT0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJeB3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0vuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5Feit7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00uj9TC/0fqYXej/TC70v9NJeSXR1AXYBWwV7WLsTtWFt3QXYlLkRNrlthE1DG2ETxkbY1K4P9kTCGmHTpUbYxKYRNgVphF3A9sGmII2wKUgjbArSCJuCNMKmIH2wZwrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQRphU5BG2BSkETYF6YO9UJBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yVgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUHaYC8dBWmETUEaYVOQRtgUpBF2AdsHm4I0wqYgjbApSCNsCtIIm4L0we4pSCNsCtIIm4I0wqYgjbAL2D7YFKQRNgVphE1BGmFTkEbYFKQP9kBBymCP/Xo6hXFo0w0zfT+ezqGvumCG3Ew1Q5ummiFkU80UZkLNkMipZujpVDPEd6oZSj3VDFkfamZkBpBqhhlAqhlmAKlmmAGkminMhJphBpBqhhlAqhlmAKlmmAGkmmEGEGqmmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSaacwAUs0wA0g1wwwg1QwzgFQzhZlQM8wAUs0wA0g1wwwg1QwzgFQzzABCzUzMAFLNMANINcMMINUMM4BUM4WZUDPMAFLNMANINcMMINUMM4BUM8wAQs3MzABSzTADSDXDDCDVDDOAVDOFmVAzzABSzTADSDXDDCDVDDOAVDPMAELNLMwAUs0wA0g1wwwg1QwzgFQzhRmZmWmeziS67uMXL3WitrwB8eqFCUCmF/o/0wv1n+mF9s/0QvlHelnp/kwvVH+mF5o/0wvFn+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9RC9rR+9neqH3M73Q+5le6P1ML4WXSC/0fqYXej/TC72f6YXez/RC70d66en9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILwO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWk9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70UvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+ml0fuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeJno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0zvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Helno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8rvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+hl6Dp6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0ktP72d6ofczvdD7mV7o/UwvhZdIL/R+phd6P9MLvZ/phd7P9ELvR3oZ6P1ML/R+phd6P9MLvZ/ppfAS6YXez/RC72d6ofczvdD7mV7o/UgvI72f6YXez/RC72d6ofczvRReIr3Q+5le6P1ML/R+phd6P9MLvR/ppej9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1IL43ez/RC72d6ofczvdD7mV4KL5Fe6P1ML/R+phd6P9MLvZ/phd6P9DLR+0Iv7ZVEVxdgE/Ey2MPanagNa+suwKbMjbDJbSPsArYPNmFshE3tGmGTsEbYdKkRNrHpgz1TkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgf7IWCNMKmII2wKUgjbArSCLuA7YNNQRphU5BG2BSkETYFaYRNQfpgrxSkETYFaYRNQRphU5BG2AVsH2wK0gibgjTCpiCNsClII2wK0ga77yhII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92T0EaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAHCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkDLYY7+eTmEc2nTDzMvA9XQOfdUFM+RmqhnaNNTMSMimmqF6U82QyKlm6OlUM4WZUDOUeqoZsj7VDDOAVDPMAFLNMAMINVPMAFLNMANINcMMINUMM4BUM4WZUDPMAFLNMANINcMMINUMM4BUM8wAQs00ZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmJmYAqWaYAaSaYQaQaoYZQKqZwkyoGWYAqWaYAaSaYQaQaoYZQKoZZgChZmZmAKlmmAGkmmEGkGqGGUCqmcJMqBlmAKlmmAGkmmEGkGqGGUCqGWYAoWYWZgCpZpgBpJphBpBqhhlAqpnCTKgZZgCpZpgBpJphBpBqhhlAqhlmAKFmVmYAqWaYAejMTPN0JtF1H794qRO15Q2IVy9MADK90P+ZXgovkV5o/0wvlH+mF7o/0wvVn+mF5k/0MnQUf6YXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJee3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0PuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeRno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/SS9H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXhq9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWi9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I73M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXhd7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/0stL7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuJXsaO3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/TS0/uZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeBno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0jvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Heil6P9MLvZ/phd7P9ELvZ3opvER6ofczvdD7mV7o/Uwv9H6mF3o/0kuj9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I71M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PtCL+2VRFcXYBPxMtjD2p2oDWvrLsCmzH2wZ3LbCJuGNsImjI2wqV0j7AK2DzZdaoRNbBphU5BG2BSkETYF6YO9UJBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yVgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUHaYFdHQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sHsK0gibgjTCpiCNsClII+wCtg82BWmETUEaYVOQRtgUpBE2BemDPVCQRtgUpBE2BWmETUEaYRewfbApSCNsCtIIm4I0wqYgjbApSB/skYI0wqYgjbApSCNsCtIIu4Ctgj326+kUxqFNN8z0/Xg6h77qghlyM9UMbZpqhpBNNUP1ppohkUPNFD2daob4TjVDqaeaIetTzRRmQs0wA0g1wwwg1QwzgFQzzABSzTADCDXTmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSamZgBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmAKlmmAGEmpmZAaSaYQaQaoYZQKoZZgCpZgozoWaYAaSaYQaQaoYZQKoZZgCpZpgBhJpZmAGkmmEGkGqGGUCqGWYAqWYKM6FmmAGkmmEGkGqGGUCqGWYAqWaYAYSaWZkBpJphBpBqhhlAqhlmAKlmCjOhZpgBpJphBpBqhhlAqhlmADoz0zydSXTdxy9e6kRteQPi1QsTgEQvraP/M71Q/5leaP9ML5R/ppfCS6QXqj/TC82f6YXiz/RC72d6ofcjvfT0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJeB3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0vuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5Feit7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/00uj9TC/0fqYXej/TC72f6aXwEumF3s/0Qu9neqH3M73Q+5le6P1ILxO9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWm9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70s9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXld7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3k/0MnX0fqYXej/TC72f6YXez/RSeIn0Qu9neqH3M73Q+5le6P1ML/R+pJee3s/0Qu9neqH3M73Q+5leCi+RXuj9TC/0fqYXej/TC72f6YXej/Qy0PuZXuj9TC/0fqYXej/TS+El0gu9n+mF3s/0Qu9neqH3M73Q+5FeRno/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/SS9H7mV7o/Uwv9H6mF3o/00vhJdILvZ/phd7P9ELvZ3qh9zO90PuRXhq9n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWi9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I73M9H6mF3o/0wu9n+mF3s/0UnjReWmvJLq6AJuIl8Ee1u5EbVhbdwE2ZW6ETW4bYdPQRtiEsQ/2Qu0aYZOwRth0qRE2sWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbBXCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgVpgz13FKQRNgVphE1BGmFTkEbYBWwfbArSCJuCNMKmII2wKUgjbArSB7unII2wKUgjbArSCJuCNMIuYPtgU5BG2BSkETYFaYRNQRphU5A+2AMFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBHilII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92UZBG2BSkDPbYr6dTGIc23TDT9+PpHPqqC2bIzVQztGmqmcJMqBmqN9UMiZxqhp5ONUN8p5qh1EPNNLI+1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMQMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg1MzMDCDVDDOAVDPMAFLNMANINVOYCTXDDCDVDDOAVDPMAFLNMANINcMMINTMwgwg1QwzgFQzzABSzTADSDVTmAk1wwwg1QwzgFQzzABSzTADSDXDDCDUzMoMINUMM4BUM8wAUs0wA0g1U5gJNcMMINUMM4BUM8wAUs0wA0g1wwwg08zSMQNINcMMINUMM4BUM8wAUs0UZkLNMAPQmZnm6Uyi6z5+8VInassbEK9emABkeqH/M71Q/5leaP9ILz3ln+mF7s/0QvVneqH5M70UXiK90PuZXuj9TC/0fqYXej/TC70f6WWg9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I72M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXovczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9yO9NHo/0wu9n+mF3s/0Qu9neim8RHqh9zO90PuZXuj9TC/0fqYXej/Sy0TvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepnp/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8LvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llpfczvdD7mV7o/Uwv9H6ml8JLpBd6P9MLvZ/phd7P9ELvZ3qh9xO9rB29n+mF3s/0Qu9neqH3M70UXiK90PuZXuj9TC/0fqYXej/TC70f6aWn9zO90PuZXuj9TC/0fqaXwkukF3o/0wu9n+mF3s/0Qu9neqH3I70M9H6mF3o/0wu9n+mF3s/0UniJ9ELvZ3qh9zO90PuZXuj9TC/0fqSXkd7P9ELvZ3qh9zO90PuZXgovkV7o/Uwv9H6mF3o/0wu9n+mF3o/0UvR+phd6P9MLvZ/phd7P9FJ4ifRC72d6ofczvdD7mV7o/Uwv9H6kl0bvZ3qh9zO90PuZXuj9TC+Fl0gv9H6mF3o/0wu9n+mF3s/0Qu9Hepno/Uwv9H6mF3o/0wu9n+ml8BLphd7P9ELvZ3qh9zO90PuZXuj9SC8zvZ/phd7P9ELvZ3qh9zO9FF4ivdD7mV7o/Uwv9H6mF3o/0wu9H+llofczvdD7Qi/tlURXF2AT8TLYbVhOJNo4tAuwKXMj7AK2DzYNbYRNGBthU7tG2CSsETZd6oO9EptG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIF+yx6yhII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA92T0EaYVOQRtgUpBE2BWmEXcD2waYgjbApSCNsCtIIm4I0wqYgfbAHCtIIm4I0wqYgjbApSCPsArYPNgVphE1BGmFTkEbYFKQRNgXpgz1SkEbYFKQRNgVphE1BGmEXsH2wKUgjbArSCJuCNMKmII2wKUgf7KIgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgWpg93m82vbt/f/DjYFaYRNQfpgNwrSCJuCNMKmII2wKUgj7AK2DzYFaYRNQRphU5BG2BSkETYF6YM9UZBG2BSkETYFaYRNQRphF7B9sClII2wK0gibgjTCpiCNsClIH+yZgjTCpiCNsClII2wK0gi7gO2DTUEaYVOQRtgUpBE2BWmETUH6YC8UpBE2BWmETUEaYVOQRtgFbB9sCtIIm4I0wqYgjbApSCNsCtIHe6UgjbApSCNsCtIIm4I0wi5g+2BTkEbYFKQRNgVphE1BGmFTkDbYfUdBGmFTkEbYFKQRNgVphF3A9sGmII2wKUgjbArSCJuCNMKmIH2wewrSCJuClMGehup/vHYau/ECbArSCJuCNMIuYPtgU5BG2BSkETYFaYRNQRphU5A+2AMFqYP98ooT7FZ1ATYFaYRNQRphU5BG2AVsH2wK0gibgjTCpiCNsClII2wK0gd7pCCNsClII2wK0gibgjTCLmD7YFOQRtgUpBE2BWmETUEaYVOQPthFQRphU5BG2BSkETYFaYRdwPbBpiCNsClII2wK0gibgjTCpiB9sBsFaYRNQRphU5BG2BSkEXYB2webgjTCpiCNsClII2wK0gibgvTBnihII2wK0gibgjTCpiCNsAvYPtgUpBE2BWmETUEaYVOQRtgUpA/2TEEaYVOQRtgUpBE2BWmEXcD2waYgjbApSB3sZT4ddlq76QJsCtIIm4I0wqYgdbDXoTvDbt3HL17G8XTgZWzTjRfXCfEyXfgbrwtl+gQSKd4nkEhJP4FECv0JJBYSv75EJgpPIJFJxRNIZALyBBKZrDyBRCY2X1/iysTmCSQysXkCiUxsnkAiE5snkFhI/PoSmdg8gUQmNk8gkYnNE0hkYvMEEpnYfHmJQ8fE5rMk9uNZ4lQXzDCGSTXDbOWTzFQ7/zB7+Rofv3hY5+V0wuv6SmKYLry4dWfnrRv7ty/+4ZxRzPGcF84P55xBz/GcMxc6nnPGSMdzztTpeM4ZUh3Oec9M63jOmZYdzzlzuOM5Zw53POeF88M5Zw53POfM4Y7nnDnc8Zwzhzuec+Zwh3M+MIc7nnPmcMdzzhzueM6Zwx3PeeH8cM6Zwx3POXO44zlnDnc858zhjuecOdzhnI/M4Y7nnDnc8Zwzhzuec+Zwx3NeOD+cc+Zwx3POHO54zpnDHc85c7jjOWcOdzjnxRzueM6Zwx3POXO44zlnDnc854XzwzlnDnc858zhjuecOdzxnDOHO55z5nCHc96Ywx3POXO44zlnDnc858zhjue8cH4458zhjuecOdzxnDOHO55z7xxunMez83W56Xyu5VX61F5fv1wkM7Zled1SbxR9e/2P97se6/1OXfL7XefT92k/duOt91vDev72ez3nvp3f65W5w3D+yTGP9fF7nVv/47Xz/OZHUl383prW8/fW3HcKWcNXfwOj+Q305x0xjeuNNzAt6+uP5P71p+x8Ovn6yiffvvLJT1/55OevefIv//e//cdf//a3v/6f//W3f/z7X/7513/8/T+/rey+/a/LfxJ8mvrzwd78cK/lO4rp/iXz/UuW+5esdy+5/Nc0P1jy8l/9t1de/pOMNZ4W1jK8uSj237/WcP+S8f4ldf+Sdv+S6f4lF/dAa+cr0/R+yXL/kvXuJZf/ksPHSy7ab+f7pzZP75YM9y8Z719S9y+5aL+t52+Brnu3ZLp/yXz/kuX+JeutJcvPSy7/+4GPl/T3L7lof2rTacnbBvixZLx/Sd2/pN2/5PLP//l8/ZnXd0vm+5cs9y9Z715y+bfW03q6pM/d+G5Jf/+S4f4l4/1L6saSty31Y0m7f8l0/5KL9ufz6Gae3n2/XJ5WfLxkvXvJ5Wb+eMlF+/O5huf3F77LsffxkvH+JXX/kov25/U8oureXSwu38B/vGS+f8ly/5L1xpK+fl4yd/cv6e9fctH+Mp1+KC3Tux9K83j/krp/Sbt/yUX7y3z63l+W929/vn/Jcv+S9e4ly0X7y3qeJ3fv3v7S379kuH/JeP+SurHk7Qznx5J2/5Lp/iUX7a/LeB7av7uKLcv9S9a7l6zdnUte/mv43suXf2jM0/lH0+tN6fDxbLNq+Pilyl8A9F/ztIevedrj1zzt+pqn3b7maU9f87Tnvac9n363Wm9moEO7PvRTHXx94MGH7pEH3/vT+0Xp2ejw88GHRx58fOTB9/68asPppW2Yfz54e+TBp0cefH7gwcfdzOv0KYxW7w6+98yntpxnPf3PB18eePAaHoildn8TTdOF+e+Pg9cjD94eefDpkQefH3nw5ZEHXx948NbpDr60nw/eP/Lgu79Dzx8fa+u7g+/+Dj3/bLlw8HrkwdsjD773O3QaTjdF07D8fPD5kQdfHnnw9YEHn/Z+h059nQ++/nzw/pEHHx558PGRB69HHrw98uDTIw8+6w4+vtvnyyMPvvs79JzQU/188Hn3d2jXrh+8f+TBh0cefPd36Af353M98uDtkQefHnnwRwbX/LjgevmP8dsLr/wB79eY6qfxza8K23r90ysfLnr5r/r22suD3Wk5vaW53vzaoA2XxjztfBf5h482D9cHsLrDt8cefnrs4efHHn557OHXvYdv/flDXG258dq+G8//vqB7O0/48FOPn3QyfdLJDEknM3pPpg3nk5n6dydTSSfTkk5mSjqZ2Xsy56t5370dufw4mSXpZNagkxm7pJPpP+1k3nzM4nQyQ9LJjEkn4/0J3J9bre/ffKztdDIt6WSmpJOZY07m5b/at9de/DFc50/H1fLmg1utvq+bvufO5X9T2qbzP+Zsy/pxwy3nf0m9du3jlz78405f4cSHr3ri41c98fqqJ96+6olPX/XE590nvo6nH+1v/1bEw098+aonvn7REx+6r3ri/Vc98eGrnvj4uBP/87W5je7w7bGHnx57+Pmxh18ee/j1oYcf98Ppu+FcJ92bP47w45NK+39I9sP0+od0lp8/N1vjo99BPfoLKByc/2HySyz+/FvXWh79BdYHf4HWPfoL9IIvcP6XRS9f4OfPSbTh0V9gfPQXqEd/gfboLzA9+gvMj/4Cgu/kfjwPIPvp54/bt/XBX2DqHv0F+kd/geHRX2B89BeoR38BwXdyv77+icj+59uWaXr0F1gffNsyP/q+aO4f/QXGR3+BevQXaI/+AtNDv8DLf8y/XR/hv/6Bl36a5xtfpoZTJPQ1vvtXdSX4Auc/0dLXeuPFUcPWZ3uX0yHe5XyId7kc4l2uR3iXQ3eId9l732XUnPrZ3uV4iHdZh3iX7RDvcjrEu5xD3uWfr/525HPOZc05l7ELOpeUa/Kfr30y9JPOJeX69uerv0Z72Lnc+I2VmcyN3wBOUWzmpLNp9n2z4bdsn3U2Q9TZjFFnU+6z2fCbwc86mynqbOaos1mizmZNOpupizob98/iLb9U/ayzGaPOpqLOpkWdzRR1NnPU2bh/Fm/5jfonnc08JBXMHNVTc0WdzRR1NnPU2SxRZ7PmnM3LfyzfXnrlIx5dvfmbDK93RuNHO+7jNfOGNcuGNev9ay4/BeHGmn7DmmHDmnHDmtqwZsM+WDbsg2XDPlg27INlwz5YN+yDdcM+WDfsg3XDPlg37IN1wz5YL++D/vwIob5f+p/XzBvWLBvWrPev6btuy6L+5qJ1erfoMoaX+7HzD+43I8sfi658nK3OD7/sW/9+Ub9l0bBl0bhh0bV/ALa8LlrfIb/268ru/Mdhpvdf6cpvlj7+Std+BTScR4TTe0/Xflfz8aJxy6LasuhKqJ7/8MLLovZu0bRl0bxl0bJl0bph0bXfHX28qN+yaNiwYa/9MunjRbVlUduyaMs34bVfAn28aNmyaN2w6NpvhT5e1G9ZtGVHtC07om3ZEW3LjmhbdkS7e0e8/Mf67aUvdySXlrZhOH8GZKh3n5ns2pZF05ZF85ZFy5ZF64ZFVx7mNZz/7ug8zNOv3U3cWjRsWHTl4SnjfH4+5bisv3ZjMFd3fkBn9dOv3RgMQ52+0jC0X7wxuLVo2LJo2gDiysNEboBYtixaNyy6fOW9tajfsmjYsmjcsqi2LGpbFm3Z5bVlR9SWHVFbdkTbsiPalh3R7t4R//rT939J9N9XLx4ff0r/ysXjxqJ5y6Jly6J1w6LLF49bi648P/f8lKuX/3N8d/G48mzb8xPq53V6fx3otizqtywatiwatyyqLYvalkXTlkXzlkWXn3bbnXfE8rKj3i1aryw6P7y3G/7wDfx+Ql5jdzqtGvv17Ub90733UZdvHz7vdPqs0xmyTmfMOp3KOp2WdTpT1unMWaezZJ1O1k/luvKNXq8P4HjzN+c/vLFeunOoLt3cfu3G+taiZcuidcOiNmwA0a7Qm958pV8cNN1a1LYsmrYsuuJpfl20du8WLVsWrRsWTd2WRf2WRcOWReOWRbVhw05ty6It37nTlu/cact37rTlO3futizqtywatiwatyzasiPmLTti3rIj5i07Yt6yI+YtO2IZNgT0ciU2z0+Am9fh3ZBkqS2L2pZF05ZF85ZFy5ZF64ZFa7dlUb9l0bBl0ZYdsW7ZEeuWHbFu2RHrlh2x3r0j/vWn739e/79/a1d+rfbhB2Zaa1sWTVsWzVsWLVsWbfjEVZu6LYv6LYuGLYvGLYu27Ihpy46YtuyIacuOmLbsiGnLjpi37Ih5y46Yt+yIecuOmLfsiCufzP3wQ2htnrYsmrcsWrYs2vBpvLbc/jTeuw/WtSufTf3wg3XtyodGP/zkWlu7LYv6LYs2fBpv6q78Nc6PPu42dRs+9jF164avdO1P8330ybWp77csGrYsGrcsuvzt/uFHw6a+bVk0bVk0b1m0bFm04dN409BtWbThs1fTMGxZNG5ZVFsWbfkm3PKR2GmYtyxatiza8Gm8aey2LNqyI8YtO2LcsiPGLTti3LIjxrt3xLe4Gb7HzbXPdo7nH+lz97r2ZYj7/Tp17cOdH6z618t//v+//Mdf//Jvf/vf//my6Nv/9//9/d//+dd//P3Hf/7zv/7v7/+flxf/Dw==","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2z1i2z1i2z1i2z1i2zxZUKhvL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9jnL9jnL9jnL9jnL9vmCSmVn2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2b5g2b5g2b5g2b5g2b5YUKkcLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsX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DyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDxrMDxrMDxrMDxrMD9rCymeD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGH+UGH+UGH+UGH+UFfWPnsMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD8YMD8YMD8YMD8YMD8YCyufA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YH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Dw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgflBgflBgflBgflBgflAWVj4LzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8qzA8qzA8qzA8qzA/qwspnhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBg/lBg/lBg/lBg/lBW1j5bDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/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flBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhftBgftBgftBgftBgftAWVj4bzA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA86zA86zA86zA86zA/6wspnh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/nBgPnBgPnBgPnBgPnBWFj5HDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/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oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oMH8oMH8oMH8oMH8oC2sfDaYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYH3SYH3SYH3SYH3SYH/SFlc8O84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MB84MB84MB84MB84OxsPI5YH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYX4wYX4wYX4wYX4wF1Y+J8wPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPFswPFswPFswPFswP1sLK54L5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wQnzgxPmByfMD06YH5wLK58nzA9OmB+cMD84YX5wwvzghPnBCfODE+YHJ8wPTpgfnDA/OGF+cML84IT5wQnzgxPmByfMD06YH5wwPzhhfnDC/OA82g/KonrZ87IW8aaeWxuvDeN165Lluvkov7F9TJk/N49pbxb7c63ZaK3VaK2zz1qP9ppfutbRaK3SaK3aaK3WaK3eaK3kvmlt+uq662mzNtYq6lWXvWuM/N32P9ZL7p0esV5y//SI9ZJ7qAes18h91CPWS+6lHrHeHfqpHJcXGWm68Tk7I68b1+vByfmzHoXVY7B6/OB6arneFymV9/UErJ6E1VOw989k1bOHC9+1ngGrB5bPDstnh+WzO6yegNUDy2cvWD2TVU8ssHoOzud1d37d88vuXuu5sWd3udw7Wf87432/HXLy+vXk9dvJ64ddXwJ2fYmE1VPo91vM6659jnnj/TbPXX8uJ69/h+tdxPWmUS5b96Ne389Si9zfs5TLdeN6czdKb22tHpdDo7G8+V7h5WXebT2XuixxjkX/4y/f6dpjQsDzSP52JPV5JHc6kvY8kjsdSX8eyZ2OZDyP5E5HMk/ee5y8d82T96518t612Pdqtutn36vZrl9Z9+72mHGyaz2w71IL9l1qwe7VF+xefcHu1U/Yvfo5YPUIrB5YPk9YPk9YPk9YPk9YPk9YPk9UPteyoPJ5rQeVz2s9qHxe60Hl81oPKp/XelD5vNaDyue1HlQ+r/Wg8nmtB5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPAstngeWzwPJZYPkssHwWWD4LLJ8Fls8Cy2eB5bPC8llh+aywfFZYPissnxWWzwrLZ4Xls8LyWWH5bLB8Nlg+GyyfDZbPBstnloVf64HlM8vCr/XA8tlg+eywfHZYPjssnx2Wzw7LZ4fls8PymWXh1/8jLJ9ZFr4WloVf64Hlc8DyOWD5HLB8Dlg+ByyfA5bPAcvngOVzwvI5YfmcsHxOWD4nLJ8Tls8Jy+eE5XPC8jlh+VywfC5YPhcsn1l+cK0Hls8sP7jWA8tnlh9c64HlM8sP1sLyg2s9sHxm+cG1Hlg+s/zgWg8sn1l+cK0Hls8sP7jWw8rnAfODA+YHB8wPDpgfHAsrnwfMD46jn5Eueh1PJTbezHu5+eyPWEu+7DoqXtf6iecyrWvNRmutRmudfdZ69DPpv3Sto9FaUc9qXutBPat5rcdg9aCe1bzWE7B6ElZPweqZrHpkgdUzYPXA8llg+SywfBZYPgssnwWWzwLLZ4Hls8LyWWH5rLB8Vlg+KyyfFZbPCstnheWzwvJZYflssHw2WD4bLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPjssnx2Wzw7LZ4fls8Py2WH57LB8dlg+OyyfHZbPAcvngOVzwPI5YPkcsHwOWD4HLJ8Dls8By+eA5XPC8jlh+ZywfE5YPicsnxOWzwnL54Tlc8LyOWH5XLB8Llg+FyyfC5bPBcvnguVzwfK5YPlcsHwuWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PVj7LwspnWVj5LAsrn2Vh5bMsrHyWhZXPsrDyWRZWPsvCymdZYPk8YPk8YPkM84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MK84MK84MK84MK84O6sPJZYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX7QYH7QYH7QYH7QYH7QFlY+G8wPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPOswPOswPOswPOswP+sLKZ4f5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5wYD5wYD5wYD5wYD5wVhY+RwwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxhH+0FZVC97XtYi3tRza+Ocy3XrkuW6+Si/sX1MmT83j2lvFvtzrd5ordFordlordVorbPPWkHO9MbGnnbZeP2G53Wlc/6snnPV/0z1nB7hM9Ur+CxZl1rXXU+btXGWiK7faF72ruunkd9t/2O91my95K7lEesldy6PWC+7e1mmXbfWxW7U/606ktLrVbo83l2lv1VHcn+tR8vqL13raLRWabRWcm/062u9bh5zvPsEcbRk/9K1fqs7ORtr/VZ3cjbW+q3u5Gys9Xv1TffX+r36prtr9e/VN91f6/fqm+6v9Xv1TffX2qhvOnrCxJeutVHf5I36Jm/UN3mjvskb9U3RqG+KRn1TNOqbolHfdPTkly9da6O+KRr1TdGob4pGfVM06puyUd+UjfqmbNQ3ZaO+6eiJTF+61kZ9Uzbqm7JR35SN+qZs1DdVo76pGvVN1ahvqkZ909GT0r50rY36pmrUN1Wjvqka9U3VqG+ajfqm2ahvmo36ptmobzp6guGXrrVR3zQb9U2zUd80G/VNs0/flEufvimXPn1TLn36plz69E25WKO19umbcunTN+XSp2/KpU/flEujvmk06ptGo75pNOqbRqO+6eiJv1+61kZ902jUN41GfdNo1DeNRn2TNOqbpFHfJI36JmnUN32vSdwba23UN32vSdwba23UN32vSdwba23UN2mjvkkb9U3aqG9CzwTfe63WaK2N+ib0HPC919qob/pm88Lvr7VR3/TN5oXfX2ujvumbzQu/v9ZGfVOjeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhVejeeHVaF54NZoXXo3mhddijdbap2+qRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Dp8XriGX/ZsY9xf6/CYddm1zzF/t9Yf9efJ6y90/dPztf6yG/XPU9c/D5+/vXf94+T1C7n+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qLDnDyrMDyrMD6rD8tlh+eywfHZYPjssn2F+UGF+UB2Wz7DnDyrs+YMasHwOWD7D/KDC/KDC/KDC/KDC/KDC/KAGLJ8Tls+w5w8q7PmDCnv+oMKeP6iw5w8q7PmDCnv+oMKeP6gwP6gwP6gFy+eC5XPB8rlg+VywfC5YPhcsnwuWz7DnDyrs+YMK84MK84MK84MK84MK84MK84MK84MK84MK84MG84MG84MG84MG84O2sPLZYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYX7QYX7QYX7QYX7QF1Y+O8wPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPBswPBswPBswPBswPxsLK54D5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5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oBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4mA9QfqlINjz7wbrGdIvBRmtINjz7wbrMdIvBcGefzdYD5J+KQj2/LvBepT0S0G0pGY9TPqlIFpSsx4n/VIQLalZD5R+KYiW1KxHSr8UBEtqoT1TWmjPlBbaM6WF9kxpWWBJLbRnSgvtmdJCe6a00J4pLbRnSgvtmdIyaEk9aEk9aEk9aEk9aEk9aEk9aEk9aEk9aEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVLappRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1AWW1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbAktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFo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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"5Z3dbiTHkYXfZa51kZEZ+edXWSwM2ZaNAQTJsOQFFobefXvY7OoedTNjWaphf5F5I3GkSvJ8nOpzorIqov7z6W8//OXf//jz55/+/vMvn/70X//59OPPf/3+188//3T6039+++7TX/71+ccfP//jz7f/+VP48g8JL8f/8s/vf/ryx19+/f5fv376k9So33364ae/ffky6ek7/P3zjz98+lOV3767O7j29HpsE9kOldYeHJtjfj0253A9Npff/vu7TyJ/WEvTy7GtFEOLpv56rJZ2pyX+cS1dXo/tIRtaSrj8Xkosd1rSH9bS44W1a7S0tPB6bA33f0f6Ti1f1uQda8qONXXHmrZjTX//mhh2rJEda+KONWnHmh3nQdxxHsSH50GqevlspVrr+NxPefsBKdebT2J6+Emp2+nfa7/KkRBf9FSYngbT01l6UoDpEZieCNOTYHoUpifD9MD8OcH8OcH8OcH8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6sMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH+WADNoCTCHPv2LJgjm0RJgJi0B5tISYDYtAebTEmBGLYHm1EJzaqE5tdCcWmhOLTSnFppTC82phebUQnNqoTl1pDl1pDl1pDl1pDl1pDl1pDk1rbVQaL2FQmsuFFp3odDaC4XWXyi0BkOhdRgKrcVQaD2GQmsyFFqXodDaDIXWZyi0RkOhdRoKrdVQaL2GQms2FFq3odDaDYXWbyi0hkOhdRwKreVQaD2HQms6FFrXodDaDoXWdyi0xkOhdR4KrfVQaL2HQms+FFr3odDaD4XWfyi0BkShdSAKrQVRaD2IQmtCFFoXotDaEIXWhyi0RkShdSIKrRVRaL2IQmtGFFo3otDaEYXWjyi0hkShdSQKrSVRaD2JQmtKFFpXotDaEoXWlyi0xkShdSYKrTVRaL2JQmtOFFp3otDaE4XWnyi0BkX5+A7Fru31aAl6+4qVk6L7w2PVi/7Tl9ej61l9c62+O1YfP75V8lD14lp9dK0+sdVrLtu7lLreeGbuj6SkcHljVCpdvjr6hVaXos1L0ZalaOG1wsG08NriYFp4LXIsrcBrl4Np4bXOwbTw2uhg2qVqqY9v2H4q7VK1lCxVS8lStZQsVUvJUrVUXKqWikvVUnGpWiouVUt9/EiFp9IuVUvFpWqpuFQtFZeqpeJStVRaqpZKS9VSaalaKi1VS3380JOn0i5VS6Wlaqm0VC2Vlqql0lK1lC5VS+lStZQuVUvpUrXUx48leirtUrWULlVL6VK1lC5VS+lStVReqpbKS9VSealaKi9VS3384LCn0i5VS+Wlaqm8VC2Vl6ql8lK1VKHXUr2Ujfb2m1/006sjSz+93rH00yuYW/0t3utX5/rpVYalH1435JAu+nPQB+c/vBIw9cOz3dJf8b//opv+B/nb4PmbW4oX/S2Xe/3w/DX1w/PX1A/PX1P/R+fvSXTSK0D+GuBFUuZJKjxJlSep8SR1nKQPH631/5AkPEmRJynxJPHcu/Pcu/Pcu/Pcu/Pcu+PcOwWce6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p8Bzb+G5t/DcW3juLTz3Fp57C8+9hefewnNv4bm38Nw78tw78tw78tw78tw78tw78tw78tw78tw78tw78tw78dw78dw78dw78dw78dw78dw78dw78dw78dw78dxbee6tPPdWnnsrz72V597Kc2/lubfy3Ft57q0898489848984898489848984898489848984898489y489y489y489y489y489y489y489y489y489y48964896489648964896489648964896489648964892489248924892489+b1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq+l8notlddrqbxeS+X1WmrAubfyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei31Gc1o29s6Tl+3ci/p4//icrpKytrvJVWepKNjtxuSUtzmtqfYwvVbn+V0lJzD26v+oBz5aDkp5cvRKacbOffHnnYp6uux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","brillig_names":["lookup_validity"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"inner_hash","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"7Z3tbhzHsYbvRb/9Y+qjq7tzKwdB4CROIMCQg9g5wEGQez9DWbukxOV2NNxuPaXlH8O0Z7rene2q6lru8/Lf7/7605//9fc/vf/wt19+ffeH//n3u59/+cuPv73/5cP+07/fiX38b7/+48cPDz/++tuP//zt3R+kqv/w7qcPf334V/P//PDub+9//undH6r854dnF2stp4u11jhfLOoXrja38ulqK1sbXC1brdtJyVbboxSV7dL1rerp8tblfLVdXFzkJEUk/OnFf/zhnfjbk3nhyZS3J/PCk4m3J/PCk6mvfjLWrJ1ea6uPF0srHyO06RH6V0bY79Ht0j3qpZ/eZG99sCP6dnrTbHuiql16y3Qr57dBt+jb49rl4o7QHucdYVsf7QjfTk9IXOtrdoTK25N54cno25N54ckY/MmY2eOT8bquvqq/PZkXnkx5ezIvPJl49ZMxsVPzM6nb4MnUqKeV26aDZ96Kni9uT042dlHH/rBOOtQfn8peqz6+0no3r7R9P6/U7XT1nhb9s1d6YatHyPkYtpVnz6Xf63OpT55Ljy+fi23fz3Mp0s+zUBk+l83b4yi0Pbn6kmw/D2VeHnXUi5duenqF/nRh7R+ft7w97xs/b7GTDJcnDfHT89a35710f9vb8166v/3teS/d3+XteS/d39/RjMJ43lb9dCC02p6Mmx9nQvuOJqWve95Sz89b+ufP++G5fEdz1U2fy3c0V93yufjdzlV6nk5Fn/4O5WLdku5x/qxM2uizr2/3WZnf7dz2nb6fdzsXfqfv5/c0d8b5d/qxbYP3s2/t9A71/Zk/Xt0u/bZBrbRT21ILqZ9d//Ac/e053uQ5rp4T9/w5rdzls5Uf1Cyeomz/tfDp4s3jSzUVpaah1HSSmrKh1AhKjaLUGEqNo9QUlBpULS6oWlxQtbiganGganGganGganGganGganGganGganGganGganGganFF1eKKqsUVVYsrqhZXVC2uqFpcUbW4ompxRdXiiqrFDVWLG6oWN1Qtbqha3FC1uKFqcUPV4oaqxQ1VixuqFndULe6oWtxRtbijanFH1eKOqsUdVYs7qhZ3VC3uqFosG6oYy4aqxrKhyrFsqHosG6ogy4aqyLKhSrJsqJosG6ooy8aqysKqysKqysKqysKqysKqysKqysKqysKqysKqysKqysqqysqqysqqysqq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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"}]}},"file_map":{"100":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"102":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> BoundedVec where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"118":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"121":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal 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 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 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 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 Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\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(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize 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 for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\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 = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_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"},"123":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"124":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, 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(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(contract_address: AztecAddress, log: [u8; 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(&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(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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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"},"131":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note\n ) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"146":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"148":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"150":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n"},"151":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"152":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"154":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"155":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(note_hash_counter: u32, encrypted_note: [u8; M], 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_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(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], 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_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\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(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(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper(\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(contract_address: AztecAddress, message: T, counter: u32) {\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.\nunconstrained pub fn emit_contract_class_unencrypted_log_private(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"156":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"159":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"161":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"162":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"166":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"169":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"170":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"171":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 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, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\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, 0, 0, 2, 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, 0, 0, 1, 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, 0, 0, 1, 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, 0, 0, 2, 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, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"176":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"185":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, 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},\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, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_requests : BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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.storage_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(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\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.key_validation_requests_and_generators.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(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\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 = 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 = 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 { request, sk_app_generator: sk_generators[key_index] };\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(\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(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_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\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\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function(\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(contract_address, function_selector, args_hash, false, false)\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 is_delegate_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 is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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"},"188":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"199":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_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 = 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"},"200":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"202":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\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"},"203":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"210":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\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},\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(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(function_leaf, function_leaf_index, function_leaf_sibling_path)\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 [\n tx_hash,\n note_index_in_tx as Field\n ],\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 [\n app.to_field(),\n unique_note_hash\n ],\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 [\n app.to_field(),\n nullifier\n ],\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([log_hash.contract_address.to_field(), log_hash.log_hash.value])\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(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\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(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = BoundedVec::new();\n\n let inputs = [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(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> 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\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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\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(inputs: [Field], separator: T) -> Field where T: ToField {\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(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,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = 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 = 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(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\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"},"229":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/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(msg: str) {\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(msg: str, 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 {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper(msg: str, args: [Field; 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(_msg: str, args: [Field]) {}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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 x: Field,\n y: Field,\n 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 lo: Field,\n 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(\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)]\nfn multi_scalar_mul_array_return(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [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 { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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 { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\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(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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"},"248":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use 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;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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 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(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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(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(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(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(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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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"},"265":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"299":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n"},"310":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"311":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"334":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\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(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 = 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(input: [Field; N], in_len: u32, is_variable_length: bool) -> 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// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\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\nunconstrained fn build_msg_block_iter(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [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\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\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\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(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_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) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\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 }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\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 // 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 msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\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 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\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\n for i in msg_byte_ptr..56 {\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[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\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, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 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, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 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, 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, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 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"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"70":{"path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}"},"71":{"path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}"},"73":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"75":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"78":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"79":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"80":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"98":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"99":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"}}} \ No newline at end of file +{"transpiled":true,"noir_version":"0.36.0+1094f036be7b102252a3a5c0d4b8c621779cf4bd-aarch64","name":"SchnorrAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"7Z3druTIkaTfpa51wfiP0KssFoPWjGbQQKM1kHoWWAh6983KrGSeLCbp5ywj0i0i7GYh7VB53D8rMsycZPCf3/7jr3/5n//6t19//8+//ePbn//XP7/99rd//+WPX//2++W//fNff/r2l7//+ttvv/7Xv338//62fP9/fLge/4///uX37//1H3/88vc/vv3Zevenb3/9/T++/6d8+d//56+//fXbn5P51//+0zcfv/q/CO5L/4s/bQ5N9seRKa0HhnL9ad/up0O7n47tfjq1++nc7qdLs5+OS7ufNu1+2rb76XZnY2x3NsZ2Z2NsdzbGdmdjbHc2xnZnY2p3NqZ2Z2Nqdzamdmdjanc2pnZnY2p3NqZ2Z2Nqdzamdmdjbnc25nZnY253NuZ2Z2Nudzbmdmdjbnc25nZnY253NuZ2Z2NpdzaWdmdjaXc2lnZnY2l3NpZ2Z2NpdzaWdmdjaXc2lnZno1mWhr9tGv62bfjbruFv+4a/HRr+dmz426nhb+eGv93wvDQNz0vT8Lw0Dc9L0/C8NA3PS9PwvDQNz0vT8Lw0Dc9L0/C8tA3PS9vwvLQNz0vb8Ly0Dc9L2/C8tA3PS9vwvLQNz0t/Vsu45PLj2GicWQ++uNgXR7tczI+jXTFuPdr6WzUBqpoIVU2CqiZDVVOQqgkLVDUGqhoLVY2DqgbqWhygrsUB6locoK7FAepaHKCuxRHqWhzfe05FE+8H28cPO2Nuxbz3n01068E+bIspQMWkBakYg1SMRSrGIRXjkYo5f52JH4qxQjE++B8H+/Dhh5dbLRGolgRUSwaqpeDUkhegWgxQLRaoFgdUiweqpeV19/oHYus/kFr/gdz6D5TGf6Asrf+Aaf0HbOs/4Fr/Ad/6D7Q+k0vrM7m0PpNL6zP59DM2l1/N6x8I7lR2t6efyqlbjYGqxkJV46Cq8VDVBKhqTl8EzSM0WyOF5l3v9qJw6+5FOJvio/Dy4uCS7nO2y99dHseGVxU/rnkf7sZeDr3ySOTxxCPPx6PcT69k/IZHmZBHuvP4MMP+wcMs5PHEw0zHI601pGg3PCx5PPFw8/FYDUheNuvL6SdMe+Sx3HlYs+ERpuOR3f16ml+cL/P50w88tn7M4PpTF8KdhyvuI49r4bhGUigc1/E5Xw4Kt7jWzHlzVDiuhxIKxzU7QuHzuZLD1Hv6+frReMznSg6nAHbCqdlR6rXzTc0OU56db2p2zGO+qdlh6nXzTc0OU6+bb2p2mHrdfFOzw9TrcP3pcXh0vtPw6HAd33GUcbjWTCgceLJzXPiEtwiPwpKb8BbhEQ8/4y3Cg/Do5zM7h+HR8xbhM48JbxEe8vAMj0885hvGHYZHP/Utwhfny3zDuMPw6Hu98+h7vfMYer3zGHq98xh6vfMYeOfx6WJ1fgeSwXjwzuMzD955fObBO4/PPHjn8ZkH7zw+8Yi88/jMg3cen3nwzuMzj17vPJ7+HpdWeIy93nmMvd55jL3eeYy4ZifF+0XF5e1btxHXlRwXnnDtg1A47jovFI67IAuF466cQuG4K6dQOO7KKRSOu3IKheOunELhva6cqdeVM/e6cuZeV87c68qZe105z28EqFV4rytn7nXlzL2unLnXlTP3unKWXlfO0uvKWXpdOUuvK+f53TS1Cu915Sy9rpyl15Wz9Lpylk5XTrd0unK6pdOV0y2drpxu6XTldEunK6dbOl05HfCWsULhna6cDngTVqHwXldO4G1NhcJ7XTmBNwoVCu915QTeelMovNeVE3gzS6HwXldO4F0nhcJ7XTmBd50UCu915QTedVIovNeVE3h7SKHwXldO4A0XhcJ7XTmBtzAUCu915QTeFFAovNeVE3ibPaHwXldO4P3whMJ7XTmB98PLaxEuh7QpHHflFArHXTmFwk+vnNbbtfAShcJNKfej7RI/vOluXh69+PU9cLMEl56O/17++X3mdMs3fZdv+y7f9V2+77v80Hf5se/yU9/l577L73vVDX2vuqHvVTf0veqGvlfd85t16Zbf96ob+l51Q9+rbuh71Q19r7qx71U39r3qxr5X3dj3qnt+Z6Om5Ye1kMt/DlE63tj7rM+Y9Cjc3UZyEXuJrtsr9npet1fsxf+LvQZz32Hv8h/Npldsp1C3V2xbUbXXhO1BvthrzPdfN2mxm16xDUvdXrHdTd1esa1Q3V79RL0O5ZuEXofyTUKvQ/kmodehfJPQ61C+6bjXPJFvyhP5pjyRb8oT+abzu5p11OtEvimDrzkfxqBxKf/6eQxasC83MXwoP5lTx1/bxb7ifLHdlNZ/yKlsJisF+4pTt1fsK07dXrEd/Rd7zXn9xkZZwsdetwfn9ZMPObifsPgF2yQ2xHK5ytvHb4cNmKEu8TXBDLUY1AQz1MrxJTCHN9z8MtQyUxMM9vRQEQz2qFERzLQuRgKDHSj1wBjsiacimHmdrwBmXucrgJnX+QpgPMG8BjOJ8732OomZvfY6iT+99jqJ5bz2OpKLtIt9/Lrb9GpHMoZSryN5PanX0/bN2fvHjaMrSejVmnBfAa3NVuxVeMPAn9+YTrd833f5oe/yY9/lp77Lz32XX7ou//wWdrrlm77L73vVddirbs33v/z5ffA66hV7Pa/bK/biX/P9L++wnULdXrFtRd1esT1IzWdAvcc2LHV7xXY3dXvFtkJ1ex3KNwm9+ol6Hco3Cb0O5ZuEXofyTUKvQ/kmodeJfFOYyDeFiXxTmMg3hYl80/mdKjvqFXx9PX6vz0fsS2vl9/p8xL661nz/y0fsq2vdXrGvrnV7xU4vWu/1RWxDrPeWVhrqEl8TzFCLQU0wQ60cFZ9uTkMtMzXBeIJ5DQZ7rKoIZloXI4HBDpSKYLCnu4pg5nW+x2DyvM5XADOv8xXA0PnugJnE+V579RP1Ook/vfY6ieW89jqSixTe/8ojGUOp15G8ntBraXkdvv6B0PoPxNZ/ILX+A7n1Hyht/0BYltZ/4LSZ9utZEy//JoVT8mLU1gu/iY9T7OU32EN094evQ/x+xPFPL2l9VHspVjj6K5+Ct+5Ow9n04Y57eXFwSWt/y/Io2YZX6OL67fqUPh56FcZSGExhHIVRE6bkH8cm4zfCeAqjJ8ydXLJ5I0ygMFrCpLWGFO1GmEhhMIVJFEZNmGJ+HJuX7eKfKYyeMPeCszUbYQqF0RImuzu5vL2Und/QlMJUEGabYwyTvyiMC/fhiXPFfRTmSpARXSa4PvX6kiCz9CcImiOCngRPEmQ6PUuQMRJzVGkYI0GFYYzEnCEbxkjMGbJljMQcVVrGSFBhmE4xZ8iWoRdzhnx+M3AK02SGbBnRMWfIlsn/5AzZMqKfnCFbZumT8zvL0HuSoGM6PUuQMRJzVOkYI0GFYYzEnCGf/2AFhfn/F+ZghuwYIzFHlY4xElQYplPMGbJj6MWcITtmacwZsmdEx5wheyb/kzNkz4h+cobsmaVPzu/Of21oeoJMp2cJMkZijio9YySoMIyRmDNkzxiJOUMOjJGYo8rAGAkqDNMp5gw5MPRizpDPf4GOwjSZIQdGdMwZcmDyPzlDDozoJ2fIgVn65PwuMPSeJBiZTs8SZIwUCaZ479Bl84GgvxFk3jtLkMHsLEFPgicJMuqcJchMcpYgM8lZgswkZwkyk5wkmJhJzhJkJjlLkJnkLEFmkrMEPQmeJMhMcpYgM8lZgswkZwkyk5wlyExykmBmJjlLkJnkLEFmkrMEmUnOEvQkeJIgM8lZgswkZwkyk5wlyExyliAzyUmChZnkLEFmkrMEmUlEgnml4XJIG4LMJGcJehI8SXCcTGKXlaA1zwSvnY6THaROx/FXdv2HbmyJ0tGl2HuLS/zwnrx5fcb59eVtswSXno6/cIzLOC5Ll+M4XkuX4ziOS5fjOL5Ll6MnxyocB/JgqhwHcniqHMeZEetyHGdSrMuReaYKR8M88ymOYSVy+c8hSsdfKljbTA+Czt+gM/woQGdSUoDOWNUCejDrsC8Ys4HuCf390BnYFKAz3bWAHvP9101a7AY6o6ACdOZGBegMme+HbunTPwf9Q7K/jEM2yX6gj9435RjDB47JnDr+yp2epAX3lNZrTCobI2jpSRSg05O8H/pAHzpHgp7z2mZZwkfo24Pzuo9rDm6jj6c+yvpcvJF9/HbYKERjhK4QLRS6QvRb6god33kZ6AvPoyrE6RK4QgN983lUhZiG0BXiOBddIT6jga6Qp0LgCnGmgK4QZwroCnGmgK4QZwrvVegKnWOC90Mf6DPdHUFnmFeAznzeALpd7OPX3RY6I7cCdE/o74dOUw/9uMpAXx3u91a7WQtf3Eahgb4oO6pCtFDoCtFvoSvkqRC4QrzFga4Qb3GAPzY50BeJR1WIeQhdId4PAVdooC82j6oQZwroCnGmgK4QZwroCnkqpK5QXB8oWvJmr4+Bvsg9qkKcKaArxJkCukKcKaArxJkCuEIDfXF9VIU4U4DKQy8U4kwBPLEO9EX6URXyVAhcIc4U0BXiTAFdIc4U0BXiTAFdIc4UwBUqnCmgK8SZArpCnCmgK8SZArpCngqBK8SZArpCnCmgK8TEiq4QEyu2QmlhYkVXiIkVXSFPhT6lkHu8axq9ezr+ypGeuA5HOtc6HHnPqg5H+vQ6HOmmq3A09Lx1ONKZ1uHIOx51OPK+RB2OnhyrcGSeqcOReaYOR+aZOhyZZ+pwZJ6pwtEyz3yOo10eHJ2Tjj/8ckmyDD8toD8AXho2G+hMSgrQGasUoHtCfz90BrYm0FN41LJdSOmmW0APZj08mO2/dFrv90N39OkK0OnTFaDTpytAp09vAf1yyP3wGJcNdE/o74dOn64AnXdhFKDzlo0CdCZSBehMpO+H7plIFaAzkSpAZyJVgM5EqgDdE/r7oTORKkBnIlWAzkSqAJ2JVAE6E+n7oQcm0ibQ8/oCe1rsBjoTqQJ0JlIF6EykCtA9ob8fOhOpAnQmUgXoTKTvhx5pGVtA93aF7v3TE17bg7O/v5+Ug9vowzVXWx9h17DIBRpdIa7m6Apx6VdX6Pg12cjJNbpCHHODK5Q4E0dXiGkIXSFO29EV4mgeXSFPhcAV4kwBXSHOFNAV4kwBXSHOFN6r0BU6xwTvh56Z/BWgM8wrQGc+V4DOyK0A3RN6C+iPz3/5D5XfoTMYK0Bn1lWAzviqAJ2JVAE6E+n7oRcmUgXoTKQK0JlIFaAzkSpA94T+fuhMpArQmUgVoDORvn8z6MJEqgCdifTt0PPCRKoAneHoNPQrR+adOhw9OVbhyFRShyPtF/Lr8XmhU9N/tdc8PmvrNgoZOgx0hehd0BXyVAhcIfotdIU4MkZXiPNl7G1asmEaQleIeQhcIcsxN7pCfEoLXSHOFNAV4kwBXSFPhcAV4kxBX6G4bmCwZLtRiDMFdIU4U0BXiDMFdIU4UwBXyHGmgK4QZwroCnGmAJWHXijEmQJ4YnWeCoErxJkCukKcKaArxJkCukKcKaArxJkCuEKeMwV0hThTQFeIMwV0hThTQFfIUyFwhThTQFeIMwV0hThTQFeIiRVcocDEiq4QEyu6Qkys6ApBO4V0PzikD3Xs/HQoK8RoytPR106hp/g1O43Q18WvdGrN4zyysYhHh7Ie/eGBj72zzpd1f8oluPR0/JUj9NWrI47QU7GOOHpyrMIResLUEUfoOVBHHIfxYMoch3F4yhyhZ1P9cEzQE6SOODLP1OHIPPMpjmElcvnPIUrHH36VPCeGHwXontDfD52xqgX04x33EzOYAnQGNgXoTHctoMe83h5Ky+YlycQo+H7omblRATpDpgJ0T+ifgv4h2celbJI99tfdcTjG8IFjMqeOv3KnJ2nBPaX1GpPKxghif+B9UOjYH3gfFTpnhy2g57y2WZanJ+K2Bx9+Lgr7u8FT6CM83oj9kWEqdFGIFgpdIfotdYUO77wU7G8dU6GLQpwuoSvEhyPQFWIaQlfIUyFwhfiMBrpCnCmgK8SZArpCnCmgK8SZArhChjOF9yp0hc4xgQJ0Jn8F6AzzCtA9odeHbhf72OzFbaEzcitAZ4pWgE5Tj/y4SsH+Vvwkt9rNuo3Y4rYK0RWhK+SpELhC9FvoCtGcoSvEWxzoCvEWB/ZjkwX7O9dU6FvB/s41FbooxPsh6Arx5gm6QpwpoCvkqRC4QpwpoCvEmYK+QnF9oGjJdqMQZwroCnGmgK4QZwrgCmF/55oKXRTiTAFdIc4U0BXiTAEqD71QyFMh7MSK/Z1rKnRRiDMFdIU4U0BXiDMFdIU4UwBXCPtL5FToohBnCugKcaaArhBnCugKeSoErhBnCugKcaaArhBnCugKcaYArlBkYkVXiIkVXSEmVnSFmFjRFaLb/pxC7vGuafTu6fgrR3riOhzpXOtw5D2rKhwTfXodjnTTdTjS89bhSGdah6MnxyoceV+iDkfmmTocmWfqcGSeqcOReaYKx8w8U4cj80wdjswzn+NolwdH56Tjj79ckhl+WkB/ALw0bDbQPaG/HzpjlQJ0ZjAF6AxsTaCnsEIvm4W00E23gB7Mengwm3/phdZbATp9ugJ0+nQF6J7Q3w+dPr0F9Msh98NjXDbQ6dMVoNOnK0DnXRgF6Lxl83bol4oYSTWoM5NqUGco1aDOVKpB3ZO6AnXmUg3qDKYa1JlMNagzmmpQZzZVoG6YTTWoM5tqUGc2bUI9r2+zp8VuqTObalD3pK5AndlUgzqzqQZ1ZlMN6symGtSZTRWoWzrHFtS9Xal7//TY1/bg7O+V5OC2AnHh1RboeC+xi0RcpeEl4pIOLxHXf3WJDt+fNYvjIBteIk694SXiiBxeIqYieIk8JUKXiJN6eIk4XYCXiNMFeIk4XYCXiNMFdIk8pwvvlehGnQMDDeqcAWhQZ6zXoO5JXYE6w7cGdebpJtQfHwrz33v7mTojsgZ1pl4N6gyyCtQDs6kGdWZTDerMphrUmU01qHtSV6DObKpBndlUgzqzqQZ1ZlMN6symb99D+vILzKYa1JlNNagzm2pQ96R+lvoNJINPJZDMMpVAMp7UAZnowrBfpE80bPqvAJvHZ3HdC4k8JUKXiA4GXiJ6I3iJ6LrgJeIEGV4ijpvRN3XJTEXwEjEXwUvEqTe8RHx8C14iT4nQJeJ0AV4iThfgJeJ0QV+iuO51sOTttsuZ0wV4iThdQJeocLoALxGnC/AScboALxGnC/ASeUqElIteScTpAnp0LZwuwEvE6QK8RJwuwEvE6QK4RJf6KRG6RJwuwEvE6QK8RJwuwEvkKRG6RJwuwEvE6QK8RJwuwEvE6QK8RJwuoEtkGF3hJWJ0hZeI0RVeIk+J0CUaxnSbC7n7T8ewPB19bdUOM9Q3OeX7TxfvpaPL49/uEr34r9GXdafHJbj0dPwN5DD+RRvkMC5DG+QwXkAb5DArtjbIYUbC2iCHGdxqgxzH6SmDHGYIqg1ymFGlMkjHZFMJJJPNp0CGlcj3L7pE6fjjr38bxxikQZ2ZSYO6J/UG1I93sTeOaUyDOqObBnXmvBbUY17vo6TFbqkzFGpQZ4JUoO4ZNzWo069/jvqHkB+Xsg35nrbkUyBj+AAymVPH38DTmbQAn9J6mUll6wc9nYkGdToTBerjfL8einrOa5tleXqGbHvw4ZeYzDif/+5WIOmJwHG+FT6uRDRS8BLRdalLJNyKGeeT5cNKNM73zceViI9MwEvEVAQvEYe78BJ5SoQuEacL8BJxugAvEacL8BJxugAvEacL75XoSj1xYKBBnTMADeqM9RrUmdQbULeLffy6e0Hdk7oCdeZpDerjROQS8tqplQr56q5J4tucaZwgqwxynLipDHKcUKgLMo+T85RBjhPdlEGOk8aUQY4TsJRBeoKsA3KcGKQMksmmEkgmm0+BrLt3R2YM0qDOzKRAvTBgtaAu7N1RmMY0qDO6aVBnzmtBXdhFonhSV6DOBKlBnXFTgzr9+ueoC/vU2HE+n9wWZO19auw4H0WGAn+8d4ddPKkrUKcz0aDOSWIL6tX2qbHjfKKzW4GEHTbsOJ/oHFciGil4iTwl0pbo+FbMpVJKhC4RJ03wEvGRCXiJmIrgJeJwF12igT5zPaxEnC7AS8TpArxEnC7AS+QpEbpEnC68V6IbdQ4MNKhzBqBBnbFegzqTegPqwt4ddqAvsfdEnXlag7ondeiHWAb66nW/t9+NX3/bvZCI3gheIhopdIkG+iDxsBLRosFLxFse8BLxlgf6A5XeUyJ0iZiL4CXi/RF4iXgzBV4iThfgJeJ0AV2iwOkCvEScLuhLFNfnjJZstxJxugAvEacL8BJ5SoQuEacL8BJxugAvEacL8BJxugCVi15JxOkCenSNnC7AS8TpArxEnC7AS8TpArxEnhKhS8TpArxEnC7AS8TpArxEnC7AS8TpArpEidMFeIk4XYCXiNMFeIk4XYCXiNEVXiJGV3iJGF3hJWJ0RZco03R/TiL3eB81evd0/A0krXElkDSwlUB6gqwDkn69Eki66kog6X0rgaRDrQSSt0DqgCy8UVEJJJNNJZBMNpVAMtlUAukJsg5IJptKIJlsKoFksvkcSLs8QDonHS98+6QwBrWg/gD4/d2ZLXVmpvdTdwsDlgZ1pjEN6oxuTainsFIveUudrroF9WDWw4N58W+dFlyDOv26BnX6dQ3q9OsK1A39egvql0Puh8e4bKnTr2tQp1/XoM77MhrUPakrUGc21aDObKpBndlUgzqzqQZ1ZlMF6pbZVIM6s6kGdWZTDerMphrUPakrUGc21aDObKpBndm0CfW8vu2eFrulzmyqQZ3ZVIG6YzbVoM5sqkGd2VSDOrOpBnVP6grU6RxbUPd2pe7907Nf24Ozv1eSg9sI5Lnwagsk7DXmPFdpeIm4pMNL5CmRtkTHr9M6z0E2vEScesNLxBE5vERMRfAScfiOLlHgpB5eIk4X4CXidAFeIk4X4CXylAhdIk4X3ivRjToHBhrUOQPQoM5Yr0GdSV2BemT41qDOPN2E+uNDYv57bz9TZ0TWoM7Uq0Hdk7oCdWZTDerMphrUmU01qDObalBnNlWgnphNNagzm2pQZzbVoM5sqkHdk/r7N5JOzKYa1JlNNagzm2pQZ0o6Tf0KMjP4VALJLFMJJONJJZB0Ydgv0mcaNv1XgM3jM7nuhUT0GegSFToYeInojeAlouuCl4gTZHiJPCUC39SlMBXBS8RcBC8Rp97wEvHxLXiJOF0Al8gvnC7AS8TpArxEnC7oSxTXvQ6WbLcScboAL5GnROgScboALxGnC/AScboALxGnC/AScboAlYteSGQ4XUCProbTBXiJOF2Al4jTBXiJPCVCl4jTBXiJOF2Al4jTBXiJOF2Al4jTBXSJLKcL8BJxugAvEacL8BJxugAvkadE6BIxusJLxOgKLxGjK7xEjK7oErlxTHdOd4lM8V4UtNhV0OhliR7bHy4xGen4nNc2yxKOJTrcu8S7cSx3rwIJLyN7N46fG1aicfzcsBKN4+eGlWgcPzeqRH6cWxHDSjTOrYh+JTpORZ6pCF4i5iJ4iTwlQpdonAcdh5WI0wV4iThdgJeI0wV4iThd0Jfo+E3XwOkCvEScLsBLxOkCvEScLsBL5CkRukScLsBLxOkCVC56JRGnC+jRNXC6AC8RpwvoEkVOF+Al4nQBXiJOF+Al4nQBXiJPidAl4nQBXiJOF+Al4nQBXiJOF+Al4nQBXaLE6QK8RJwuwEvE6AovkadE6BIxusJLxOgKLxFN9+ckco/3UaN/3l7mCjLTGlcCSQNbCSRvYlUCSb9eCaQnyDog6X0rgaRDrQSSt0AqgeSNikogmWzqgCxMNpVAMtlUAslkUwkkk00lkJ4g64BksvkcyK9td23s+gabSY/K71PgwhjUgvoD4KVhs6XOzKRBnQFLgzrT2Puph4XRrQn1FFbqJW+p01W3oB7MengwL/6te1JXoE6/rkGdfl2DOv26BnX69RbUL4fcD49x2VKnX1egbujXNajzvowGdd7E0aDObKpB3ZO6AnVmUw3qzKYa1JlNNagzm2pQZzZVoG6ZTTWoM5tqUGc21aDObKpB3ZO6AnVm0ybU8/q2e1rsljqzqQZ1ZlMN6symGtSZTRWoO2ZTDerMphrUmU01qNM5tqDu7Urd+6dnv7YHZ39/hykHtxWIC6+2QMJeY8FzlYaXiEs6vERc/9UlOn6dNngOsuEl8pQIXSKOyOElYiqCl4jDd3iJOKmHl4jTBXSJAqcL8BJxugAvEacL8BJxuvBeiW7UPakrUOcMQIM6Y70GdSZ1DeoM3xrUmaebUH98SMx/7+0n6pERWYM6U68GdQZZDerMphrUPakrUGc21aDObKpBndlUgzqzqQZ1ZlMF6onZVIM6s6kGdWZThY2kE7OpBnVP6grUmU01qDMlnaZ+A8ngUwkks0wdkJnxpBJIujDsF+mzp0DqrwCbx2dy3QuJ6DPgJaKDgZeI3ghdokLXBS8RJ8jwEnHcjL6pS2EqgpfIUyJ0iTj1hpeIj2/BS8TpArxEnC7AS8TpArhEceF0QV+iuO51sGS7lYjTBXiJOF2Al4jTBXiJPCVCl4jTBXiJOF2Al4jTBahc9EoiThfgoyunC+gSGU4X4CXidAFeIk4X4CXidAFeIk+J0CXidAFeIk4X4CXidAFeIk4X4CXidAFdIsvpArxEnC7AS8TpArxEnhKhS8ToCi8Royu8RIyu6BK5d69FeX2v0xp7LJEL92P9Uh4/bO2rMspdzfRhAxATXpXs4/13g12ejr0hCUTyM5JIJD8jSUTyM5JMJD8jKUTyExK/zIckrMbkYjuEY82SzLpi5wfA71xuAA0BngNoCfAcwDc/HmEfhtcVfwzQLL6sO1UvwaUnN30r3/ddfui7/Nh3+anv8nPf5Zeuyw9L3+Wbvsu3fZff96r77q+Nf638sNZx+c8hPpX/ctJ49D37GKCX6Mq9Qq/nlXuFXvy/2Ovxzv8xQDuFyr1C24q6vUZoD/LFXmNefzwt29f+IrRhqdwrtLup3Cu0Farcq5+o15F8k9TrSL5J6nUk3yT1OpJvknodyTcJvaaJfFOayDeliXxTmsg3vfsrjaq9TuSbEvb6+mEMGj/cwV3HoBn60hrDh/KTkaQ6PP7WLvTV9YvtprT+Q05lO1nJ0FfXyr1CX10r9wqdXr7Ya87rM9JleXoeeHvw4Vf1YoE2xA2xSM9Ul5Eu8VXBjLQYVAUz0srxJTDCDbd3f6GmHzDQjl8TDPRYVRPMrC5GBAMdKDXBQE939cCkZVrnK4GZ1vlKYKZ1vhIYOt8dMH4KMLde5zCzt17n8Ke3XuewnLdeB3KRdrGP/Qvci14HMoZSr2Ygryf16mb1tYeD7uTmnecefoU9vXvzkH7ATDudk8BMO52TwEw7nZPATDudk8BMO507vpmWPO9L74DhfekdMLwvvQNm2umcBMYTzGsw8zpfAcy8zlcAM6/zPfysaMLeqkUTzLzO9xgM9vYymmDmdb4CmHmdrwBmXucrgPH0Ma/B0Pm+NnjYGwRpgpnX+Qpg5nW+AhjOfF+Dwd7USBMMZ747YDjz3QHDme8OGE8wr8HQ+e6AofPdAUPnuwOGzncHDJ3vazDYWzVpgqHB2wFDg7cDxhPMazDYy7V7PCcX/fPXE2/lYy+qYvnYS59UfsYezYjlY6+vYvnYq6BYPvZaJZaPvaKI5WMHe7F87Pgtlt/3qpv7XnVz36su+OZsYvl9r7rgG52J5WOvul/7WrqwzwL4DmNf6/VRtrHRbHvFXs/r9oq9+NftFdsp1O0V21Z8sdcU1l7L5tqUwbdT+lqvx5+lyuA7JNXtdaT1Vep1pPVV6nWk9VXqdaT19XLI/fAYl22vI62vUq8jra9Sr9gZv2qv4PsY1e11JN8k9TqSb5J6Hck3Sb36iXodyTdJvU7km8xEvslM5JvMRL7JTuSb7ES+yU7km+xQvunw84DZ+ol6Hco3Cb0O5ZuEXofyTUKvQ/kmodehfNNxr+B7SdftdaQ1xz9+3Punuf/24MN9szP4nrbtsAjP02fwPW0VwYx0gawJBnxP24Zgjh/fyuB72iqCGSnfVgUzUhiuCsYTzGswI8XsqmBGyuRVwUzrfCUw0zpfCcy0zlcAA76nrSKYOZzvrdc5zOyt1zn86a1XP1Gvc7jIW69zGMNbr0N5vccmIz5tbySDb8xat9ehHNlxr+Dbp9btdSjfJPQ6lG8Seh3KNwm9+ol6Hco3Cb0O5ZuEXifyTeDbetbtdSLflEbyTcILn+AbjdbtdaKX0cG3A63ba7de4lZ+t/bgVn63K/6t/G4X8Wv54BtZaj2kCL5BZstHzg6/L5/BN39UBDPtUw8SmHmf9xXAzPu8rwBm3ud9j8GAb9+p9yA0+MagimDm9TECmGmf95XAeIJ5DWZe5yuAmdf5CmD4ptsOmHmd7+Fn1HOZ1/keginLvM5XADOv8xXAzOt8BTDzOl8BjCeY12DofHfA0Pm+NHhlqK2Rq4LhHg87YLjHw2swQ+3QXBUMZ747YDjz3QHDme8OGE8wr8HQ+e6AofPdAUPnuwOGzncHDJ3vazBD7bFdFQwN3g4YGrwdMJ5gXoOhwdsBc3q5dvb+FcvoShLAWBPuI2hrP0xadzq9VJwe1ScjHZ9zvB9+mWYfkzl8MLyc36y5Vy7Cw4nFWZLZIeNIZoeMJ5kdMoFkdshEktkhk+Ylc+xm3LRuRiQzsZ85JnN+c/VhyRiS2SEzsQcWyEzsgQUynmR2yEzsgY+fyPMTe2CBzMQeWCAzsQcWyEzsgY/JhIk9sEBmYg8skKEH3iNDD7zj9M7v+D4smYk9sEBmYg8skOEceI8M58B7ZDgH3iETOQfeI8M58B4ZeuA9MvTAe2Q8yeyQoQfeI0MPvEeGHniPDJ3eDplEp7dHhk5vjwyd3h4Z8FXbPZ6li367M3pJ4GurWD/4CijWDz6rEesHX2el+jP4aijWD75mifWDryxi/eBJX6zfd15/5+tv7nz9zZ2vv7nz9Td3vv6WztffAr7+fu3dWmPXh15MypuwU8AX6681+6jb2Gi2zYKv7HWb9TM1C+4Z6jYLbjC+2GwKa7PlxQUKfDWs+EFHuyzgS2fdZodaZ6Vmh1pnpWaHWmelZodaZy+H3A+Pcdk2O9Q6KzU71DorNQue+us2Cz4iqNvsUA5KaNYM5aCkZodyUFKzQzkoqdmhHJTUrJ+p2ZkclJnJQZmZHJSZyUGZmRyUnclB2bEcVF4fbEuL3TY7loMSmh3LQQnN+pmaHctBCc2O5aCEZsdyUEKzYzmo42bR91hut1/50a7cFy5DXcvq7eN+ITPUha8qmaGuklXJDHVJ/RKZw8e8LmSGSrA1yaDvlqtIZqhsXJXMtG5GJDNU6q5KxpPMDpl5PbBEZl4PLJGZ1wNLZOiB98hM4oGvzaJvgFu32Umc6q3ZScznrdlJ/OStWT9Ts2O5vsd2JT5tbzOjb/lat9mxvJnQ7Fh2S2h2LAd13Cz69ql1mx3LQQnNjuWghGbHclBCs36mZmdyUOgbhtZtdiYHFYdyUMLLouh7mFZtFn1b0rrNzvQ2e+rXVNzq953X3+/Sf6u/39X8Vv+0j9McP86IvvVmy0fTjj5xfyEz74MREpl+r8WtyUz8cLBAZuKHgwUyEz8cLJCZ98EI4bFp9A1H9cigb2WqSGbeh4MlMvM+HCyRmdgDC2Q8yeyQ4Qtye2Qm9sBHH3K/kJnYAwtkJvbAApmJPfAhGTPWnsRVyUzsgQUyE3tggQw98B4ZTzIvnZ4Za9PlqmS4ScQeGW4SsUeGc+A9MpwD75AZa1fpqmQ4B94jwznwHhl64D0ynmR2yNAD75GhB94jQw+8R4YeeIfMWLtfVyVDp7dHhk5vjwyd3h6Z06u29fc/EG2JApnvH/q9//ISvUzm8c7WEpORjs853g8vSzgmc/gEuTm/BXSvXITnF41bSGaHjCGZHTKWZHbIOJLZIeNJZodMmJfMsZtx07oZkczEfkYgk0lmh0whmddk/MQeWCAzsQcWyEzsgQUyE3vg46f0zm/WPiyZiT2wQGZiDyyQmdgDC2Qm9sACmYk98DGZQA+8R4YeeMfpBXrgPTITe2CBjCeZHTKcA++R4Rx4jwznwHtkOAfeI8M58A6ZSA+8R4YeeI8MPfAeGXrgPTKeZHbI0APvkaHT2yNDp7dHhk5vh0yi09sjA75qu8ezdNFv91A35/fgV64ffAUU6wef1Yj1g6+zYv3gq6FYP/iaJdWfwVcWsX7wpC/WD57Hxfo7X3/Pf3dBuf7O19/c+fqbO19/c+frbwZff7/2bq2x60MvF2e0CTsFfLH+WrOPuo2NZtss+Mpet1lwG1C3WXDPULdZP1SzKazNlhcXKPDVsObnH00BXzrrNjvUOnvcrF2GWmelZodaZ6Vmh1pnL4fcD49x2TY71DorNTvUOis1C5766zYLPiKo2+xQDkpqdigHJTU7lIMSmjVDOSip2aEclNTsTA7KzOSgzm+73FOzMzkoM5ODMjM5KDOTgzJjOai8PtiWls1rvNaO5aCEZsdyUEKzYzkoodmxHJTQrJ+p2bEclNDsWA7quFn0PZbb7Vd+uCu3Rd8tV20fd4u+W64imaGuklXJDHVJ/RKZ48e8LPpuuYpkhoq7VckMlY1rkkHfLVeRzFCpuyqZoSJ6VTLzemCJjCeZHTLzemCJDD3wHplJPPCt2Uls7a3ZSZzqtVn0bWrrNjuJn7w1O4lFvDU7lut7bFfi0/Y2M/qWr3WbHcubCc2OZbeEZsdyUEKzYzkoodmxHNRxs+ibnNZtdiwHJTQ7loMSmp3JQaFvGFq32ZkcVBzKQQkvi6LvYVq32YneZrfoO41WbTb1aypu9ffrE27197v03+rvdzW/1T/t4zTHjzOib73Z8tG0w0/cW/RNJRXJzPtghERm4oeDBTL9rh+tyUz8cLBAZt4HI4THptE3HFUkM7GfEcjM+3CwQGasHVWrkpnYAwtkJvbAAhm+ILdHxs9L5vBD7rZM7IEFMhN7YIHMxB5YIDOxBxbITOyBD8m4sXY7rkqGHniPDD3wa6fnxtp0uSoZTzI7ZLhJxB4ZzoH3yHAOvEeGc+A9MpwD75AZa7/qqmTogffI0APvkaEH3iPjSWaHDD3wHhl64D0ydHp7ZOj0dsiMta92VTJ0entkTq/aS74PmqNxRiATTVwxftgZx5gf1YT3VuPz/eDoXlQToapJUNVkqGoKUjXnN5muWo2Bqsa+txq3HuzDi2ocVDUeqpoAVU2EqiZBVZOhqilI1fgFqhoDVQ3UtdhDXYs91LXYQ12LPdS12MNci/91+a//55e///rLX3776z8u/5Pv/9f/+f3f//j1b7//+K9//N//vv1fLgf/Pw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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Y1tl26rYlmRbsm1VbatmW3Xbath2hW1X2naVbTVtu9q2a5zPgtlW27ZrbbvOtjq21bWtnm3X21bftga2NbTtBtsa2dbYtia23WhbU9ua2XaTbTfb1ty2FrbdYtuttrW0rZVtrW27zbY2trW17Xbb7rCtnW3tbetgW0fbOtmWYltn27rY1tW2brbdadtdtnW3rYdtPW3rZVtv2/rY1te2fral2tbftrttG2DbQNsG2TbYtntsG2LbUNvute0+24bZNty2Ebbdb9tI20bZNtq2B2wbY9tY28bZNt62CbZNtG2SbZNtm2LbVNum2Tbdthm2zbRtlm0P2jbbtjm2PWTbXNvm2Tbftodte8S2BbYttO1R2x6zbZFti2173DbnO+id71F3vlfc+d5l57uDne9Wdb4v0vnOQ+c7AJ3vSHO+58v53ivnO6Wc72tyvgvJ+Z4h5zt8nO/Hcb57xvleF+c7U5zvI3G+68P57gvneyXW2OZ8h4Hz/QDOs/ed59o7z4x3nsfuPOvceY6484xu5/nXzrOlnec2O89Edp437DzL13lOrvMMWuf5rs6zU53nkjrP/HSep+k8q9J5DqTzjEXn+YXOswGd5+45z7RznhfnPIttp23OM8Sc53M5z75ynivlPLPJeR6S86wh5zk+zjNynOfPOM92cZ6b4jyTxHneh/MsDec5Fc4zIJznKzjPLnCeC+DULufz7M5nxZ3PYTufcXY+P+x8Ntf53KvzmVLn85rOZyGdwu58hs/5fJzz2TPnc13OZ6aczyM5n/VxPkfjfEbF+fyH89kK53MLzmcCnPvtnXvZnfvEnXuwnfubnXuHnftynXtenftJnXs1nfsgnXsMnfv3nHvjnHvFnHunnHuJnHtrgrY591449yI41+ada9XOtVvnWqZzbc+51uVc+3GuhTjXBpy9cmfv2NlLdfYWnb02Z+/J2Ytx9iactbqzdnXWcs7axtH6jvZ1tKCjjRytkO1/aS/g1HrnVT9w+pU2JX9pAOd9554x5x4q554i5x4b554T5x4M554E5xq9c83auYbrXNN0rvE517yca0DONRHnGoGzZ+7sITt7qs4eo7Pn5uxBOXsyzh6Fs2Z31rDOmi5oWynbStvmaEJHIznf91LOtottK29bBdsuse1S2yraVsm2y2y73DZHsBnbKttWxbYk25Jtq2pbNduq21bDtits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","debug_symbols":"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udNJz9zppGfudNIzdzrpmTudFN7ptCH+zPew8E6nDfFnvoc9c6eTnrnTSc/c6aRn7nRSeKfT/UgM73TaEH/me1h4p9OG+DNfYc/c6aRn7nTSM3c66Zk7nfTMnU4K73TaEM++wm6IP/M9LLzTaUP8ma+wZ+500jN3OumZO50U3ul0PxLDO502xJ/5HvbMnU565k4nPXOnk56500nP3OmkZ+50Unin032rPHOnk56500nhnU4bn/kzX2HP3OmkZ+500jN3OumZO50U3ul03yrhnU4b4s98hYV3Om2IP/MV9sydTnrmTic9c6eTnrnTSc/c6aTwTqf74uGdThviz/w9LLzTaUP8ma+w7E6nyHERH6kfxR99hR1jXsWHv9/zDz0PvWj+OMQOl7YQux7C6v7II4dcNk592zjq1vosb/+4i7992EbVT/V5avV1ZvV79Cn9kfpalsvGZX5f/UjXcZ3VLd/0p9/YXta/vqzN+uccv2z/Y97RbF5pNq82m9fI89aw665rvbLf0O/H6l/3fF1RefcPcFu/25vX+vpI5Yb+eXL9gdY/7Z3+WTf058n116n127KcXH+vPGBLrzxgS688YIs1m9ebzTubzRvN5s1m81aveUev5y02muWrcXS+injbuPT9vD/0KEyPwfSwnz+IXnftUsuNz9vB38hLXDeWXOT+niVDLxvX8u7uS29+j+J5GVbneLf1t8N82Lo0Lqdurd8g7HDmxmsld1rJfK3kTivJfjq09XTRhP10aFv/OLl+e52J+5yJRxeUPfFKvhLLXivZ7NmINHs2Is2ejWizZyPa7NmINvvuaY++uD2fdajD9EyYHvbvQmw+C9KErefJ716PbmB73qR6dB3cE6+knPyc0pPrh11DDX5PlPOaqabJjfVE3+Ns/v6q+esasZOz+esasddKHn2ftSeRYq6nVm+nVt/st+m82W/TebMnxt7sibGfPE1N9BPgivDr1rn4xr/XfLPmmfLOmn/Oin76u/Os6Ce/O8+KJg52ntUazYrORn8869TrrOkfZkXnop1nRWeinWdF56GdZ2VnoV1njefKTfdnfa7cdH/W58pN92d9rtx0f1ZrNGuj3BSNclM0yk3RKDdFo9yUjXJTNspN2Sg3ZaPctEcv5WlmbZSbslFuyka5KRvlpmyUm9itoTvP2ig3sdtCd561UW6Ct4TuO2uj3FSN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CeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfDBg/GDB+MGD8YMD4wVhY/hwwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMH0wYP5gwfjBh/GDC+MFcWP6cMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcT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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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J6+1F845mXjjnLOJc87ZxDnn5HfOxjlnE2+ITybOOWcT55yziXPO2cQ552zinHMy8SvnnE2cc84mzjlnE+ecs4k3xCcT55yziXPOyWvtlXPOJs45ZxPnnJOJ3zjn5HfOG+ecTZxzzibOOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxO+ecTZxzzibOOWcT55yziTfE5661d845mzjnnE2cc84mzjlnv3NyzsnEH5xzNnHOOZs455xNnHPOJt4Qn0ycc84mzjlnE+ecs4lzztnEOedk4k/OOZs455xNnHNOXmufnHM28Yb4ZOKcczZxzjn7nZNzzibOOWcT55xziV9PnHM2cc45mzjnnE2cc84m3hCfTJxzzibOOWcT55yziXPO2cQ552TiZ845d629njnnbOKcczZxzjmbeEN88jsn55xNnHPOJs45ZxPnnLOJc87JxDfOOZs455xNnHPOJs45ZxNviE8mzjlnE+ecs4lzztnEOefktXbjnJOJXzjnbOKcczZxzjn5nfPCOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxxjlnE+ecs4lzztnEOeds4g3xycQ552zinHPyWts452zinHM2cc45mfiVc05+57xyztnEOeds4pxzNvGG+GTinHM2cc45mzjnnE2cc84mzjknE79xztnEOeds4pxzNnHOOZt4Q3zuWnvjnLOJc87ZxDnnbOKcc/Y7J+ecTPzOOWcT55yziXPO2cQ552ziDfHJxDnnbOKcczZxzjmbOOecTZxzTib+4JyziXPO2cQ55+S19sE5ZxNviE8mzjlnE+ecs985Oeds4pxzNnHOOZn4k3POJs45ZxPnnLOJc87ZxBvik4lzztnEOeds4pxzNnHOOZs455xL/HbinHPX2tuJc84mzjlnE+ecs4k3xCe/c3LO2cQ552zinHM2cc45mzjnnEz8zDlnE+ecs4lzztnEOeds4g3xycQ552zinHM2cc45mzjnnLzWnjnnZOIb55xNnHPOJs45J79zbpxzNvGG+GTinHM2cc45mzjnnE2cc84mzjknE79wztnEOeds4pxzNnHOOZt4Q3wycc45mzjnnLzWXjjnbOKcczZxzjmZeOOck985G+ecTZxzzibOOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxK+ecTZxzzibOOWcT55yziTfE5661V845mzjnnE2cc84mzjlnv3NyzsnEb5xzNnHOOZs455xNnHPOJt4Qn0ycc84mzjlnE+ecs4lzztnEOedk4nfOOZs455xNnHNOXmvvnHM28Yb4ZOKcczZxzjn7nZNzzibOOWcT55yTiT8452zinHM2cc45mzjnnE28IT6ZOOecTZxzzibOOWcT55yziXPOycSfnHPyWvvknLOJc87ZxDnnbOIN8cnvnJxzNnHOOZs455xNnHPOJs455xK/nzjnbOKcczZxzjmbOOecTbwhPpk455xNnHPOJs45ZxPnnHPX2vuJc04mfuacs4lzztnEOefkd84z55xNvCE+mTjnnE2cc84mzjlnE+ecs4lzzsnEN845mzjnnE2cc84mzjlnE2+ITybOOWcT55yT19qNc84mzjlnE+eck4lfOOfkd84L55xNnHPOJs45ZxNviE8mzjlnE+ecs4lzztnEOeds4pxzMvHGOWcT55yziXPO2cQ552ziDfG5a23jnLOJc87ZxDnnbOKcc/Y7J+ecTPzKOWcT55yziXPO2cQ552ziDfHJxDnnbOKcczZxzjmbOOecTZxzTiZ+45yziXPO2cQ55+S19sY5ZxNviE8mzjlnE+ecs985Oeds4pxzNnHOOZn4nXPOJs45ZxPnnLOJc87ZxBvik4lzztnEOeds4pxzNnHOOZs455xM/ME5J6+1D845mzjnnE2cc84m3hCf/M7JOWcT55yziXPO2cQ552zinHMy8SfnnE2cc84mzjlnE+ecs4k3xCcT55yziXPO2cQ552zinHPyWvvknHOJP06cczZxzjmbOOec+875OHHO2cQb4pOJc87ZxDnnbOKcczZxzjmbOOecTPzMOWcT55yziXPO2cQ552ziDfHJxDnnbOKcc/Jae+acs4lzztnEOedk4hvnnPzOuXHO2cQ552zinHM28Yb4ZOKcczZxzjmbOOecTZxzzibOOScTv3DO2cQ552zinHM2cc45m3hDfO5ae+Gcs4lzztnEOefsP8c552zinHMy8cY5ZxPnnLOJc87ZxDnn5OuwNcQnE+ecs4lzztl/jnPO2cQ552zinHMy8SvnnE2cc84mzjknX4dXzjmbeEN8MnHOOZs455z9zsk5ZxPnnLOJc87JxG+cczZxzjmbOOecTZxzzibeEJ9MnHPOJs45ZxPnnNnE74/z5z/5cemJc86/QPzc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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block","attach_len_to_msg_block","build_msg_block","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::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":"inner_hash","type":{"kind":"field"},"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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::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":"authwit::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":"authwit::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":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+1dfYxdx1W/d997u95nr/38sbZ3vWvftZM0/d6N10mqVqrTpqJV2xRUGtQWRN3sOrHieIO9btK/uiqkBcJH/wAVaPmoxB8UKhFohdSgUj5KRQoI0UaCfxASEIkEUiE1glZqU3Kde/b99vd+M3fevW92n9N3pdXu3jlzzplzZs6cOXNmbpq8+Iy98JMWf7fgHT8Gc7b4vVjvWRogrsWYfKYD5DMFPseM2Sa+oEbg33n5A6L8K/DPzcXvO9bXVx94cH11JVtfyy6vnlvJHjx3ZT1bvbSSrZ3P3rR29dLK6srdq/cgnhsb3b/nit/nXsSTYzm3spI9dGH9vmztQ6uXz19cewjrvhzqzhgPly+f+3B24QVKD2drV9dzwh/MCV/BiotVK76+BrdvrlH3h6oyfFfViqtVKz5QteLVqhUfqSHYX6lK9PeqVvxiDW6frVH3u1UZbjYrVtxTteJcs3ozX1mV6OmqFV9fteLbazTzfVWJXqpa8SM1uP18jbp/WZXhr1Wt+PWqFf+tRjOfrkr0W1UrPl+D272tikQPV614vGrF17SqN/OOqkTfU7Xi+Rrc/kaNup+tyvAfVa34xaoVn6jRzG9A3YXeug9cvbh+4cGLH3Yj+KeqXP9HXcr/WaPZ/12V62/VIPp/VYk+X4Po2HhFopPj1YlOVSV6qAbRo1WJnqhB9FRVoq+oQfQ1VYmegYoHit8PXr1yn7vGWahRaZTeWZXXd9UQ0LurEn1/DaI/WZXovTWI3l+V6JUaRB+qSvQjNYj+dFWij9Yg+stViX6yBtHfqlH3D+qO1z+sQfzzVaX1eA2if1aV6N/UIPp0XTE/W5Xrb9fg+rtViTYnqhPdNVGRaKcG0UNVic7VIJpVJXpzDaKvqkp0uQbR26sSPVuD6J1Vid5Vg+h7atR9b1WGP1C14v01uL0MdfcWv9+9fu6e+1+ouZatrK4+uLnd8ekCdLL437ZM8vI8qHq2+H+x3rM0CXgHjf/2xeVbJ5Otz4D5Pz0JOCPgv8XwN+PgX7Qe8eaNrfgTojtV/L9lc2djaxluq91ZlO164Wc34MiftwAtw3eQ3lvdtYLBPUm3y967uv6mi2v33H/X1Qc+uHoZOWJJ4XvYCth8cqwHuljfvHZp/fK5e9bvWFm5vHrlCmNoCcyJA2sbsN537sKlt60wtvFq2O5evXzlwtolxjYRiM10tYvqq9/50xDvTM8dwqX6S3OAdFCzLaLTGiAd1PME0ZkYIB3UmfWGyaS3dwxyvBt+tIuDwm0yagsZGd3dUdp1ZilEB0i/TbwOel5LiZ7xw/KxPmGy2yN4NdlNUXvODobXxY6gjbSwDNuxR7RD4Zoc4XpJ4BofIK5R/xrhGvWvEa7txDXqXyNco/41wnW94hr1rxGuUf8a4bpecY361wjXqH+NcF2vuEb9a4RrO/rXvuJ/3CtpEx21r7DbQwfr434s10sdv40Ov2M6iud9oq3cnn7lhvUNblLQGdyezsqy4d8LfA0G94t5EGkhq8Hzvrhkuu4A7ynJbX8c2sshfQnpt4nXQcsiJXrGD8uH9+YOCF5NdgehLB0cr5t7c0ibaR0Q7Tgg2rFduFR/GqBMlqYEX9yXD8H7AdqAM6F92ei3hZxi9OVDxI9Lbyaf6TjyWU4JP/IzLeRjujwsygzXkeL/FuBC+GloI8Lj31Yf3/1X8bsjcPK8fjjpbQ++M/nmc/hT1DbUDffTOHoIt7lGv53EHDfdfqr6xSEhR9UvrO4g9bXduFT71Zzjo+2DP9In/FEBf8gDP9Mn/tk+4Y/1CT/XJ/x8n/DHBbyyq9ZfT0AZj/UM3u/EnGT028RrrLGeJb2yOyFkl/vrlkN47+r6XWvrq1eQb8T1JLzHcnwMhn3dvfQ/+z7TwCu+P+x4f8Tx/qjj/Yzj/azj/THH+znH+3l6b2X76P9x+n8//b+H8NoYUHJNCJb1Yf8zr4MqTyLiHnR5IuBVXXvv69tWhrrwjTGD9615sG+oNft+qof+Pa+5FW5FG+vxes/Hs6+Nag2DvO6jNiJdqxt5TXxmkugNGP/tkf3Lc4b/cBz8m+cqjsTBv3mu4ijgT5LBr1FxfNvYyn8fSbvvcW7ANQ7WnYZyhP/MeBfnbIFTjV2Ly/UTW8RxWDW2uP254Mu3pUQvSbQ/NOy54HsFrx1RxmuMvYLOXkFnhGu4cI3/ALRxhGvUJ0a4Rn1ihGvUJ0a4Rn1ihGt7cY36xAjXqE+McJXhGvWJEa5RnxjhKsP1Us1Z9cWvq9LB9vB9LyjTAcaeN3NWI+VS3mr4Z+Lgv61sH+VLafd9/mN76aH7KAb/d60uzj8vcNbdR2kLXsYFrhbB/3VBH/cx8fGNJ5UzbfBqrxj557GM7ekE4PLRLtt35j1Z5Gs/laE+JqgM71SKcUcUj6f8OVv8XuzvOcMvppJeWaVEN9J+cXAOkdFvE68D5mdzz8y3l496MdlNC147oiwkL29a0LmecFkftbGh8td9cvblfWN9g/PlZfc7zlifg8A1MwBcJstZgGFZqpzHWYFLyXJ2m+lMinpni9+LtZ5bVk3umNPJ9mwO3g/S7wm1Z0a/TbzGsmcqXxXlw312XvDaEWXYT7AM6cwLOgrXZARcVoZ3Kx6jMmWflF3bR2Xoe9q5yjK/8fl0axvNVrr8xr1QjvBL4DemhSCUL4I8og+Dd1pOiHa0CL5V0HD5hmXtnhjbysdESbsPEx8GPwbtbnvabfpWvts0lak8vBCfCPv+TvhERn+7fKLQnHqTTySbtuyzacpHy9+peQ35M1w4LmzsqX6CfY3LfLLpiPodKlP3wPZrq/ZQGdqBo8Q73i3rkyPbEIRXd8ruE+2xur57beOep10OvrPV6LdFG2OML59c8wfPLVjfvHd1/Y6r6/f92IX1S3BzNGM8C++xHB+Gsb9dt0/zzbEIEzf6E65Bo99OYvaorgZDoxNxs7yXF9OkdxQ3BE3jV5005sgLRrAaidsajSW91ghXUy16d7oQirJwVU8J5xbo1eQdYHv4pInSm896q9MDvpPuIf1V0VE8R7aOi2We3BvIkzO9uzy5PVCO8E81uzjf6PHkOtvR7qVuFEzpL+54vSXYng3rTQX7ix/XbI+4soSEGie0eMuiLWUaG71MWFkTyoyP/Ejg+kT3PRvxENc3UkdZ9BnCCQ8/B6Pws7yYt3O8wKu2zVydwGfoeemGxiDGZx527shI+FLvevx8gJosX2rXKQ1wW+Y0v/A5G9fjtrdvwVAV1/4B4FLbFCzLfrcpsP6BbaYzKeqdLX4v1npuOW9yPwi42VYO29UiceY+/9UiKB/XdhDWVWEa7CdYhnRmBB2FazICLivDkNlBKlP2Sdk1Dq2jnxAaWv8oLUxMfq6FCV7vg/B3wcLkEVqYYH3eFjM/hT+Zxu3gkPbPBYbWxxztfpTa3RDtxrocWjf4E9DuX/K029qn/LM9VIZ9mOeUHbAhwf7WMNgQ3zVakdKeNkPrKtSvbBqG1lFnyJ/h8oXWeQ1of6uysjkR63MqhhqbylaxHVOpP8pWcWgd1yc+ObINQXjkmUPrDcHXINdGaoy3A3hWa1Hls8T4zN2w+qwmS+wvLEtfwBZxKVnu32Y6O5g2FuwLDnva2EHBK8+ByeD4vK0j6KLdZvvks1kK12QEXMp289ansk/KrrOfqa7GLvO3vkr+lkq3xbrsZxr8zza6OJ8gfwvr82aF9XOUx5hoB/t3fx/oZ6aOdv8DtXtMtBvrsp9p8O+Fdn/d0272M3F8czq0b04xeVh5/kROTw/2M3mDcioOP94NShXXi3wN1bLPXk4JftDPRJ2peLLPz8R+wr4Xx1RdsumI+mxz1NhUtmqKyjjOjGVoB9jPNNgk8csxJf4QXq2r+x2Xdp2izwe1vhUnnWLpdaFjz+i3k16dxRh7Pt8+Sbamd2TF3/eurr9j7aG7rl68eOH8hdXL71zNvzx+5b4LDzoSPozGUdFelAfCjME77kuoex/clKOu+p0kYZvfCGNXw6r1CF/b3O96BOvz3OGaC/83IJ3RNxca/BthLvyOZxO8Qe1XsklFGY/tsvbz2hs/1+6TJdtQhMfPtPvWr3wEbpBrQfXZ+clE2/2zxf+LtZ6lYB/A6LeTXnnFsEM+HaHs4u59Lm36AL59KtUvfJ/zQN+3IeB3QxsRHv+2+lvm50Jxg9w7vJbCTHhxzJtOlO+yi2gqnfp8F6xvcJHHw3KZTT3S2NomK3PZVFx3IfwC2NTZxlYZph4ZptRufFcmQ4TD/3kNxvMp/u/CkxJ9rmP5EruhnXjck1OV1XjDtu8leOu74w54Pk5q8DcVjXatN62/xVnzLN1ufKojFmhfeL1s8K8o4Z9tTpL4/TrmB+FRBry2Vfv/kWW37JMd6t4lu6US2ancLDyanj/NjShtO5OP249PdPngMdECui79qjyKUP2a/HxJnmwDERfKfx/Bl41VtKkI/4YSfan5iffzyuy6z6+1+srf9LW3XdLeXdReg78z0DZF8n1uZ33h+MJ5xWVb3xpom5St99km5bugDHw+yfYkKC+e5nHpsk2ceGzw76pgmyagbfnT3IjStuV+bZNPX/nD+lW2jG1O/nSSXrvFMS4Vj1W2wPoMrptVXGk38aHyGBAvxp8R/ifA//tow03PF8fi6x1UbpyVoYw4/0EdGduOvbH852CJ/DA/BuHPB9oWFbtVOdHMD8JzjlP+qP3Lg1SGcjU9xs117toddRAmFbzyQZdLgXJVcvLJ1Zd/puSKMudrDvjwg4qvD3v//VAF+96AtuVPcyNK26TvifvDbN9D95P7HWNqv5WPoYbuYfBebGjOn+kB7XRK9LAdqHv2AxuAq5+54mMBfcWFC/dEQ84QRNprPJ0SvSRJgvYaY58hCN1r5HGg+iLnWuLf/eay8J5m/kTe77yFx7MrVwAP0yH8rwbOHUoWSuYh9gV5812V4FsLMF9oUxCe4wgG/+mSdvv8M0W7IeAPO2h/GfzI32m46bEfifJjP1Llw1oZ2mL2I6dFvcjXUGz6O8dAPg3BD159h/CfrTAPYyw6f5obUdom11mY/87zsMqHVfnyLDOERz1x3j9eRcFnfLCv8XUu/cb9sX7bQ2d/TTq+3EOFC8cFz+0mj3EHPO8DGPzjgTEttEkzVDYIP+cg8P9MwRP7C2myNWb2F+QPqUPWITbsf8CGfaWiDfPl9PN++Sinf5TT3885t7RENsNwnk7Rqfv5epX3O2zzIfLP82Fo3zZ4dd4M+9Y4yQf7mm8+5LVtv/OU6juKzsGadA4KOmr+4fMqE4KHfvOazZbj/ONrx5jA65uLVR4kz8XfDFxnK1yYc63mJ/b31RpL+Ta8xnoO5sqZppsez5VqPlQ+Pfv76rouK5sROLf7WjWX/HA9gPDfC1yjKt/Y50v7rq5U4xb97DkqQ7ly3DjSlaCb6yi7ntIlV5T7FviC0TK5Kjn55Kqu10QZsFxR5vNEn6+4VdfsDXv/nSqRs5qfMSaeP82NKG2TcWP053h+9q0/86fqGOskvf2E10yh53RmqSz0/KXZTbTTKdHDdqDueT47ALj6mSvmA/qKCxeu79TeI8fOVG4x6q9BPBr8KTjP/damm57vPDfPWQcEn2qu47OIOxC/Wuax4JKfK371qkC7q9ZV6qr0kLGJvKk56xiVoVx5PotkZ0/77OyY4JXt7HKgXJWcfHIts2EsV+UnJIIO68B1hfmw9d83VJjPtinP5cxOx195fYb9hGOzoXcG8DyIdpzXdSq3Ae10SvSwHb712QTg6meueEfgfKZw4R0kKnaQFr+3Iz8D6SWJjgMa/XbSO6fFiAP69uSTpHcfdFrw2hFlnNdd55MdHIuMFKvd3Ae1sRL6uSSDf3/g3DHo+JTxpnydGSrzfe7EcKqYT/4374Ma/AdL2u3zzxRttY9y2EH7EfAjzzfd9NiPVD6f8mnYj1SfHlFrUM43xc8/xPB3joN8lH+B63uEXxvedaWM+6IvxPOwL2aQPzyujgt41BN/iuM4lHHOH/a1OaLTb/wd6/vi/NM16ajPQvlw4bjguR39BAXvyofbKOl/ys/hT76gn8P+UaifMwv8P1YQY38hTbbug36c/KGyS8hdNuxPwIb9fEUbxrYIZc/5z+ivsv8TaV0WvA9q9NtJr72N4f+Exnu349NMLhumYmO4D6o+FYK4fPugIXc6piWyUftVMxXoJAOmM1uTzqygM2zzoW9dOui9DN4Hxb7mmw85L6jfeUr1HUVntiadWUEnJA9nt+Ch33tEMW78WLO8HQ2B1zcXN0TbeC7+QuA6W+HCO059e4g8Fl1zpWuN9TjMlf/adNPjuVLNh8qnZ38f+z/PsXMCp80T6CvGmCdOlMgP1wMI/1eBa1TlG/t86RMCHmXA4xb97BNUhnLluPEJKIuxjsoKfC65otwR/m8D5ark5JNrJuBRBixXlHlG9DmOjDqwesPef79RYb06A23Ln+ZGlLbJuDH6czw/+9af+VN1jHWS3n7Cayacz3jNhPPZPJWhHee5Duczs5top1Oih+3w5djOAK5+5op/D5zPFC5c36k8G77rINY3TFLRRjWnu871PRNol1Qc2HeXUtm5Po5JKhmrWCavDRTusv7D+XBx48ZdHVWNGz9XwaZZX4xr05aXlE3DvsI2LfR7AywzhFexbd9aICWZIC6fn6zyKxDelV/x/cCYFZ5HMhlMeejgB8xUvgPH+9T9DIh3gvjfvH8DPlP7ypabXlEk73phv6Mj+FR2k9fras213bEWl/xcOW/7CsFUyXnz5TmV5byxTVXxfSVX0+NO7kU0BK+8F3EkUK6hMTLmB+FZBvmj1h/HiT7HTlXsbdj774kSOav5Bvez8qe5EaVt0ofGOBbPN6Gfju93jHWS3n7C/m4LynyfQuZ9JLTjfJYY5zecF8xOp0QP2+Gb69TdSyFzxWsD+ooLF35afec+YBm+9zCsH7DkfRusq2KXKf2t8pOUvVS49gwQ18QAcfG+zE7kuWEfcuW5vSlwTgv9fD3zg/Asg/xRPhjnaWI/n3HwhfEChOecEIN/W0m7fX6jot0Q8IcdtC+Cf/vOlpse+7fKF1W+Fvu3Kt9cxTmt3k7GMlXclWOZd1fwDzAekj/NjShtk3tg6KOxf+CLmeVPv/FWjodlUMb7A9jXjhMddf+IGu8q96TjoTNbk86soOPDheOCfQ70XxQ83t+J8PeW9D/lfx2nMrUv2K//NQf8f7Igxn5MmmzNCblEfhrOC/3YsN8EG/ZTFW0Y2yKUPZ7rxbZaef5EXi8G+2VGv5302tsYfplaI6g1xXbvlSA/as8Ic0LU3g7i8uWEqDGaijKfbFQM7FgFOsmA6czVpDMn6AzbfOhbL4f2bYMvi51wTgj2Nd98eIzo9DtP+e6kQTpzNenMCTpq/uE1vsoHVfMP54So/CWcf3zt8K3/1VzcEG3jufhTFdb/eA7/+cKQq/mJ/X21xlK+Da+xPgNz5VdprlRxUN98qHx69vex//Mcq/ZjbZ7IoCzGPLFQIr8MyhH+9wPXqBm8C/GlFwR8BjA8btHPXqAylCvHsxegLMY66mSBzyVXlDvC/3GgXJWcfHI9KeBRBizXDMpOEn2Ob6MOrN6w99/HK6xX8dx//jQ3orRNxrPRn+P5OYOyhoCvOsY6SW8/4TUTzme8ZlI5UGo+47kO5zOzm2inU6KH7UDd83yG+SX9zBVfC5zPFC7f+m4s0fPqNu1pLrJcMGamzpOwXJ6kdlnfaCQ6vsh77/OCLq+LkO480XXpI67cziwy/y1He117af9cYy9YfXeJ+UF4lIHx5tsLZh3/C/hJnxrfSu+l0o+f2qF+/FRgPyiL27OdwxiUgnfdY/B04LiKE9vpjquq5xKfrZEL4BtXoWf+fLkAobo84uA1VJcG/1ygLuPEobq6VDm7x4R8OGf324G6VLrx6bIsH5Z1qfY+QnV52MFrqC4N/vuBuoyzN9TVZQb8KV269oYa437+fbrx6TIT8CgD1qXKcw/V5V4Hr6G6NPh2iSzirpu6ulwA/pQuM+Lf4PcG6jKDdyG6XBDwGcCwLtW6P1SX+x28hurS4KcDdYn8xdClijUcE/LhWMNMoC6Vbny6LIs1sC4zKDtJuMp02XHwGqpLg88CdYn8xdDlKeBP6fIk8W/wNwTqUunGp8tTAh5lwLpEPZ8iXGW6nHHwGqpLg3/lda7L1w6JLlHWp6hM3aUYao/4TIPB31rSbkWbz2WeFHztS3r7I/N8Q/E/rmURHs+D5f/fBGUx1rI3FvhwTXmT4KdF8HfQGv3m4j2uZW8QeAz+ZYLuzQBziui+jOiWjbkbo8ht+daUZNRytPdG4t/g31LC/87Fg5dvU/FgHMstoIttTJLevpw/bBduEvCoJ5NfJ+nthyF74yj/kFgFwrtiFT8c2N8QV4z+hv1J2bobiH+D/9FAG38DvAvRpdK9kmcn6dWzrXU5v4dtIcIiHV9el9V35XVxTMfgfzxQz8hfDD2jHlUMiO2iwX8gUM9qbvad8fb1C+Stk/T2AVsHc+6HGs8qBo3tZj2rGMe8wM8xjvsC9RwnXtXVs/LZVDyP++nFQD2reJUvl0b1C5QB751hH7A1Mp8rZ5277Da2O0TPKs+J9bw+JHquGpd8uIae65zTZ7ut9tyV3Z4nOv3abaXnkFj8xhDrWeU5sp5/poae69x5wnZbxbmGyW7/whDr2We3Df4Tkex2mZ7ZbqOebd0dYrdVDgSugUNyIE4K2rxH+mslcgq5B6Qt6Pj2lbFNjT7b1Aho028HrPlcuPKqX0q38lF2l8Me4sPgf3e8i/PtE1txlu2x450O3OdjxCXK9tj5/gOD/xzpuGyPnWP0VffYPxc4vpX/g3uxfEZGrVsR3rVufSzQXsbR44r3HLiaT1ieXwiUp5p/fDlpZbkrvtjkfABtn4+j9thDZPGnOzr3dXWZAX8hc5/Bf7nG3OfTZSbg1dyn9tgzTz3OO/G1FXEoPyaF8pA+w3kZZX6xy196InDOQXuUOn4br/zOd+7hUPG32hM/BH+7ZHncQwfrc4wB48x49u0fHfMC9mWsy2ffDP5HJro4nxzf2kbf92aUbFJR5vP5VPvZT+v3W2a+dQXKULXjeAAuH+1MwCPOfUQb+coCcPloLwh4xHmEaCNfC1Sm7u9kvkJzF+PsFS725GOgf3NS8MP71s/Q+LkBZKfkx7mLpwRdjpkj3VNEdxj3WDOg6dpj/WaF/Z7tuRPyjLw/DcdFC+hiG5OkN98if/rdB86Kv1VM8SjhUnexZQDDvpba00d43tc0+O8McX9DO+Pqb9+rsadfR5d87zTqEs+ish4WiI7vXnClZ6vv+raDKw+nVfT76zWnarKEf5ZPkvSOg/ypmlPVSXr7wOb3QJNePWREp9+1k9UP9YMNfn+gnjPAFUPPqEflZ2XEv8FPB+o5g3eD8H84boh9wLevx3keym7X2e9hu23w84F6jp2HngF/yh651sgLgXruNz6cCXiUAdvtDMos51Ht94Ts6/nsttKzz24b/MuHWM++fT2Df3UNPfd7F7tvXy+DMt4HUPfMpASLdHx2W8UvjwnaHL88E6jn2GfvVJzAd/bO4F8XqOdBr9f5bCz2ATtbUNVu1zkLxnbb4O8YYj2rccB6fksNPfd7t4nv2+EqfqnuZmQ7oL4Po/aHVH/w7ZUhLgXP/cHg31UizykPrpzWkfTFv1XchuesLOltk8/2LYg2KR+Xfbi7A/t4nDVlN35/CvjrJ4bxvsA+rtYOvvh9aHzAl/MfOW522ie7kPX4uYD+fK39G11c+L2T/GluRGmbvJ8pA95aQNelX4QfZMxggXD5YsvK/pSNVfbPDP5iib7UXkdW/D3loYN7EDH1etvtL8Z6r8lpo9vGRtL7NKEc4a+UyGA3tGF8Y/BtWCy+d3yNtwK/xZmRb6Rv42jXRm/7jNfJOLxuyrtd4Ed5TwI/1pYxgue/W/TuYzAXYxutHfgO8Rv8bigz+Aa8Mx5tDI1D2e6N/nDtIlwTNXAZXx0BP1GRL4VrnHBNClz4zuSbD+eHC93kY0LJr0G4je8m4B4XuFsE/yjsO/4i2OxrsILetXwnD1zq+H0Nh3jXLOoOy1gyfvodS79OY6nfsYHjLKQ/twQu1Qd3Ea5++uAnija1ieaAdbOEfSrv7/8PB/roWidPAQA=","debug_symbols":"5Z3djiPHkYXfZa51kZEZ+edXWSwWsi0bAgTJsOQFFobefTlk82dETgaazml+kXljj6wq9vnG7HNOFSuC//701x/+/K+//8+PP//tl18//em//v3pp1/+8v1vP/7y8+Gf/v37d5/+/M8ff/rpx7//z+3//Cl8/g+Jx+N//cf3P3/+x19/+/6fv336k5Qevvv0w89/PfyxhnB4hb/9+NMPn/5U5ffv7g5uQd+ObTFeDpXWHhybY347Nufry0rOv//3d58k/eda8vn1W62GFk397Vgt7U6L/sdaeohvx3YphpYSzrpLLHda8n+uRc/H9pwsLe187O3LnrWUd2r5fE594pz2xDn9/efE8MQ58sQ58Ylz0hPn6BPn5CfOeeJ9EJ94H8SH74NUVd7OSfXmF/3hez/lcjm4yI1DpfDoN6Xlsy30Vm9+V0I86uksPSnA9AhMT4TpSTA9CtOTYXoKTE+F6YH5c4L5s8L8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf4sAWbQEmAOffgvmiCYR0uAmbQEmEtLgNm0BJhPS4AZtQSaUwvNqYXm1EJzaqE5tdCcWmhOLTSnFppTC82phebUkebUkebUkebUkebUkebUkebUkebUkebUtOFCoU0XCm28UGjzhUIbMBTahKHQRgyFNmMotCFDoU0ZCm3MUGhzhkIbNBTapKHQRg2FNmsotGFDoU0bCm3cUGjzhkIbOBTaxKHQRg6FNnMotKFDoU0dCm3sUGhzh0IbPBTa5KHQRg+FNnsotOFDoU0fCm38UGjzh0IbQBTaBKLQRhCFNoMotCFEoU0hCm0MUWhziEIbRBTaJKLQRhGFNosotGFEoU0jCm0cUWjziEIbSBTaRKLQRhKFNpMotKFEoU0lCm0sUWhziUIbTBTaZKLQRhOFNpsotOFEoU0nCm08UWjziUIbUBTahKLQRhTlw2cUJYRY3w6XoF2+kHR/fKzp/HUihz9ev0+kfpYfP3yicbJ88S0/+paffMtX3/IzXL7WkN4Oz6H269H50TcNJU3nr35JTb48+ohb9sKte+G2vXDprWEurtBbxmRceiuZjEtvMZNx6a1nMq7uhbtXq5K9WpXs1apkr1Yle7WquFerinu1qrhXq4p7taoP31jwYty9WlXcq1XFvVpV3KtVxb1aVdqrVaW9WlXaq1WlvVrVh28XeTHuXq0q7dWq0l6tKu3VqtJerUr3alW6V6vSvVqV7tWqPnwT0Itx92pVuler0r1ale7VqnSvVpX3alV5r1aV92pVea9W9eFbu16Mu1erynu1qrxXq8p7taq8V6sqe7WqslerKvRWlSWcXz2LhHsAek8yAdQ7AL3LfAlQ7wHo7cQEoPcNE4DeILLUK0B78DtA7wQWQKWnvAnA/3+gn1cn5BjLHUDDJ3Ev58Nzvz36DIBPYgsAn8QWAD6JLYCPT+IsegHI6UuAo6TKk9R4kjpOUg88ScKTFHmSEk+S8iRlniSee3eee3eee3ece6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p4Bz7xR47i089xaeewvPvYXn3sJzb+G5t/DcW3juLTz3Fp57R557R557R557R557R557R557R557R557R557R557J557J557J557J557J557J557J557J557J557J557K8+9lefeynNv5bm38txbee6tPPdWnnsrz72V596Z596Z596Z596Z596Z596Z596Z596Z596Z596Z596F596F596F596F596F596F596F596F596F596F596V596V596V596V596V596V596V596V596V596V596N596N596N596N596N596N5968WcvEm7VMvFnLxJu1TLxZy8SbtUy8WcvEm7VMvFnLxJu1TLxZy8SbtUy8WcvEm7VU3qyl8mYtlTdrqbxZSw0491berKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2uprxhG036VVMq9pI//P67IVVKJ/V5Sx0maPmZVDEkp5nI+OtYrQD3JEZacyJKTPlpOuuwkT0nzjZz7Yw+3l87SD/dQ8h+lq1/p2a/0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","brillig_names":["lookup_validity"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"}]}},"file_map":{"100":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n }, utils::arr_copy_slice,\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash =\n compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface + NullifiableNote,\n{\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"102":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>,\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, BoundedVec)\nwhere\n Note: NoteInterface + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, BoundedVec)\nwhere\n Note: NoteInterface + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteInterface,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"},"118":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice,\n};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator =\n arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"122":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{\n keys::get_public_keys_and_partial_address,\n key_validation_request::get_key_validation_request,\n }, keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) =\n unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address),\n \"Invalid public keys hint for address\",\n );\n\n hinted_canonical_public_keys\n}\n"},"123":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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(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(\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(&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(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"},"130":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: &mut Note) -> NoteEmission\n where\n Note: NoteInterface + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteInterface + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: NoteInterface + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"145":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator,\n constants::GENERATOR_INDEX__CONSTRUCTOR, abis::function_selector::FunctionSelector,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm,\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"},"147":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader,\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\npub unconstrained fn get_contract_instance_internal_avm(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"149":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n"},"150":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice,\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH,\n ),\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_low_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"151":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{\n KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"153":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"154":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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(\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(\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(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(\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(\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(\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(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"},"155":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n"},"158":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S]\nwhere\n Note: NoteInterface,\n{\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"160":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point,\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"161":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"165":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"168":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::getters::get_ovsk_app, encrypted_logs::payload::compute_encrypted_log,\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash,\n};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] =\n compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface,\n{\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteInterface,\n{\n |e: NoteEmission| {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) =\n compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteInterface,\n{\n |e: NoteEmission| {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) =\n unsafe { compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient) };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress,\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext,\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"169":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point,\n};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"170":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose,\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes,\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] =\n compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(\n plaintext: [u8; P],\n eph_sk: Scalar,\n ivpk: IvpkM,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{\n address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar,\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false,\n },\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(\n 0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2,\n );\n\n let log: [u8; 448] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n plaintext,\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235,\n 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79,\n 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171,\n 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203,\n 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211,\n 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205,\n 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248,\n 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110,\n 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173,\n 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4,\n 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194,\n 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219,\n 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18,\n 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167,\n 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239,\n 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25,\n 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91,\n 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76,\n 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178,\n 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189,\n 117, 147, 101, 230, 132,\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\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, 2, 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, 1, 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, 1, 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, 2, 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, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31,\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(\n recipient,\n recipient_ivpk,\n sender_ovsk_app,\n eph_sk,\n eph_pk,\n );\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238,\n 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248,\n 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31,\n 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151,\n 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58,\n 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25,\n 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224,\n 30, 168, 177, 26, 144, 5, 124, 128, 6,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"175":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"},"185":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests: BoundedVec,\n public_call_requests: BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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(\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(\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(\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(\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(\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(\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(\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"},"188":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::storage_read,\n};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Deserialize,\n {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"199":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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,\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"},"200":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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"},"202":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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"},"203":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash,\n }, public_keys::PublicKeys, contract_class_id::ContractClassId,\n constants::CONTRACT_INSTANCE_LENGTH, traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n salt: Field,\n deployer: AztecAddress,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys.hash(),\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"},"210":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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(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(\n _vk: VerificationKey,\n) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = 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(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(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(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(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"},"229":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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(msg: str) {\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(msg: str, 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(\n msg: str,\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(_msg: str, args: [Field]) {}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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(\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(\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"},"248":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use 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\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{\n decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI,\n };\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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 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(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(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(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(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(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(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(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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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"},"265":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash},\n};\n\npub struct NullifierLeafPreimage {\n nullifier: Field,\n next_nullifier: Field,\n next_index: u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value =\n compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(\n self.nullifier,\n siloed_value,\n \"Value of the nullifier leaf does not match read request\",\n );\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"},"297":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n"},"309":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/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 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 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 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 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 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 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"},"310":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"311":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate {\n lhs\n } else {\n rhs\n }\n}\n\npub fn arr_copy_slice(\n src: [T; N],\n mut dst: [T; M],\n offset: u32,\n) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"334":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\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(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(\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(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(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(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(\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(\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"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"70":{"path":"/home/lima.linux/aztec/alpha-build2/phantom-gate/contracts/account/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}"},"71":{"path":"/home/lima.linux/aztec/alpha-build2/phantom-gate/contracts/account/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}"},"73":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"75":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, CANONICAL_AUTH_REGISTRY_ADDRESS,\n }, hash::poseidon2_hash_with_separator,\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let result: Field = context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n )\n .deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n"},"78":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"79":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"80":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator,\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"98":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"99":{"path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note,\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"}}} \ No newline at end of file diff --git a/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak b/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak index 74a3819e8..01823b8cc 100644 --- a/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak +++ b/phantom-gate/contracts/account/target/account-SchnorrAccount.json.bak @@ -1 +1 @@ -{"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-aarch64","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{}},"bytecode":"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oqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]},"visibility":"private"},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"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T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2T1m2z1i2z1i2z1i2z1i2zxZUKhvL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9hnL9jnL9jnL9jnL9jnL9vmCSmVn2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2T5n2b5g2b5g2b5g2b5g2b5YUKkcLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsXLNsX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DyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDyrMDxrMDxrMDxrMDxrMD9rCymeD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGD+UGH+UGH+UGH+UGH+UFfWPnsMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD/oMD8YMD8YMD8YMD8YMD8YCyufA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YHA+YH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Dw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgflBgflBgflBgflBgflAWVj4LzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8KzA8qzA8qzA8qzA8qzA/qwspnhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBg/lBg/lBg/lBg/lBW1j5bDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/aDA/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flBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhflBhftBgftBgftBgftBgftAWVj4bzA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA8azA86zA86zA86zA86zA/6wspnh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/lBh/nBgPnBgPnBgPnBgPnBWFj5HDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/GDA/mDA/mDA/mDA/mDA/mAsrnxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBxPmBwvmBwvmBwvmBwvmB2th5XPB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GDB/GAd7QdlUb3seVmLeFPPrY3X+63Xrddsum4+ym9sH1Pmz81j2pvF/lxrNVrr7LPWo03ll651NFqrNFqrNlqrNVqrN1prNForuW9am7667nrarI21inrVZe8aI3+3/Y/1knunR6yX3D89YL1G7qEesV5yH/WI9ZJ7qUesd4d+KsflRUaabnzOzsjrxvV6cHL+rMdg9Tisnji4nvWb1eubWeV9PQmrp2D1TNb7Zw8Xvms9A1aPwOqB5bPD8tlh+ewBqydh9cDy2Sernlhg9QxYPQfn87o7v+75ZXev9dzYs7tc7p2s/53xvt8OPXn9dvL6/eT1w64vAbu+RMHqmej3W8zrrn2O+f79lsvJ6x8nr3+H613E9aZRLlv3o17fz1KL3N+zrB+XrhvXm7tRemtr9bgcGo3lzfcKLy/zbuu51GWJcyz6H3/5TtceEwKeR/K3I2nPI7nTkfTnkdzpSMbzSO50JPN5JHc6knXy3uPkvWudvHetk/euxb5Xs10/+17Ndv3GundXDqsH9l1qwb5LLdi9+oLdq5+we/UTdq9+CqwehdUDy+cJy+cJy+cJy+cJy+fJyue5sPJ5Lqx8ngsrn+fCyue5sPJ5Lqx8ngsrn+fCyue5sPJ5LrB8HrB8HrB8HrB8HrB8HrB8HrB8HrB8HrB8HrB8HrB8Flg+CyyfBZbPAstngeWzwPJZYPkssHwWWD4LLJ8Vls8Ky2eF5bPC8llh+aywfFZYPissnxWWzwrLZ4Pls8Hy2WD5bLB8Nlg+GyyfYRZ+wiz8hFn4abB8dlg+OyyfHZbPDstnh+Wzw/LZYfnssHyGWfgJs/ATZuEnzMLPgOVzwPI5YPkcsHwOWD4HLJ8Dls8By+eE5XPC8jlh+ZywfE5YPicsnxOWzwnL54Tlc8LyuWD5XLB8Llg+FyyfYX5wwvzghPnBCfODE+YHJ8wPTpgfnDA/OGF+cML84IT5wQnzgxPmByfMD06YH5wsPxgLyw+u9aDyea0Hlc9rPah8XutB5fNaDyqf13pQ+bzWc/SzivQ6nkpsvJn3cvPZH7GWfNl1VLyu9RPPZVrXWo3WOvus9ejnxn/pWkejtUqjtaKe1bzWY7B6UM9qXutBPat5rSdh9RSsnsmqRxZYPQNWj8DqgeWzwPJZYPkssHwWWD4LLJ8Fls8Ky2eF5bPC8llh+aywfFZYPissnxWWzwrLZ4Xls8Hy2WD5bLB8Nlg+GyyfDZbPBstng+WzwfLZYPnssHx2WD47LJ8dls8Oy2eH5bPD8tlh+eywfHZYPgcsnwOWzwHL54Dlc8DyOWD5HLB8Dlg+ByyfA5bPCcvnhOVzwvI5YfmcsHxOWD4nLJ8Tls8Jy+eE5XPB8rlg+VywfC5YPhcsnwuWzwXL54Llc8HyuWD5PGH5PGH5PGH5PGH5PGH5PGH5PGH5PGH5PGH5PFn5PBZWPo+Flc9jYeXzWFj5PBZWPo+Flc9jYeXzWFj5PBZWPo8Fls8Dls8Dls8Dls8wPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPDpgfHDA/OGB+cMD84ID5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cEB84MD5gcHzA8OmB8cMD84YH5wwPzggPnBAfODA+YHB8wPCswPCswPCswPCswPysLKZ4H5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYH5QYX5QYX5QYX5QYX5QV1Y+awwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP6gwP2gwP2gwP2gwP2gwP2gLK58N5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcN5gcd5gcd5gcd5gcd5gd9YeWzw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygw/ygH+0HZVG97HlZi3hTz62Ncy7XrUuW6+aj/Mb2MWX+3DymvVnsz7VGo7Vmo7VWo7XOPms92oJ+6Vo51/EbG3vaZWOv+brSOX9Wz7nqf6Z6To/wmeoNfJasS63rrud6d37jLBH1qsveNUb+bvsf6yV3LI9YL7lrecR6yZ3LI9bL7l6WadetdbEb9X+rjqT0epUujz9epe1bdSQbax2N1iqN1qqN1mrfaq3XzWOOd58g7FvdydlY67e6k7Ox1m91J2djrd/qTs7GWr9X33R3rf69+qb7a/1efdP9tX6vvun+Wr9X33R/rdZorY36Jm/UN3mjvskb9U3eqG+KRn1TNOqbolHfFI36pqOns3zpWhv1TdGob4pGfVM06puiUd+UjfqmbNQ3ZaO+KRv1TUdPTfrStTbqm7JR35SN+qZs1Ddlo76pGvVN1ahvqkZ9UzXqm46eZvala23UN1Wjvqka9U3VqG+qRn3TbNQ3zUZ902zUN81GfdPRUwa/dK2N+qbZqG+ajfqm2ahvmn36plj69E2x9OmbYunTN8XSp2+KxRqttU/fFEufvimWPn1TLH36plga9U2jUd80GvVNo1HfNBr1TUdP5f3StTbqm0ajvmk06ptGo75pNOqbpFHfJI36JmnUN0mjvunoadlfutZGfdP3msS9sdZGfdP3msS9sdZGfdP3msS9sdZGfZM26pu0Ud+Engm+91ob9U3oWeB7r7VR3wSfAb7vWhv1Td9sXvj9tTbqm77ZvPD7a23UNzWaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDSaFx6N5oVHo3nh0WheeDaaF56N5oVno3nh2WheeC7WaK19+qZsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwrPRvPBsNC88G80Lz0bzwvN7zQufMq9rtfdr/VZ908Zaj+6bNPyyZxvj/lqHx6zLrn2O+bu1vtRfh88A37v+ga5/er7WX3ajfjl5/Xry+u3k9Tu5/iiVy66jQjevoXrN2vL4Q9bW4XOyv3Kt2Wit1Wit6H5h37UOdG/xy2u919/XQPchO68V3bPsvFZ0f7PzWq3RWr9X33R/rd+rb7q/1u/VN91f6/fqm+6v9Xv1TXfXKo36JmnUN0mjvkka9U2Hz8n+yrU26pukUd8kjfomadQ3SaO+SRv1Tdqob9JGfZM26psOn5P9lWtt1Ddpo75JG/VN2qhv0kZ9kzXqm6xR32SN+iZr1DcdPif7K9faqG+yRn2TNeqbrFHfZI36Jm/UN3mjvskb9U3eqG86fE72V661Ud/kjfomb9Q3eaO+yRv1TdGob4pGfVM06puiUd90+Jzsr1xro74pGvVN0ahvikZ9UzTqm7JR35SN+qZs1Ddlo77p8DnZX7nWRn1TNuqbslHflI36pmzUN1Wjvqka9U3VqG+qRn3T4XOyv3KtjfqmatQ3VaO+qRr1TdWob5qN+qbZqG+ajfqm2ahvOnxO9leutVHfNBv1TbNR3zQb9U3sOdm7rnWyZ2rvvNY+fdNkz+reea19+qa5WKO19umb5jebF35/rX36pvnN5oXfX2ujvqnRvPDZaF74bDQvfDaaFz4bzQufjeaFz0bzwmejeeGz0bzw2Whe+Gw0L3w2mhc+G80Ln43mhc9G88Jno3nhs9G88NloXvhsNC98NpoXPhvNC5+N5oXPRvPCZ6N54bPRvPDZaF74bDQvfDaaFz4bzQufjeaFz0bzwmejeeGz0bzw2Whe+Gw0L3w2mhc+G80Ln43mhc/vNS98vaV0Xau9X+u36pvur/XweeGL6mXPy8sC7651fdtdd73+s9TGWkW96rJ3jZG/2/7Hekez9Uqz9Wqz9Vqz9Xqz9Uaz9Waz9Vaz9c5e641m/dXRs8XXsv26gpS36/1Rj8DqUVg9Bqtnh+t7jsubdKTpRj0Zed24XovP+bOegNWTsHoKVs9k1bPHfORd6xmwegRWj8LqMVg9zrpe5NH5XMu1nvVG3Pvjk7B6ClbPZNVTC6weWP9csP65Ds7ndXfXe/OS4+2/1409u8vlS5T1vzPefz4qO3n9fvL64+T158nrL1ieTFY9R8+33KwHdj2asOvRhN3P2WPeYsS1nly27je+fl6QWuT+nqVcrhvXm7uNemtr9evX4hrL8rr1y8u823oudVniHMvWt+J/4k7mHtMcn0fytyMZzyO505HM55Hc6UjW80judCTn80jucSRz2WNG5/NI/nYkx/NI7nQk5XkkdzqS+jySOx1JI33mWutBfSey1sO+x7XedLneI5pj3vj3Zd/j2q6/Tl7/PHf9Yzl5/ePk9cvJ62d/x7Rdv528fvZ3TNv1B6sfOHqe5GY9qO+A1npQ3wHlIqjvgNZ6UN8BrfWgvgNa60F9B7TWc3D+3/9Ny1qPw+pB/WZsrQf1m7G1HtRvxtZ6UL8Zy0VRvxlb6xmwegRWj8LqMdb1QmH3rxSWzwrLZ4Xls8Ly2WD5bLD+2WD9s8HyeY/ZRLvWA+ufDZbPBstng93fMNj9DYfd33BYPjssnx12f8Nh+eywfHZYPjssnx3WPzusfw5Y/xyw+xsBu78RsP6ZNVNirQd2fyNg+RywfA5YPgcsnxOWzwnL54Tlc8Ly+fCZElv1wPrnhP1+I2G/30jY/Y2E3d8o2P0N1kyJtR7Y/Y2C3d8oWD4XLJ8L1j8XrH8uWP9csP55wvrnCeufJ6x/nrD+eY8ZC3teLybs/saE5fOE5fOE5fNk5fNYWPk8Flb/PBZW/zwWVj6PhdU/j4XVP4+Flc9jYeXzWFj3N8bCur8xBuv+xhiwfB6wfB6s+xtjwPJ5wPJ5wPJ5wPJ5sPrnMWD9s8D6Z2Hd3xjCur8xBNY/7+EH97xeCOv+xoD5wQHzgwPmBwfMDw6YHxwwPzhgfnDA/ODYww/uWg+sf1bW7zeGsn6/MRR2f0Nh9zcMdn8D5gcHzA8Og93fgPnBAfODA+YHB8wPDoP1zwbrnx3WPzusf3ZY/+yw/vnoZ6ZvXS8cdn8D5gcHzA8OmB8cMD84YH5wsJ5JvdYD659hfnDs4Qd3rQfWP8P84ID5wRGw+xsBu7+RsPsbCcvnhOVzwu5vwPzggPnBwXom9VoPLJ9Zz6Re64H1z6xnUq97gt3fKNj9jYL1z3v4wT2vFwW7vwHzgwPmBwfMDw6YHxwwPzhgfnDA/OCA+cGxhx/ctR5Y/zwP/v2G6PVxdmJjvL1e3NhzrCVfdh0Vr2u9/Ty7mDJ/bh7T3iz251qz0Vqr0Vpnm7XKsjRa62i0Vmm0Vm20Vmu0Vm+0VtbvXmVh/e5VYK5XYK5XYK5XYK5XYK5XYK5X9nC9u9bDuu8osOeCCuy5oAJ7LqjAngsqsOeCCuy5oAJ7LqjAngsqMNcrMNcrAstngeWzwPJZYPmssHxWWD4rLJ8Vls+w54IK7LmgAnO9AnO9AnO9AnO9AnO9AnO9AnO9AnO9YrB8Nlg+GyyfDZbPsOeCCuy5oAJ7LqjAngsqsOeCCuy5oAJzvQJzveKwfHZYPjssnx2WzwHLZ5jrFZjrlYDlM+y5oAJ7LqgELJ8Dls8w1ysw1ysw1ysw1ysw1ysw1ysJy+eE5TPsuaACey6owJ4LKrDnggrsuaACey6owJ4LKrDnggrM9QrM9UrB8rlg+VywfC5YPk9YPk9YPk9YPk9YPsOeCyqw54LKhOXzhOXzhOXzZOWzLqx8VthzQRX2XFBdWPmsCyufdWHls8L8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oML8oMH8oMH8oMH8oMH8oC2sfDaYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYHzSYH3SYH3SYH3SYH3SYH/SFlc8O84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MO84MB84MB84MB84MB84OxsPI5YH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYH4wYX4wYX4wYX4wYX4wF1Y+J8wPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPJswPFswPFswPFswPFswP1sLK54L5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wYL5wQnzgxPmByfMD06YH5wLK58nzA9OmB+cMD84YX5wwvzghPnBCfODE+YHJ8wPTpgfnDA/OGF+cML84IT5wQnzgxPmByfMD06YH5wwPzhhfnDC/OA82g/KonrZ87IW8aaeWxuvDeN165Lluvkov7F9TJk/N49pbxb7c63ZaK3VaK2zz1qP9ppfutbRaK3SaK3aaK3WaK3eaK3kvmlt+uq662mzNtYq6lWXvWuM/N32P9ZL7p0esV5y//SI9ZJ7qAes18h91CPWS+6lHrHeHfqpHJcXGWm68Tk7I68b1+vByfmzHoXVY7B6/OB6arneFymV9/UErJ6E1VOw989k1bOHC9+1ngGrB5bPDstnh+WzO6yegNUDy2cvWD2TVU8ssHoOzud1d37d88vuXuu5sWd3udw7Wf87432/HXLy+vXk9dvJ64ddXwJ2fYmE1VPo91vM6659jnnj/TbPXX8uJ69/h+tdxPWmUS5b96Ne389Si9zfs5TLdeN6czdKb22tHpdDo7G8+V7h5WXebT2XuixxjkX/4y/f6dpjQsDzSP52JPV5JHc6kvY8kjsdSX8eyZ2OZDyP5E5HMk/ee5y8d82T96518t612Pdqtutn36vZrl9Z9+72mHGyaz2w71IL9l1qwe7VF+xefcHu1U/Yvfo5YPUIrB5YPk9YPk9YPk9YPk9YPk9YPk9UPteyoPJ5rQeVz2s9qHxe60Hl81oPKp/XelD5vNaDyue1HlQ+r/Wg8nmtB5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPA5bPAstngeWzwPJZYPkssHwWWD4LLJ8Fls8Cy2eB5bPC8llh+aywfFZYPissnxWWzwrLZ4Xls8LyWWH5bLB8Nlg+GyyfDZbPBstnloVf64HlM8vCr/XA8tlg+eywfHZYPjssnx2Wzw7LZ4fls8PymWXh1/8jLJ9ZFr4WloVf64Hlc8DyOWD5HLB8Dlg+ByyfA5bPAcvngOVzwvI5YfmcsHxOWD4nLJ8Tls8Jy+eE5XPC8jlh+VywfC5YPhcsn1l+cK0Hls8sP7jWA8tnlh9c64HlM8sP1sLyg2s9sHxm+cG1Hlg+s/zgWg8sn1l+cK0Hls8sP7jWw8rnAfODA+YHB8wPDpgfHAsrnwfMD46jn5Eueh1PJTbezHu5+eyPWEu+7DoqXtf6iecyrWvNRmutRmudfdZ69DPpv3Sto9FaUc9qXutBPat5rcdg9aCe1bzWE7B6ElZPweqZrHpkgdUzYPXA8llg+SywfBZYPgssnwWWzwLLZ4Hls8LyWWH5rLB8Vlg+KyyfFZbPCstnheWzwvJZYflssHw2WD4bLJ8Nls8Gy2eD5bPB8tlg+WywfDZYPjssnx2Wzw7LZ4fls8Py2WH57LB8dlg+OyyfHZbPAcvngOVzwPI5YPkcsHwOWD4HLJ8Dls8By+eA5XPC8jlh+ZywfE5YPicsnxOWzwnL54Tlc8LyOWH5XLB8Llg+FyyfC5bPBcvnguVzwfK5YPlcsHwuWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PWD5PVj7LwspnWVj5LAsrn2Vh5bMsrHyWhZXPsrDyWRZWPsvCymdZYPk8YPk8YPkM84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MC84MK84MK84MK84MK84O6sPJZYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX5QYX7QYH7QYH7QYH7QYH7QFlY+G8wPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPGswPOswPOswPOswPOswP+sLKZ4f5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5QYf5wYD5wYD5wYD5wYD5wVhY+RwwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxgwPxhH+0FZVC97XtYi3tRza+Ocy3XrkuW6+Si/sX1MmT83j2lvFvtzrd5ordFordlordVorbPPWkHO9MbGnnbZeP2G53Wlc/6snnPV/0z1nB7hM9Ur+CxZl1rXXU+btXGWiK7faF72ruunkd9t/2O91my95K7lEesldy6PWC+7e1mmXbfWxW7U/606ktLrVbo83l2lv1VHcn+tR8vqL13raLRWabRWcm/062u9bh5zvPsEcbRk/9K1fqs7ORtr/VZ3cjbW+q3u5Gys9Xv1TffX+r36prtr9e/VN91f6/fqm+6v9Xv1TffX2qhvOnrCxJeutVHf5I36Jm/UN3mjvskb9U3RqG+KRn1TNOqbolHfdPTkly9da6O+KRr1TdGob4pGfVM06puyUd+UjfqmbNQ3ZaO+6eiJTF+61kZ9Uzbqm7JR35SN+qZs1DdVo76pGvVN1ahvqkZ909GT0r50rY36pmrUN1Wjvqka9U3VqG+ajfqm2ahvmo36ptmobzp6guGXrrVR3zQb9U2zUd80G/VNs0/flEufvimXPn1TLn36plz69E25WKO19umbcunTN+XSp2/KpU/flEujvmk06ptGo75pNOqbRqO+6eiJv1+61kZ902jUN41GfdNo1DeNRn2TNOqbpFHfJI36JmnUN32vSdwba23UN32vSdwba23UN32vSdwba23UN2mjvkkb9U3aqG9CzwTfe63WaK2N+ib0HPC919qob/pm88Lvr7VR3/TN5oXfX2ujvumbzQu/v9ZGfVOjeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhVejeeHVaF54NZoXXo3mhddijdbap2+qRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Go0L7wazQuvRvPCq9G88Dp8XriGX/ZsY9xf6/CYddm1zzF/t9Yf9efJ6y90/dPztf6yG/XPU9c/D5+/vXf94+T1C7n+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qLDnDyrMDyrMD6rD8tlh+eywfHZYPjssn2F+UGF+UB2Wz7DnDyrs+YMasHwOWD7D/KDC/KDC/KDC/KDC/KDC/KAGLJ8Tls+w5w8q7PmDCnv+oMKeP6iw5w8q7PmDCnv+oMKeP6gwP6gwP6gFy+eC5XPB8rlg+VywfC5YPhcsnwuWz7DnDyrs+YMK84MK84MK84MK84MK84MK84MK84MK84MK84MG84MG84MG84MG84O2sPLZYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYH7QYX7QYX7QYX7QYX7QF1Y+O8wPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPOswPBswPBswPBswPBswPxsLK54D5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5wYD5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oBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4mA9QfqlINjz7wbrGdIvBRmtINjz7wbrMdIvBcGefzdYD5J+KQj2/LvBepT0S0G0pGY9TPqlIFpSsx4n/VIQLalZD5R+KYiW1KxHSr8UBEtqoT1TWmjPlBbaM6WF9kxpWWBJLbRnSgvtmdJCe6a00J4pLbRnSgvtmdIyaEk9aEk9aEk9aEk9aEk9aEk9aEk9aEk9aEkttKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVLappRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1AWW1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbAktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFo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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"consumer","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"},"error_types":{}},"bytecode":"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","debug_symbols":"5Z3dbiTHkYXfZa51kZEZ+edXWSwM2ZaNAQTJsOQFFobefXvY7OoedTNjWaphf5F5I3GkSvJ8nOpzorIqov7z6W8//OXf//jz55/+/vMvn/70X//59OPPf/3+188//3T6039+++7TX/71+ccfP//jz7f/+VP48g8JL8f/8s/vf/ryx19+/f5fv376k9So33364ae/ffky6ek7/P3zjz98+lOV3767O7j29HpsE9kOldYeHJtjfj0253A9Npff/vu7TyJ/WEvTy7GtFEOLpv56rJZ2pyX+cS1dXo/tIRtaSrj8Xkosd1rSH9bS44W1a7S0tPB6bA33f0f6Ti1f1uQda8qONXXHmrZjTX//mhh2rJEda+KONWnHmh3nQdxxHsSH50GqevlspVrr+NxPefsBKdebT2J6+Emp2+nfa7/KkRBf9FSYngbT01l6UoDpEZieCNOTYHoUpifD9MD8OcH8OcH8OcH8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6sMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH/OMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH8uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH+uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH9uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH/uMH+WADNoCTCHPv2LJgjm0RJgJi0B5tISYDYtAebTEmBGLYHm1EJzaqE5tdCcWmhOLTSnFppTC82phebUQnNqoTl1pDl1pDl1pDl1pDl1pDl1pDk1rbVQaL2FQmsuFFp3odDaC4XWXyi0BkOhdRgKrcVQaD2GQmsyFFqXodDaDIXWZyi0RkOhdRoKrdVQaL2GQms2FFq3odDaDYXWbyi0hkOhdRwKreVQaD2HQms6FFrXodDaDoXWdyi0xkOhdR4KrfVQaL2HQms+FFr3odDaD4XWfyi0BkShdSAKrQVRaD2IQmtCFFoXotDaEIXWhyi0RkShdSIKrRVRaL2IQmtGFFo3otDaEYXWjyi0hkShdSQKrSVRaD2JQmtKFFpXotDaEoXWlyi0xkShdSYKrTVRaL2JQmtOFFp3otDaE4XWnyi0BkX5+A7Fru31aAl6+4qVk6L7w2PVi/7Tl9ej61l9c62+O1YfP75V8lD14lp9dK0+sdVrLtu7lLreeGbuj6SkcHljVCpdvjr6hVaXos1L0ZalaOG1wsG08NriYFp4LXIsrcBrl4Np4bXOwbTw2uhg2qVqqY9v2H4q7VK1lCxVS8lStZQsVUvJUrVUXKqWikvVUnGpWiouVUt9/EiFp9IuVUvFpWqpuFQtFZeqpeJStVRaqpZKS9VSaalaKi1VS3380JOn0i5VS6Wlaqm0VC2Vlqql0lK1lC5VS+lStZQuVUvpUrXUx48leirtUrWULlVL6VK1lC5VS+lStVReqpbKS9VSealaKi9VS3384LCn0i5VS+Wlaqm8VC2Vl6ql8lK1VKHXUr2Ujfb2m1/006sjSz+93rH00yuYW/0t3utX5/rpVYalH1435JAu+nPQB+c/vBIw9cOz3dJf8b//opv+B/nb4PmbW4oX/S2Xe/3w/DX1w/PX1A/PX1P/R+fvSXTSK0D+GuBFUuZJKjxJlSep8SR1nKQPH631/5AkPEmRJynxJPHcu/Pcu/Pcu/Pcu/Pcu+PcOwWce6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p8Bzb+G5t/DcW3juLTz3Fp57C8+9hefewnNv4bm38Nw78tw78tw78tw78tw78tw78tw78tw78tw78tw78tw78dw78dw78dw78dw78dw78dw78dw78dw78dw78dxbee6tPPdWnnsrz72V597Kc2/lubfy3Ft57q0898489848984898489848984898489848984898489y489y489y489y489y489y489y489y489y489y48964896489648964896489648964896489648964892489248924892489+b1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq9l4vVaJl6vZeL1WiZer2Xi9VomXq+l8notlddrqbxeS+X1WmrAubfyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei2V12upvF5L5fVaKq/XUnm9lsrrtVRer6Xyei31Gc1o29s6Tl+3ci/p4//icrpKytrvJVWepKNjtxuSUtzmtqfYwvVbn+V0lJzD26v+oBz5aDkp5cvRKacbOffHnnYp6uux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","brillig_names":["lookup_validity"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"error_types":{"12265343917440897559":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"H4sIAAAAAAAA/+19B5gUxfP23u0tOWckeGLGtLPhbpecc8aACuju3h6gJOFAUDCgKBgQFBQwYc4BTGDOOaefOeecc/iqoFuaZjhgr2p26vn+8zzF9Q4zPW9V19Tb7+zsTEFgw/JhKBDYvfqGdgFYUP0tBCu21um/Zruay3Z1XNbVc1nXwGVdI5d1zcG6Wet2dNmu2GXdTi7r2rms202tM5cC9beb+hsNl8Ri2dJI1ok6qXAkmU7Ew7F4uiThJJx4Il4WSUSj2UQsUZpMJ0vDSScWzTrl8WS0PLxh6Ve4sa9wlZZIhhNnfzKc4TAnzgG544zYKxBbM7AiAyuO1z+qvXtgY7u/sX6Aauv9BsLnQWCDwYYUblyvl0IrBuGqLc5uhPEcSjfujnluYb/FVhwKiONQRBiHAGPODqOrAVlOnMNzxxm3V7idW8OMcwgX3W5jtIdb59YI+DwSbH+wA1zOrSBxTrUl7GtEId3YHMhUn6njtzthXyMJ43cQYfzccvtAI7cPMtr7G+0DrNweBZ8PBjsE7FCV2yGjzy0t3YjiW93oc7QiqTHq71j19zD193D1N6X+pgsDm06m0i4F3ya+qg5iAaHzh3k04QlXbXFShCdBKLBxMm8v1LhHE8a30MCZUR/KCi0HqCvZaMLAZ7a9r8xW+nLKCAPrZUKMYUqIrPpQzp0QYwgTIkuYEOVCE2IsU0KMUx/GcyfEWMKEGEeYEOOJ5zq1Axuu7wSs+EXDsUhJtiSWymaj4Wwymcg40Uwik81mylLRVGlpIlxals6myuKRdCZSHk2Xh7OpbCLupGPpUieccf6x+nPA33hJKlySKC8JR8ORaCQWziRL0rGyVDxWGispge6i6USp42TiESdTGktEnEjKiacz4Wgsmyr5h3Z8w3bCRxKReKY0mcmUpOKZdDqbLS8tK0klyp10ScqJpKMAJhWNJmKxcCpbnk3HoskSJ5bIJGCESjPhWHIzf2Foy8sc9C5dGi6JlJWk4zjw2WhJOhkujZZE4+HykvJ0KuxEIolMDFyOhJPJeDhZHi8NO1luf8PZsrSTjSSjmWgmm3TS5eBEFpqpVDxcFsnEY055KlkGCQi4wN1wNFuedjLlqUgmHY3GS8s38zcac8pKSuPlKRjdbCYbhQGH7IhmUtEYxCGadpLpkmyytCQSjpWUwroYhC8Sy8QgymXZaJzd3xjEOQqDBadaGM65skwikk2k4vFUMh4pi5WVR8KReEl5NgznWlkyloTVMCapcLg8nEqXO5vjSyUwMiXhsjD8Ux4vS8BpHEuWxRLlcOrEysKQHuF0MpEtK3VKU8l0PBpJlZdE4cyIR8OlSYfD3xqqL2xnDG1SZrSzRrvcaI8z2uNVmxAfub/Y3wTAeQTYkYUbtFVRwBtySxfS5ykuEwsZAWPn1P1OIiRJLr8nGTMFon5ZLyhOpkuuKCfOKbnjjNor3C66TDYK0uFGe4LRnmJddJkKn48CmwY2vZD/Yv1QwvyvoBv3TS7WV6hrNyHlvxcFchRDgTSvD82A/meCHQ02C2w22DFgx4LNAZsLdhzY8WAngJ0INg/sJLCTweaDnQJ2KtgCsIVgp4GdDnYG2Jlgi8DOAlsMtgTsbLBzwJaCLQM7F+w8sOVgK8BWgp0PdgHYhWAXgV0MtgrsErBLwS4DuxzsCrArwa4CuxrsGrBrwa4Dux7sBrAbwW4CuxlsNdgasFvAbi1UgxkyEppzMGcU8hTOACVOZ1OZeJv6cLvOeH024H/8Yq3DjWpYoKjl5AyCSpEtxyXs3EZYdW5nGlzqSkvp8x2b9AXbpiKxkmw8XJJNwHw9WYoCLJMqLy8rDccy6XA6HQPF6kTL06DQ0pEkHDaZjWec9bi8nHbewVBVcVlbyAh4LcO0cx1hMnD5vc4oR0T9umKlKADrCun7vZM4WXWxxn5rBrxlwJkCGfAu9eFumwHvcmHAuz1gwJmEDHgXYQG4WwgDUvp8j1AGvIeJAe8tZAR8LwMD3udzBkS/7xPCgHcrrNT93s/EgPfngQGPFsiAD6gPD9oM+IALAz7oAQMeTciADxAWgAeFMCClzw8JZcCHmBjw4UJGwA8zMOAjPmdA9PsRIQz4oMJK3e+jTAz4aB4YcJZABnxMfXjcZsDHXBjwcQ8YcBYhAz5GWAAeF8KAlD4/IZQBn2BiwCcLGQE/ycCAT/mcAdHvp4Qw4OMKK3W/TzMx4NN5YMDZAhnwGfXhWZsBn3FhwGc9YMDZhAz4DGEBeFYIA1L6/JxQBnyOiQGfL2QE/DwDA77gcwZEv18QwoDPKqzU/b7IxIAv5oEBjxHIgC+pDy/bDPiSCwO+7AEDHkPIgC8RFoCXhTAgpc+vCGXAV5gY8NVCRsCvMjDg/3zOgOj3/4Qw4MsKK3W/rzEx4Gt5YMBjBTLg6+rDGzYDvu7CgG94wIDHEjLg64QF4A0hDEjp85tCGfBNJgZ8q5AR8FsMDPi2zxkQ/X5bCAO+obBS9/sOEwO+kwcGnCOQAd9VH96zGfBdFwZ8zwMGnEPIgO8SFoD3hDAgpc/vC2XA95kY8INCRsAfMDDghz5nQPT7QyEM+J7CSt3vR0wM+FEeGHCuQAb8WH34xGbAj10Y8BMPGHAuIQN+TFgAPhHCgJQ+fyqUAT9lYsDPChkBf8bAgJ/7nAHR78+FMOAnCit1v18wMeAXeWDA4wQy4Jfqw1c2A37pwoBfecCAxxEy4JeEBeArIQxI6fPXQhnwayYG/KaQEfA3DAz4rc8ZEP3+VggDfqWwUvf7HRMDfpcHBjxeIAN+rz78YDPg9y4M+IMHDHg8IQN+T1gAfhDCgJQ+/yiUAX9kYsCfChkB/8TAgD/7nAHR75+FMOAPCit1v78wMeAveWDAEwQy4K/qw282A/7qwoC/ecCAJxAy4K+EBeA3IQxI6fPvQhnwdyYG/KOQEfAfDAz4p88ZEP3+UwgD/qawUvf7FxMD/pUHBjxRIAP+rT78YzPg3y4M+I8HDHgiIQP+TVgA/hHCgJQ+/yuUAf9lYsD/kp0DMHZO3W9B0N8MiH4XBDfGl6hfFgb8R2Gl7rcwyMOA2K/XDDhPIAMGVf4V2S+Bxv+wGRA34mbAeYQMGCQsAEVBGQxI6XMoKJMBQ0EeBqwWZARcjYEBq/ucAdHv6kIYsEhhpe63BhMD1sgDA54kkAFrqvyrZTNgTRcGrOUBA55EyIA1CQtALSEMSOlzbaEMWJuJAesEGQHXYWDAuj5nQPS7rhAGrKWwUvdbj4kB6+WBAU8WyID1Vf41sBmwvgsDNvCAAU8mZMD6hAWggRAGpPS5oVAGbMjEgI2CjIAbMTBgY58zIPrdWAgDNlBYqfttwsSATfLAgPMFMmBTlX/NbAZs6sKAzTxgwPmEDNiUsAA0E8KAlD43F8qAzZkYsEWQEXALBgZs6XMGRL9bCmHAZgordb87MDHgDnlgwFMEMmArlX+tbQZs5cKArT1gwFMIGbAVYQFoLYQBKX1uI5QB2zAxYNsgI+C2DAy4o88ZEP3eUQgDtlZYqfstZmLA4jww4KkCGXAnlX/tbAbcyYUB23nAgKcSMuBOhAWgnRAGpPR5Z6EMuDMTA+4SZAS8CwMD7upzBkS/dxXCgO0UVup+d2NiwN3ywIALBDLg7ir/9rAZcHcXBtzDAwZcQMiAuxMWgD2EMCClz3sKZcA9mRiwfZARcHsGBtzL5wyIfu8lhAH3UFip+92biQH3zgMDLhTIgPuo/NvXZsB9XBhwXw8YcCEhA+5DWAD2FcKAlD7vJ5QB92NiwHCQEXCYgQEdnzMg+u0IYcB9FVbqfiNMDBjJAwOeJpABoyr/YjYDRl0YMOYBA55GyIBRwgIQE8KAlD7HhTJgnIkBS4KMgEsYGLDU5wyIfpcKYcCYwkrdb4KJARN5YMDTBTJgUuVfB5sBky4M2MEDBjydkAGThAWggxAGpPS5o1AG7MjEgJ2CjIA7MTBgZ58zIPrdWQgDdlBYqfvtwsSAXfLAgGcIZMCuKv+62QzY1YUBu3nAgGcQMmBXwgLQTQgDUvrcXSgDdmdiwB5BRsA9GBiwp88ZEP3uKYQBuyms1P32YmLAXnlgwDMFMmBvlX99bAbs7cKAfTxgwDMJGbA3YQHoI4QBKX3uK5QB+zIxYL8gI+B+DAzY3+cMiH73F8KAfRRW6n4HMDHggDww4CKBDDhQ5d8gmwEHujDgIA8YcBEhAw4kLACDhDAgpc+DhTLgYCYGHBJkBDyEgQGH+pwB0e+hQhhwkMJK3e8wJgYclgcGPEsgAw5X+TfCZsDhLgw4wgMGPIuQAYcTFoARQhiQ0ueRQhlwJBMD7h9kBLw/AwMe4HMGRL8PEMKAIxRW6n4PZGLAA/PAgIsFMuBBKv9G2Qx4kAsDjvKAARcTMuBBhAVglBAGpPT5YKEMeDATAx4SZAR8CAMDHupzBkS/DxXCgKMUVup+RzMx4Og8MOASgQw4RuXfWJsBx7gw4FgPGHAJIQOOISwAY4UwIKXPhwllwMOYGPDwICPgwxkYMOVzBkS/U0IYcKzCSt1vmokB03lgwLMFMmBG5V+ZzYAZFwYs84ABzyZkwAxhASgTwoCUPmeFMmCWiQHLg4yAyxkYcJzPGRD9HieEAcsUVup+xzMx4Pg8MOA5Ahlwgsq/I2wGnODCgEd4wIDnEDLgBMICcIQQBqT0+UihDHgkEwNODDICnsjAgJN8zoDo9yQhDHiEwkrd72QmBpycBwZcKpABp6j8m2oz4BQXBpzqAQMuJWTAKYQFYKoQBqT0+SihDHgUEwNOCzICnsbAgNN9zoDo93QhDDhVYaXut4KJASvywIDLBDLgDJV/M20GnOHCgDM9YMBlhAw4g7AAzBTCgJQ+Hy2UAY9mYsBZQUbAsxgYcLbPGRD9ni2EAWcqrNT9HsPEgMfkgQHPFciAx6r8m2Mz4LEuDDjHAwY8l5ABjyUsAHOEMCClz3OFMuBcJgY8LsgI+DgGBjze5wyIfh8vhAHnKKzU/Z7AxIAn5IEBzxPIgCeq/JtnM+CJLgw4zwMGPI+QAU8kLADzhDAgpc8nCWXAk5gY8OQgI+CTGRhwvs8ZEP2eL4QB5yms1P2ewsSAp+SBAZcLZMBTVf4tsBnwVBcGXOABAy4nZMBTCQvAAiEMSOnzQqEMuJCJAU8LMgI+jYEBT/c5A6LfpwthwAUKK3W/ZzAx4Bl5YMAVAhnwTJV/i2wGPNOFARd5wIArCBnwTMICsEgIA1L6fJZQBjyLiQEXBxkBL2ZgwCU+Z0D0e4kQBlyksFL3ezYTA56dBwZcKZABz1H5t9RmwHNcGHCpBwy4kpABzyEsAEuFMCClz8uEMuAyJgY8N8gI+FwGBjzP5wyIfp8nhAGXKqzU/S5nYsDleWDA8wUy4AqVfyttBlzhwoArPWDA8wkZcAVhAVgphAEpfT5fKAOez8SAFwQZAV/AwIAX+pwB0e8LhTDgSoWVut+LmBjwojww4AUCGfBilX+rbAa82IUBV3nAgBcQMuDFhAVglRAGpPT5EqEMeAkTA14aZAR8KQMDXuZzBkS/LxPCgKsUVup+L2diwMvzwIAXCmTAK1T+XWkz4BUuDHilBwx4ISEDXkFYAK4UwoCUPl8llAGvYmLAq4OMgK9mYMBrfM6A6Pc1QhjwSoWVut9rmRjw2jww4EUCGfA6lX/X2wx4nQsDXu8BA15EyIDXERaA64UwIKXPNwhlwBuYGPDGICPgGxkY8CafMyD6fZMQBrxeYaXu92YmBrw5Dwx4sUAGXK3yb43NgKtdGHCNBwx4MSEDriYsAGuEMCClz7cIZcBbmBjw1iAj4FsZGPA2nzMg+n2bEAZco7BS93s7EwPengcGXCWQAe9Q+bfWZsA7XBhwrQcMuIqQAe8gLABrhTAgpc/rhDLgOiYGvDPICPhOBga8y+cMiH7fJYQB1yqs1P3ezcSAd+eBAS8RyID3qPy712bAe1wY8F4PGPASQga8h7AA3CuEASl9vk8oA97HxID3BxkB38/AgA/4nAHR7weEMOC9Cit1vw8yMeCDeWDASwUy4EMq/x62GfAhFwZ82AMGvJSQAR8iLAAPC2FASp8fEcqAjzAx4KNBRsCPMjDgYz5nQPT7MSEM+LDCSt3v40wM+HgeGPAygQz4hMq/J20GfMKFAZ/0gAEvI2TAJwgLwJNCGJDS56eEMuBTTAz4dJAR8NMMDPiMzxkQ/X5GCAM+qbBS9/ssEwM+mwcGvFwgAz6n8u95mwGfc2HA5z1gwMsJGfA5wgLwvBAGpPT5BaEM+AITA74YZAT8IgMDvuRzBkS/XxLCgM8rrNT9vszEgC/ngQGvEMiAr6j8e9VmwFdcGPBVDxjwCkIGfIWwALwqhAEpff6fUAb8HxMDvhZkBPwaAwO+7nMGRL9fF8KAryqs1P2+wcSAb+SBAa8UyIBvqvx7y2bAN10Y8C0PGPBKQgZ8k7AAvCWEASl9flsoA77NxIDvBBkBv8PAgO/6nAHR73eFMOBbCit1v+8xMeB7eWDAqwQy4Psq/z6wGfB9Fwb8wAMGvIqQAd8nLAAfCGFASp8/FMqAHzIx4EdBRsAfMTDgxz5nQPT7YyEM+IHCSt3vJ0wM+EkeGPBqgQz4qcq/z2wG/NSFAT/zgAGvJmTATwkLwGdCGJDS58+FMuDnTAz4RZAR8BcMDPilzxkQ/f5SCAN+prBS9/sVEwN+lQcGvEYgA36t8u8bmwG/dmHAbzxgwGsIGfBrwgLwjRAGpPT5W6EM+C0TA34XZAT8HQMDfu9zBkS/vxfCgN8orNT9/sDEgD/kgQGvFciAP6r8+8lmwB9dGPAnDxjwWkIG/JGwAPwkhAEpff5ZKAP+zMSAvwQZAf/CwIC/+pwB0e9fhTDgTwordb+/MTHgb3lgwOsEMuDvKv/+sBnwdxcG/MMDBryOkAF/JywAfwhhQEqf/xTKgH8yMeBfQUbAfzEw4N8+Z0D0+28hDPiHwkrd7z9MDPhPHhjweoEM+K/OP12ddAD/dWFA3IibAa8nZMB/KQtAkQwGpPS5oEgmAxYU8TBgYREjYOycut9gkb8ZEP0OFm0MMFG/LAwYUFip+y0q4mFA7NdrBrxBIAOGVP5VsxkQ/8NmwGoeMOANhAwYIiwA1YQwIKXP1YUyYHUmBqxRxAi4BgMD1vQ5A6LfNYUwYDWFlbrfWkwMWCsPDHijQAasrfKvjs2AtV0YsI4HDHgjIQPWJiwAdYQwIKXPdYUyYF0mBqxXxAi4HgMD1vc5A6Lf9YUwYB2FlbrfBkwM2CAPDHiTQAZsqPKvkc2ADV0YsJEHDHgTIQM2JCwAjYQwIKXPjYUyYGMmBmxSxAi4CQMDNvU5A6LfTYUwYCOFlbrfZkwM2CwPDHizQAZsrvKvhc2AzV0YsIUHDHgzIQM2JywALYQwIKXPLYUyYEsmBtyhiBHwDgwM2MrnDIh+txLCgC0UVup+WzMxYOs8MOBqgQzYRuVfW5sB27gwYFsPGHA1IQO2ISwAbYUwIKXPOwplwB2ZGLC4iBFwMQMD7uRzBkS/dxLCgG0VVup+2zExYLs8MOAagQy4s8q/XWwG3NmFAXfxgAHXEDLgzoQFYBchDEjp865CGXBXJgbcrYgR8G4MDLi7zxkQ/d5dCAPuorBS97sHEwPukQcGvEUgA+6p8q+9zYB7ujBgew8Y8BZCBtyTsAC0F8KAlD7vJZQB92JiwL2LGAHvzcCA+/icAdHvfYQwYHuFlbrffZkYcN88MOCtAhlwP5V/YZsB93NhwLAHDHgrIQPuR1gAwkIYkNJnRygDOkwMGCliBBxhYMCozxkQ/Y4KYcCwwkrdb4yJAWOKAW3mox7DUYSsV6z6iQP2ErBSsARYEqwDWEewTmCdwbqAdcXYgXUH6wHWE6wXWG+wPmB9wfqB9QcbADYQbBDYYLAhYEPBhoENBxsBNhJsf1WlzFjGFfGZ60pc1pW6rEu4rEu6rOvgsq6jy7pOLus6u6zr4rKuq8u6bi7rurus6+GyrqfLul4u63q7rOvjsq6vy7p+Luv6u6wb4LJuoMu6QS7rBrusG+KybqjLumEu64a7rBvhsm6ky7r9XSZZukR2U3/DVVs2OWerWr/iRXQTthJCvnowxDNhs8eiKj7jWJSSxG/DuCaq3ldExc9JEo7FQ34ei9h/OJ0OVfM5bPjsdKxKX5FN4ud0IhyLh/05FmELp9M5R59Lyjfz2emSW18Jl/g5XQnH4hG/jUXCFafTbft9Lt2Cz0737e2rdIvxc3oQjsWj/hmLSCU4nZ7b43NppT47vba9r8xW4uf0JhyLx/wwFqVbxen02Tafw9vgs9N3W/oKb1P8nH6EY/F4fscivo04nf5b8zm2zT47AyrtK1a+HfFzBhKOxRP5GovS7cLpDNqyz4nt9NkZvIW+kuXbHT9nCOFYPOn9WIRzwOkMdfM5nJPPzrDN+3JyjJ8znHAsnvJyLMpyxumM2NTnaBV8dkYafUXKqxQ/Z3/CsXjao7EIV21xCK8POIT61jH1WVXH4hkhY0GogxzCebzzGOFYPCtkLAjnew7hfMV5knAsnhMyFoS85hDWZecZwrF4nmksqG9MIDx/HcL8c7jiZ9+YUNVxppxjHED2nWk07OWNCXS4N70x4cAiRsAHMtyYcJDPb0xAvw8q2hhgon7DXt6Otj9ZspV5djvaKBXzg/UZqb8VHaWS0Fx3cBH/7WgUVUt/uzmKMOkPJh5cjhN8VBH93TKjimSw3UjCsT6EzOeSmJdsdwgT2x1axAj4UAa2G+1ztkO/Rwtnu5FkyZbMuMBlYbsxKuZjbbYb48J2Yz1gu5GEbDeGMOnHMg0uddWn9PkwuurpBAL0THyQKhqFxDlIKQ0OJ54tUBctHOPDGWZJfvdb5w613ykhs0PKHE8z14lw1RYHxyTNUCcOJ4xhRsD5kmE4X8qIZ+h6rlJmYOWKBXU+pQnzKcsU12zR5sqNujaNIIxDOVkcYlkvlWs58fjpZVwRI+BxDMp1vM+VK/o9XrhyHUGWbOmIC1wW5TpBxfwIW7lOcFGuR3igXCmqllauEwiT/gimwaWu+pQ+H+nzGWlWFY0gcQyzhDGkLLwTfT4emC8TGWa3hH6z/KJY5yH1TJYydyb5XBlhDCcxxHAiYQwnC7kqQVm/pvi85uCYTGGoOVOZlN9URkWtY0F9DlHm01FMcT3KA0VNeaf7NLI4lEa8VNTTiMdPL9OLGAFPZ1DUFT5X1Oh3hXBFPZws2RJZF7gsinqGivlMW1HPcFHUMz1Q1BRVSyvqGYRJP5NpcKmrPqXPR/t8NnWUKhrUivoowhhSFt5ZPh8PzJdZDLNbQr9ZFLXOQ+qZLGXuzPa5osYYzmaI4SzCGB4jRFFT1q9jfV5zcEyOZag5c5iU3xxGRa1jQX0OUebTXKa4zvVAUQ8jjMNxZHHIevqQ0+OIx08vxxcxAj6eQVGf4HNFjX6fIFxRDyNLNqfcBS6Loj5RxXyerahPdFHU8zxQ1BRVSyvqEwmTfh7T4FJXfUqfT/L5bGquKhrUinouYQwpC+/JPh8PzJeTGWa3hH6zKGqdh9QzWcrcme9zRY0xnM8Qw5MJY3iKEEVNWb9O9XnNwTE5laHmLGBSfgsYFbWOBfU5RJlPC5niutADRT2UMA6nkcUh6qmiPo14/PRyehEj4NMZFPUZPlfU6PcZwhX1ULJky3imqM9UMV9kK+ozXRT1Ig8UNUXV0or6TMKkX8Q0uNRVn9Lns3w+m1qoiga1ol5IGEPKwrvY5+OB+bKYYXZL6DeLotZ5SD2TpcydJT5X1BjDJQwxXEwYw7OFKGrK+nWOz2sOjsk5DDVnKZPyW8qoqHUsqM8hynxaxhTXZR4oaspnzZ9LFoeUp8+7PJd4/PRyXhEj4PMYFPVynytq9Hu5cEU9hCzZSjx73uUKFfOVtqJe4aKoV3qgqCmqllbUKwiTfiXT4FJXfUqfz/f5bGqZKhrUinoZYQwpC+8FPh8PzJcLGGa3hH6zKGqdh9QzWcrcudDnihpjeCFDDC8gjOFFQhQ1Zf262Oc1B8fkYoaas4pJ+a1iVNQ6FtTnEGU+XcIU10s8UNSDCeNwKVkcIkkvFfWlxOOnl8uKGAFfxqCoL/e5oka/LxeuqAeTJVtZqQtcFkV9hYr5lbaivsJFUV/pgaKmqFpaUV9BmPRXMg0uddWn9Pkqn8+mLlFFg1pRX0IYQ8rCe7XPxwPz5WqG2S2h3yyKWuch9UyWMneu8bmixhhewxDDqwljeK0QRU1Zv67zec3BMbmOoeZcz6T8rmdU1DoW1OcQZT7dwBTXGzxQ1IMI43AjWRzSCS8V9Y3E46eXm4oYAd/EoKhv9rmiRr9vFq6oB5ElWyzhApdFUa9WMV9jK+rVLop6jQeKmqJqaUW9mjDp1zANLnXVp/T5Fp/Ppm5QRYNaUd9AGEPKwnurz8cD8+VWhtktod8silrnIfVMljJ3bvO5osYY3sYQw1sJY3i7EEVNWb/u8HnNwTG5g6HmrGVSfmsZFbWOBfU5RJlP65jius4DRT2QMA53ksUh7uld33cSj59e7ipiBHwXg6K+2+eKGv2+W7iiHkh32cmzu77vUTG/11bU97go6ns9UNQUVUsr6nsIk/5epsGlrvqUPt/n89nUOlU0qBX1OsIYUhbe+30+Hpgv9zPMbgn9ZlHUOg+pZ7KUufOAzxU1xvABhhjeTxjDB4Uoasr69ZDPaw6OyUMMNedhJuX3MKOi1rGgPoco8+kRprg+4oGiHkAYh0fpvqGJe6moHyUeP708VsQI+DEGRf24zxU1+v24cEU9gE50pV3gsijqJ1TMn7QV9RMuivpJDxQ1RdXSivoJwqR/kmlwqas+pc9P+Xw29YgqGtSK+hHCGFIW3qd9Ph6YL08zzG4J/WZR1DoPqWeylLnzjM8VNcbwGYYYPk0Yw2eFKGrK+vWcz2sOjslzDDXneSbl9zyjotaxoD6HKPPpBaa4vuCBou5PGIcX6eaTJV4q6heJx08vLxUxAn6JQVG/7HNFjX6/LFxR96e77JRygcuiqF9RMX/VVtSvuCjqVz1Q1BRVSyvqVwiT/lWmwaWu+pQ+/8/ns6kXVNGgVtQvEMaQsvC+5vPxwHx5jWF2S+g3i6LWeUg9k6XMndd9rqgxhq8zxPA1whi+IURRU9avN31ec3BM3mSoOW8xKb+3GBW1jgX1OUSZT28zxfVtDxR1P8I4vEMWh4Snb896h3j89PJuESPgdxkU9Xs+V9To93vCFXU/smQr9eztWe+rmH9gK+r3XRT1Bx4oaoqqpRX1+4RJ/wHT4FJXfUqfP/T5bOptVTSoFfXbhDGkLLwf+Xw8MF8+YpjdEvrNoqh1HlLPZClz52OfK2qM4ccMMfyIMIafCFHUlPXrU5/XHByTTxlqzmdMyu8zRkWtY0F9DlHm0+dMcf3cA0XdlzAOXwhV1F8Qj59evixiBPwlg6L+yueKGv3+Srii7itQUX+tYv6Nrai/dlHU33igqCmqllbUXxMm/TdCFDWlz9/6fDb1uSoa1Ir6c8IYUhbe73w+Hpgv3zHMbgn9ZlHUOg+pZ7KUufO9zxU1xvB7hhh+RxjDH4Qoasr69aPPaw6OyY8MNecnJuX3E6Oi1rGgPoco8+lnprj+7IGi7kMYh1/I4hD39FnfvxCPn15+LWIE/CuDov7N54oa/f5NuKLuQ5ZsKc+e9f27ivkftqL+3UVR/+GBoqaoWlpR/06Y9H8wDS511af0+U+fz6Z+VkWDWlH/TBhDysL7l8/HA/PlL4bZLaHfLIpa5yH1TJYyd/72uaLGGP7NEMO/CGP4jxBFTVm//vV5zcEx+Zeh5uCskWqszTkU9sulqHUsqM8hynwqYIprQYhfUfcmjEMhWRziZV4q6kLi8dNLMMQIOBii77co5G9FjX4XhTYGmKhfTxV1bzrRFXWBy6KoQyrm1UKBTdVzKLS5osaNuBV1b0JFHSJM+mohnsGlrvqUPlcP+Xs2VaCKBrWiLiCMIWXhreHz8cB8qRGin90S+s2iqHUeUs9kKXOnJnMMw1Vb1p/LNRliWIMwhrWIY6gXag6grF+1fV5zcExqM9ScOkzKrw6jotaxoD6HKPOpLlNc63qgqHsRKup6ZHGIePoddT3i8dNL/RAj4PoMirqBzxU1+t1AuKLuRaaoyzz7jrqhinkjW1E3dFHUjTxQ1L0IFXVDwqRvFOIZXOqqT+lzY5/PpuqqokGtqOsSxpCy8Dbx+XhgvjRhmN0S+s2iqHUeUs9kKXOnqc8VNcawKUMMmxDGsJkQRU1Zv5r7vObgmDRnqDktmJRfC0ZFrWNBfQ5R5lNLpri29EBR9yRU1DuQxSEa9VJR70A8fnppFWIE3IpBUbf2uaJGv1sLV9Q9yRR1pswFLouibqNi3tZW1G1cFHVbDxR1T0JF3YYw6duGeAaXuupT+ryjz2dTLVXRoFbULQljSFl4i30+HpgvxQyzW0K/WRS1zkPqmSxl7uzkc0WNMdyJIYbFhDFsJ0RRU9avnX1ec3BMdmaoObswKb9dGBW1jgX1OUSZT7syxXVXDxR1D0JFvRtZHLKefke9G/H46WX3ECPg3RkU9R4+V9To9x7CFXUPMkXtePYd9Z4q5u1tRb2ni6Ju74Gi7kGoqPckTPr2IZ7Bpa76lD7v5fPZ1K6qaFAr6l0JY0hZePf2+XhgvuzNMLsl9JtFUes8pJ7JUubOPj5X1BjDfRhiuDdhDPcVoqgp69d+Pq85OCb7MdScMJPyCzMqah0L6nOIMp8cprg6Hijq7oSKOkIWh5inijpCPH56iYYYAUcZFHXM54oa/Y4JV9TdyRR12jNFHVcxL7EVddxFUZd4oKi7EyrqOGHSl4R4Bpe66lP6XOrz2ZSjiga1onYIY0hZeBM+Hw/MlwTD7JbQbxZFrfOQeiZLmTtJnytqjGGSIYYJwhh2EKKoKetXR5/XHByTjgw1pxOT8uvEqKh1LKjPIcp86swU184eKOpuhIq6C1kcSpNeKuouxOOnl64hRsBdGRR1N58r6vUDJVxRd6N7xVypC1wWRd1dxbyHrai7uyjqHh4o6m6Eiro7YdL3CPEMLvl1VEKfe/p8NtVZFQ1qRd2ZMIaUhbeXz8cD86UXw+yW0G8WRa3zkHomS5k7vX2uqDGGvRli2Iswhn2EKGrK+tXX5zUHx6QvQ83px6T8+jEqah0L6nOIMp/6M8W1vweKuiuhoh5A9w2Np4p6APH46WVgiBHwQAZFPcjnihr9HiRcUXclU9QxzxT1YBXzIbaiHuyiqId4oKi7EirqwYRJPyTEM7jUVZ/S56E+n031V0WDWlH3J4whZeEd5vPxwHwZxjC7JfSbRVHrPKSeyVLmznCfK2qM4XCGGA4jjOEIIYqasn6N9HnNwTEZyVBz9mdSfvszKmodC+pziDKfDmCK6wEeKOouhIr6QLrvqMNeKuoDicdPLweFGAEfxKCoR/lcUaPfo4Qr6i5kijoZdoHLoqgPVjE/xFbUB7so6kM8UNRdCBX1wYRJf0iIZ3Cpqz6lz4f6fDZ1gCoa1Ir6AMIYUhbe0T4fD8yX0QyzW0K/WRS1zkPqmSxl7ozxuaLGGI5hiOFowhiOFaKoKevXYT6vOTgmhzHUnMOZlN/hjIpax4L6HKLMpxRTXFMeKOrOhIo6TTefdLxU1Gni8dNLJsQIOMOgqMt8rqjR7zLhirozmaIuKXeBy6Kosyrm5baizroo6nIPFHVnQkWdJUz68hDP4FJXfUqfx/l8NpVSRYNaUacIY0hZeMf7fDwwX8YzzG4J/WZR1DoPqWeylLkzweeKGmM4gSGG4wljeIQQRU1Zv470ec3BMTmSoeZMZFJ+ExkVtY4F9TlEmU+TmOI6yQNF3YlQUU+mu+fR07dnTSYeP71MCTECnsKgqKf6XFGj31OFK+pOdE8m8+ztWUepmE+zFfVRLop6mgeKuhOhoj6KMOmnhXgGl7rqU/o83eezqUmqaFAr6kmEMaQsvBU+Hw/MlwqG2S2h3yyKWuch9UyWMndm+FxRYwxnMMSwgjCGM4Uoasr6dbTPaw6OydEMNWcWk/KbxaiodSyozyHKfJrNFNfZHijqjoSK+hiyOGQ9/Y76GOLx08uxIUbAxzIo6jk+V9To9xzhiroj3duzPPuOeq6K+XG2op7roqiP80BRdyRU1HMJk/64EM/gUld9Sp+P9/lsarYqGtSKejZhDCkL7wk+Hw/MlxMYZreEfrMoap2H1DNZytw50eeKGmN4IkMMTyCM4Twhipqyfp3k85qDY3ISQ805mUn5ncyoqHUsqM8hynyazxTX+R4o6g6EivoUsjiUx71U1KcQj59eTg0xAj6VQVEv8LmiRr8XCFfUHcgUdTjtApdFUS9UMT/NVtQLXRT1aR4o6g6EinohYdKfFuIZXOqqT+nz6T6fTc1XRYNaUc8njCFl4T3D5+OB+XIGw+yW0G8WRa3zkHomS5k7Z/pcUWMMz2SI4RmEMVwkRFFT1q+zfF5zcEzOYqg5i5mU32JGRa1jQX0OUebTEqa4LvFAUScJFfXZZHFIenrX99nE46eXc0KMgM9hUNRLfa6o0e+lwhV1ku531J7d9b1MxfxcW1Evc1HU53qgqJOEinoZYdKfG+IZXOqqT+nzeT6fTS1RRYNaUS8hjCFl4V3u8/HAfFnOMLsl9JtFUes8pJ7JUubOCp8raozhCoYYLieM4Uohipqyfp3v85qDY3I+Q825gEn5XcCoqHUsqM8hyny6kCmuF3qgqBOEivoiuu+oPX3W90XE46eXi0OMgC9mUNSrfK6o0e9VwhV1gu6ub8+e9X2JivmltqK+xEVRX+qBok4QKupLCJP+0hDP4FJXfUqfL/P5bOpCVTSoFfWFhDGkLLyX+3w8MF8uZ5jdEvrNoqh1HlLPZClz5wqfK2qM4RUMMbycMIZXClHUlPXrKp/XHByTqxhqztVMyu9qRkWtY0F9DlHm0zVMcb1GxdVLdVlaROuLXq4NMQK+lkFdXudzdYl+X8egLt2wUpwg1zGcxIQnHvt4+zWGlH5fL2QycQ2hzzf4fDKBvl7PMJm40eeTbxyXG5lrTlVjeBPTxOGmPEwcSpgmDjeHGAHfzDBxWO3ziQP6vVrIxAETeTXDSUx44rGPt19jSOn3GiETh5sIfb7F5xMH9HUNw8ThVp9PHHBcbmWuOVWN4W1ME4fbPPgOP074Hf7thOeQl5Ol20M8k6U7QoyA72CYLK31+WQJ/V7r0WQpXLXFuU1hpf7q8DbCMaIc73U+J1AsdOsYCPROnxMo+nwng993MZHeXS63gFDHhHvMKM7xtQyTHsrz/W6f5z3G8G6GGK4jjOE9QoQWJefc63OewDG5l6Fe3sdUL+9j/LpXx4L6HKLMp/uZziHqWN5P6DNiq6YwjobB+Ue1xxjt2ws38Ci27zbaDxrtx432s0b7ZaP9htF+z2h/YrS/Mto/GO3fjPY/RrsouLFdy2g3MNrNjHZro93OaO9htPc12jGj3cFodzPafYz2IKM9wmiPMtpjjXaZ0T7CaE812jON9hyjPc9oLzDai4z2UqO90mivMtpXGu3rjfYao73WaN9rtB822k8a7eeN9qtG+y2j/YHR/sxof2O0fzLafxhtVPS6Xc1o1zHajYx2C6Pd1mjvYrTbG+2wahcHNiy4bn/j/0ca7RFGe7jRHma0hxrtIUZ7sNEeZLQHGu0BRru/0e5ntPsa7T5Gu7fR7mW0exrtHka7u9HuZrS7Gu0uRruz0e5ktDsa7Q5GO2m0E0a71GiXGO24aj9gaHU9Hrh0U3/DVVucBwhrKkJFTi0MbHmhwl0QcL+wRXGMWGlZKlNWGnXtnHpiSBmUPQIyJsMFhD7vKcTnQkKf2wvxOUjo814BGZPUvQO0tWFLYxOu2uLsQ4hzYKGMsdnX6CsST8Uz2XhppjSayKSy0UQ6WlpWEkslSrLpaFk4XBZPl2fD0VS2xCmJRqKpaFkyGk7G4tlUSTacjKQ4ce4XkBHPsBCcjhCcEWKc1PgmwHk+qZD+ws57Pr+YjD5PZfD7faYLL0XE4x4l9HkCHVc4hHnjvO/RheRw1RYnRjgWQ4XwdjwgA2eJEJylQnAmhOBMCsHZQQjOjkJwdhKCs7MQnF2E4OwqBGc3ITi7C8HZQwjOnkJw9hKCs7cQnH2E4OwrBGc/ITj7C8E5QAjOgUJwDhKCc7AQnEOE4BwqBOcwITiHC8E5QgjOkUJw7i8E5wFCcB4oBOdBQnCOEoLzYCE4DxGC81AhOEcLwTlGCM6xQnAeJgTn4UJwpoTgTAvBmRGCs0wIzqwQnOVCcI4TgnO8EJwThOA8QgjOI4XgnCgE5yQhOCcLwTlFCM6pQnAeJQTnNCE4pwvBWSEE5wwhOGcKwXm0EJyzhOCcLQTnMUJwHisE5xwhOOcKwXmcEJzHC8F5ghCcJwrBOU8IzpOE4DxZCM75QnCeIgTnqUJwLhCCc6EQnKcJwXm6EJxnCMF5phCci4TgPEsIzsVCcC4RgvNsITjPEYJzqRCcy4TgPFcIzvOE4FwuBOcKIThXCsF5vhCcFwjBeaEQnBcJwXmxEJyrhOC8RAjOS4XgvEwIzsuF4LxCCM4rheC8SgjOq4XgvEYIzmuF4LxOCM7rheC8QQjOG4XgvEkIzpuF4FwtBOcaIThvEYLzViE4bxOC83YhOO8QgnOtEJzrhOC8UwjOu4TgvFsIznuE4LxXCM77hOC8XwjOB4TgfFAIzoeE4HxYCM5HhOB8VAjOx4TgfFwIzieE4HxSCM6nhOB8WgjOZ4TgfFYIzueE4HxeCM4XhOB8UQjOl4TgfFkIzleE4HxVCM7/CcH5mhCcrwvB+YYQnG8KwfmWEJxvC8H5jhCc7wrB+Z4QnO8LwfmBEJwfCsH5kRCcHwvB+YkQnJ8KwfmZEJyfC8H5hRCcXwrB+ZUQnF8LwfmNEJzfCsH5nRCc3wvB+YMQnD8KwfmTEJw/C8H5ixCcvwrB+ZsQnL8LwfmHEJx/CsH5lxCcfwvB+Y8QnP8KwYkdSsBZIARnoRCcQSE4i4TgDAnBWU0IzupCcNYQgrOmEJy1hOCsLQRnHSE46wrBWU8IzvpCcDYQgrOhEJyNhOBsLARnEyE4mwrB2UwIzuZCcLYQgrOlEJw7CMHZSgjO1kJwthGCs60QnDsKwVksBOdOQnC2E4JzZyE4dxGCc1chOHcTgnN3ITj3EIJzTyE42wvBuZcQnHsLwbmPEJz7CsG5nxCcYSE4HSE4I0JwRoXgjAnBGReCs0QIzlIhOBNCcCaF4OwgBGdHITg7CcHZWQjOLkJwdhWCs5sQnN2F4OwhBGdPITh7CcHZWwjOPkJw9hWCs58QnP2F4BwgBOdAITgHCcE5WAjOIUJwDhWCc5gQnMOF4BwhBOdIITj3F4LzACE4DxSC8yAhOEcJwXmwEJyHCMF5qBCco4XgHCME51ghOA8TgvNwIThTQnCmheDMCMFZJgRnVgjOciE4xwnBOV4IzglCcB4hBOeRQnBOFIJzkhCck4XgnCIE51QhOI8SgnOaEJzTheCsEIJzhhCcM4XgPFoIzllCcM4WgvMYITiPFYJzjhCcc4XgPE4IzuOF4DxBCM4TheCcJwTnSUJwniwE53whOE8RgvNUITgXCMG5UAjO04TgPF0IzjOE4DxTCM5FQnCeJQTnYiE4lwjBebYQnOcIwblUCM5lQnCeKwTneUJwLheCc4UQnCuF4DxfCM4LhOC8UAjOi4TgvFgIzlVCcF4iBOelQnBeJgTn5UJwXiEE55VCcF4lBOfVQnBeIwTntUJwXicE5/VCcN4gBOeNQnDeJATnzUJwrhaCc40QnLcIwXmrEJy3CcF5uxCcdwjBuVYIznVCcN4pBOddQnDeLQTnPUJw3isE531CcN4vBOcDQnA+KATnQ0JwPiwE5yNCcD4qBOdjQnA+zoSz0MIZDZfEYtnSSNaJOqlwJJlOxMOxeLok4SSceCJeFklEo9lELFGaTCdLw0knFs065fFktFz1vRuhz0945HO4aovzZAFd/CoKZeTjU0LOm6eF4HxGCM5nheB8TgjO54XgfEEIzheF4HxJCM6XheB8RQjOV4Xg/J8QnK8Jwfm6EJxvCMH5phCcbwnB+bYQnO8IwfmuEJzvCcH5vhCcHwjB+aEQnB8JwfmxEJyfCMH5qRCcnwnB+bkQnF8IwfmlEJxfCcH5tRCc3wjB+a0QnN8Jwfm9EJw/CMH5oxCcPwnB+bMQnL8IwfmrEJy/CcH5uxCcfwjB+acQnH8Jwfm3EJz/CMH5rxCcASH32xQIwVkoBGdQCM4iIThDQnBWE4KzuhCcNYTgrCkEZy0hOGsLwVlHCM66QnDWE4KzvhCcDYTgbCgEZyMhOBsLwdlECM6mQnA2E4KzuRCcLYTgbCkE5w5CcLYSgrO1EJxthOBsKwTnjkJwFgvBuZMQnO2E4NxZCM5dhODcVQjO3ZhwFlo4q/o76BChz7sL8bkaoc97CPG5OqHPewrxuQahz+2F+FyT0Oe9hPhci9DnvYX4XJvQ532E+FyH0Od9hfhcl9Dn/YT4XI/Q57AQn+sT+uwI8bkBoc8RIT43JPQ5KsTnRoQ+x4T43JjQ57gQn5sQ+lwixOemhD6XCvG5GaHPCSE+Nyf0OSnE5xaEPncQ4nNLQp87CvF5B0KfOwnxuRWhz52F+Nya0OcuQnxuQ+hzVyE+tyX0uZsQn3ck9Lm7EJ+LCX3uIcTnnQh97inE53aEPvcS4vPOhD73FuLzLoQ+9xHi866EPvcl9BnvByhSfe1h+F+gYhBU/4/fn+P3yfj9Kn7fiN+/4fdR+P0Mfl+B1+/xejZe38XrnXj9D6+H4fUhvF6C1w9QT6O+RL2F+gPn4zg/xfkazl+Qz5HfisGw/mE9wPMD8wXjh8+C393AWFy4EfeeYO3B9gLbG2wfsH3B9sMYgTlgERxHsBhYHKwErBQsAZYE6wDWEawTWGewLmBd1bh1B+sB1hOsF1hvsD5gfcH6gfUHGwA2EGwQ2GCwIWBDwYaBDQcbATYSbH+wA8AOBDsIbBTYwWCHgB0KNhpsDNhYsMPADgdLgaXBMmBlYFmwcrBxYOPBJoAdAXYk2ESwSWCTwaaATQU7Cmwa2HSwCrAZYDPBjgabBTYb7BiwY8HmgM0FOw7seLATwE4Emwd2EtjJYPPBTgE7FWwB2EKw08BOBzsD7EywRWBngS0GWwJ2Ntg5YEvBloGdC3Ye2HKwFWArwc4HuwDsQrCLwC4GWwV2CdilYJeBXQ52BdiVYFeBXQ12Ddi1YNeBXQ92A9iNYDeB3Qy2GmwN2C1gt4LdBnY72B1ga8HWgd0JdhfY3WD3gN0Ldh/Y/WAPgD0I9hDYw2CPgD0K9hjY42BPgD0J9hTY02DPgD0L9hzY82AvgL0I9hLYy2CvgL0K9j+w18BeB3sD7E2wt8DeBnsH7F2w98DeB/sA7EOwj8A+BvsE7FOwz8A+B/sC7Euwr8C+BvsG7Fuw78C+B/sB7Eewn8B+BvsF7Few38B+B/sD7E+wv8D+BvsH7F8wLAYFYIVgQbAisBBYNbDqYDXAaoLVAqsNVgesLlg9sPpgDcAagjUCawzWBKwpWDOw5mAtwFqC7QDWCqw1WBuwtmA7ghWD7QTWDmxnsF3AdgXbDWx3sD3A9gRrD7YX2N5g+4DtC7YfGBY5BywCFgWLgcXBSsBKwRJgSbAOYB3BOoF1BusC1hV/dw7WHawHWE+wXmC9wfqA9QXrB9YfbADYQLBBYIPBhoANBRsGNhxsBNhIsP3BDgA7EOwgsFFgB4MdAnYo2GiwMWBjwQ4DOxwsBZYGy4CVgWXBysHGgY0HmwB2BNiRYBPBJoFNBpsCNhXsKLBpYNPBKsBmgM0EOxpsFthssGPAjgWbAzYX7Diw48FOADsRbB7YSWAng80HOwXsVLAFYAvBTgM7HewMsDPBFoGdBbYYbAnY2WDngC0FWwZ2Lth5YMvBVoCtBDsf7AKwC8EuArsYbBUYvkce39GO7z/Hd4vje7vxndj4vml8lzO+JxnfQYzv98V35+J7afGdr/g+VXxXKb4HFN+xie+vxHdD4nsX8Z2G+L5AfBcfvucO3yGH72fDd5/he8XwnV34Pqz7wfA9TviOJHz/EL7bB9+bg++kwfe94LtU8N0i+N4OfI8FviMC37+A7zbA9wbgM/nxeff4LHl8Tjs+Ax2fL47P7sbnYuMzp/F5zvisZHwOMT7jF5+fi8+mxee+vgeGzyvFZ4HiczbxGZb4fEh89iI+1xCfGYjP48Nn3eFz5PAZbfj8M3y2GD63C5+Jhc+bwmc54XOS8BlE+HwffHYOPpcGn/mCz1PBZ5Xgc0DwGRv4/Ap8NgQ+dwEnAvi8APwtPv7OHX9Djr/Pxt8+4++K8Te7+HtY/K0p/o4TfyOJvz/E3/bh7+bwN2n4ey/8LRX+Tgl/A4S/r8HfruDvQvA3F/h7BvytAN6Hj/e44/3jeG823veMPI/36+K9sHifKd7DifdH4r2HeC8e3puG92rhvUt4Lw/e24L3euC9D3gvAH43jt8V43en+F0ifreG3zXhdy/4XQRem8dr1XjtFq9l4rU9vNaF137WXwsBQ62M2hG1FGoLnGvj3BPnYsivemlktFurv6mKiuykqRXFFVOKU2VlxUdPqBhfPGVmdlr5xClIv+vnSHrprP72mTE5UzFhyuRi2G5C+ezDpk6bMDNVkT0sNaNiPHRQnElNLp4yeeLs4nQW2hMnZsuKp1ekKiZge7Z5cFx2U38HT5g+KVWRGV88eUpFtnh8NlWWnVacmTK5YloqU4HYpmWnT8dZ0/rpmF7aVbb39Iop01LjssXTJ06pWL/n3jkE4NfC7d/n9xz2qRnc/n1q57BPqxz2aZPDPvvksM9+OezTNYd9uuewz/Ac9hmZwz6ZHPbJ5rDPjBz2OTqHfU7NYZ+FOeyzIod9zs9hn+ty2OeGHPa5J4d97sthn+dy2OeFHPZ5P4d9Psxhnx9z2OfnHPYJFW3/PtVz2Kd5Dvu0zGGfPXPYZ68c9umYwz6dc9hncA77DM1hn8Ny2CeVwz5H5bDP9Bz2OSmHfebnsM+yHPY5L4d9rsphn2ty2GddDvvclcM+T+WwzzM57PN2Dvu8m8M+n+Wwz/c57PO7sc9Om+8zacbEiglTQbNstuO/ORwsGNr8YINBv6AaAYVSjEppyrQJx4AySs8uTmUyU2ZMxisf6y874zJv4/7rL0fj0n3atNTs4gmTy7KziqfMqCieUl6chv3Kpps7Lsx1x8W57rg81x0vznXHq3Ld8aZcd8SrhXrZ5uQxO2hkdLAtSWTu26wgR9RtqnDQnXI96F5VOOigqoZ5WK6oD60C6sNyPei4Khz0yFwPOr0KBz0614MeX4WDnpTrQU+vwkHPyvWg51XhoOfnetDLqnDQq3I96OoqHHRtFfa9O1fAD+W647M5oG2rtts3sJ0H1Tt2DOR+0K65HnRIDgctztXT4ip4Wpyrp8VV8LRdrp62q4Kn7XL1tF2Onq6/lQKXH1Ta4+0U+oI2rsL5cDf1OVy1xalpgCPtOxFL1wxsvH2EA3eIp+/1jwnoWWNDXxq/PhbeyqIvVult8E994/97qfVBY11vqz9c16fG5n33VeuqGev6qXXVjXX9jWPrdQPUBz2mjQ0s5r6GNvpve3084lgmC6xjGVruv2PWCrCNJX6z/99x9PH1sQqNmFS3MNU0YlugrBsNpvU/+dTHM49R3cJZ3cJZM7BxbANMeGpuB57/22/L41TL2J6yNpmY9DGw9ui8Nc8jO++rufintzfrjbmf7itg9RVw6cvGUN/AauLalrjr7c34Vzf6oOaS2kbfhXR9r38USR2evh0cq7qBTZdtGataxn4c9baedfy61vHrWtvggnGqz4LJSVQWk/pGTOqxHH9DTOpbx69nxQT9b8DjP97F9l/f+vgNLP9xTBpa63A/fctKSO2nt2lg4NfbNDL2Cxmfexv7NDT81dvqdQHrGDo2WFe6Gvsx5Ulp3cCmcdLHCFj4Aha+WgGusduQO3Z8GljHd9umrss2jbZhm8bbsE2TbcDTdBv6abYN2zTfhm1abMM2Lbdhmx2sbexzFPdpFdh0wXxsbfThVd3Sx6xlYOLIvdbW8VtZMUFu03PYcdmKIVMqsv9d4DT3b26s039t//Q25jlo3BiwCUc3tPa181uva+yyronLuqYu65q5rGvusq6Fy7qWgc0Xc95Ty2jXMdpmbdP56BYX81iFgc3jqdebnyn/P8DYN/X/63VFW2jb11Yqy01cb46X2znhxrd6H3POrmuQ3jZotO35WdDowz4/9LZ1XPxosA1Y7bmJ3qe6gbWO0caFb74SjvJxfDhhz/UJdf16HcE0h4zz8Uw4gvljcp8e35Y8x4tVxmv6mLUMTBy8Zs8H9LFMrm9hYWpgrDPnr/b8o4XVF+V+dQMb46VrCc6PZxj9tjT6LHLZPmRuU7Cxj1lqHZ57rYy+9brKrjHoMdqWawy4rZ4zaJxudSlkbVPD8gMx1bQwMV4XThRYMTCvXYSMv3qbk9Rfe16isVXLIQZ6H7M213CJAdP13ESB5Sv2reuSGRu9zWlbiUFoG2Kwpeu3rY0YuF2/9TIPGhif9V+9zZKtxKAqeWDq+NYWBkaOjnHHd4dtiK/eZkWg8vjukEN8d3CJbzWX+DJxlOt5pucWZmz0Nqu2EoNtOc/sOOl96hkxaGBhYJzzlHDHt6URxy3FV29zdaDy+LbMIb4tXeIbCngW31Lu+LbYhvjqbW4OVB7fFjnEt4VLfFsGNo+vef2E7vp8Sak9dnR9R9Z/r9CCB3fGzgu6vmPrz+nmPLiz2Hczlr5L1/NdUx7c67VdE56+139HZF8Dw+OZ1+oJr1nGK9N2+pi1DEwc2s6+zq2PZWq7hhYm87sJM/e39t2EuV+T7djPvsZBOOZJE1P9HH1pkeN+TbczBnV5YhAzMdXN0Zd6Oe7XbDtjwPP9cEm5iamOxzFoleN+TXPcr1mO++XqX5Mc98v1eM1z3C/Xcc81nnr8cG6nr838rf7ieWjP72oa+xJzUUllXGTWBpsLalmYqvJ6qFQqWhpzYtlsuRN2Ihu+i99aPAssrG4chnEL8sQttv4eR5f7FYtqbB67kHWvI358sWAjxiImjJXFUR/TzEvzfqytxb9RYGMuNDP9V23zXsrqxrH0OjMWep19jc68D7O1sU6fM1qn1A5sqi+1ljLHRa/X21Q3runeqNqmhiq0+tA1yZ4/E87L1j9KTtcwfexm1vFDxjb1Ddy61urHzdm6DrdpavXdxPis+25q9b0lrWnfl6DHx5wTaZzVrG2aufjSuJLj2XqI8n4WM3Y6bzS+5sZ6vU3zrcTFvu/DTYPb92s0seKC89EWFga3vvX21V36rmZtY/qot2m7lZib8wzqmDc28JgxMLlRb9NuKzG378dxi7l9r01jKy71jbjobYPGdnb+BY19zeMHjW2bWPtUNoatXfypbAz1NntXEpu6Aff7MwIWBr2YcxW9n9Z59Y1j7uCCVffV2KUvvX1jA5f5HSYu6GvMqGdmHpjXAc1r3HqbW41aXlqwEa/exzyvmrn4YNfzZpX4YG5r51RLaz+38db71HLB1KSS/dz6tmOv9zG/99LHa1zJfm59b+n6gPl9kj5eI2Od7quay/FsTjXvk+CZ327g1EaGH+ZcRh/fvA9zsJGD+gdnQSsG5vWCNlbfbY3Puu82Vt9bqrc815s2XGdua+AxfTHvXdXbDN9KTdHz3pYGdj3vJcaexG7fLth4bD12IeN4bQ18W9IKdj7rfXQcGhjbmPe+2N9Z6O1NztV9VbO2MeejepvRW8mBtka/1Dlg36es8Zm5obc5fCuca8fTLeb2uDSy4tLA2MbUEDp+Zk2w9ch/83hjG91HNWub/3LG2Gb8VsaBaY7vOg729QRzHCZu5zjY/Os2V29kxcXke80XJkeb3GFznu7DHAd7/uJ23UNvU7GVcWC6Bu46DjZXmuMwazvHYVv4upEVlwaBzeelZs0z7zXb0rzCHAeTi81tzHmk3uaErYwD031uruPQxPLXHIeTCeqSXdMbWXFpYGyjrw3iOOj4VVaX7DmYiamatY1Zl/Q2Z+RxjmBfP7Gv+Zn5sngr42DHWMeuMk6267XJyVoP4zjYWnFb65Luo7K6pLdZvpVxMK9zcI9DUysG5jhcsJ3joGNX6BIXvU1LKy7mPZbm77XdrvNT16XL81iX7Hsz3OqS3ubqrYyDHeNtqUstrLiYdUlfY3CrS+bvTPX/2dc57WPZ123dzhe9jZv/a7aiGex9zftxTZ1qzru2pFPNfLNrqz1nMWvruq3kEtN3LKWmTrT1l8kBept7tpJLbay4uF3vsnmpjRWX+oHN54E1je2Iz6dogeWrOVZmbPQ2D2+jBm1qYGfSoDFbg/6XW8bx7Hi7zcPtcbPndQ2MbUye39J1psrmGHYNN8+D5yqJrakF3K7XmfVEX69b/7tzntivv35Tw3gGSJFxLB3/QmObGgaOkPH5LaP21TRurF9/LVc//0P9XX8fq35OSI0t71dk7dfA2KaasV91a7/qBm4dy5cUvtrW8YMu/ehaXM3qJ2Rs875xTfRDI3dDVr/4/9+7/L9eCjb9+F8dX982nqVSk3H8a1njr49VZPivt6lljb/+/K0x/rW3MP41jfHXeVO7xpb3C1n7NTC2qVFJ3tR0Gf9PFL5agU3rCmEsHXOsMc+Gq36FPjuphO+7c/89O6mW8f/b8uwk87lG5v0QLD454bDbM1H4nkcScSqrS+azX5h+47P++PYzWuzfdSG/41xVj5P9vJZivbPbA6cqc9DtBpcAnXNh8wdpZpJVD2w/RvNhPGZfwRz6Mh84Reiv0yCw+Q0p5rGIBUHYfEgVdXExH6xEFiNnQ7+1eTA7pkDUccGTqZ1xPPNHjKYYNW8a0tu0N/rYVbXdfpxk/pjEvGGpsqKs+9ATNbcfV/I8OCiyfjJUbwtxMG9y0tvsp/5uSUjaDyGyC1iB0a/epp7RDgQ2/eG73jZobGc/uKGOsU3A2q9wC/uZ7ZrWPmatquNynOqV+GLnkJln9kUPM756m07q75YuKPD8KGlDHphfXhcZ+Mz80Nt0qwSn2VcgsOU8sHPFfChSILDpuaC3NR+8YE4EzW2D1np9XLf9zLb9sAW3B9Fty3H0/9cy+gla27nFSOeFWRO3lDvmWOlthqq/W7tgVt/oU9dD/VfmxD0R+//xoacFAUs8G9uzT9ATsRjfD95j4a3dDL3JDb3GhQcdo/9uAg1sFC3dzH4Cmy58YxyrVFjoY9YK8OVvQWDzHyLrY+k8wdqna+y4bEX3GRXjD5pQMTk7fZPHSuleuhnr9F/bS3sbXIIu63AxM92sghIuA+5k+OTHy4AtjHjuqdpCL8/EGStxhK+abVrl7ceyBI3/62nluhsDsDGdquhM8XX41G844nbpRPth/hxkex6x65dLPuYs1FSEXsbSZFYdy8rYeZPHnlt5jx9bmvuotnmMXVQb2bu39fWBBE7YObBxvR85Qd96rn/mZI+3PTswr3SY6teeVdiPlK4T2KhmpqYyR47IVsyYNtl8Fc8m3ZlLodE2J7V2+TS30+lQ6NKfnk4E1F/7lxTd1Odw1RaH71cuG2hEL/YdSyalBwiPacbfHG7zG0K3C50F9Fgco8v1x7TH2Ly7o8AFE9PT4SOMFzLDbk8vrR3YfByKXHw324WBTad89v+7ravrcpzGLuv+H4DH51lJzQUA","debug_symbols":"7Z3tbhzHsYbvRb/9Y+qjq7tzKwdB4CROIMCQg9g5wEGQez9DWbukxOV2NNxuPaXlH8O0Z7rene2q6lru8/Lf7/7605//9fc/vf/wt19+ffeH//n3u59/+cuPv73/5cP+07/fiX38b7/+48cPDz/++tuP//zt3R+kqv/w7qcPf334V/P//PDub+9//undH6r854dnF2stp4u11jhfLOoXrja38ulqK1sbXC1brdtJyVbboxSV7dL1rerp8tblfLVdXFzkJEUk/OnFf/zhnfjbk3nhyZS3J/PCk4m3J/PCk6mvfjLWrJ1ea6uPF0srHyO06RH6V0bY79Ht0j3qpZ/eZG99sCP6dnrTbHuiql16y3Qr57dBt+jb49rl4o7QHucdYVsf7QjfTk9IXOtrdoTK25N54cno25N54ckY/MmY2eOT8bquvqq/PZkXnkx5ezIvPJl49ZMxsVPzM6nb4MnUqKeV26aDZ96Kni9uT042dlHH/rBOOtQfn8peqz6+0no3r7R9P6/U7XT1nhb9s1d6YatHyPkYtpVnz6Xf63OpT55Ljy+fi23fz3Mp0s+zUBk+l83b4yi0Pbn6kmw/D2VeHnXUi5duenqF/nRh7R+ft7w97xs/b7GTDJcnDfHT89a35710f9vb8166v/3teS/d3+XteS/d39/RjMJ43lb9dCC02p6Mmx9nQvuOJqWve95Sz89b+ufP++G5fEdz1U2fy3c0V93yufjdzlV6nk5Fn/4O5WLdku5x/qxM2uizr2/3WZnf7dz2nb6fdzsXfqfv5/c0d8b5d/qxbYP3s2/t9A71/Zk/Xt0u/bZBrbRT21ILqZ9d//Ac/e053uQ5rp4T9/w5rdzls5Uf1Cyeomz/tfDp4s3jSzUVpaah1HSSmrKh1AhKjaLUGEqNo9QUlBpULS6oWlxQtbiganGganGganGganGganGganGganGganGganGganGganFF1eKKqsUVVYsrqhZXVC2uqFpcUbW4ompxRdXiiqrFDVWLG6oWN1Qtbqha3FC1uKFqcUPV4oaqxQ1VixuqFndULe6oWtxRtbijanFH1eKOqsUdVYs7qhZ3VC3uqFosG6oYy4aqxrKhyrFsqHosG6ogy4aqyLKhSrJsqJosG6ooy8aqysKqysKqysKqysKqysKqysKqysKqysKqysKqysKqysqqysqqysqqysqq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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"structs":{"functions":[{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters","fields":[{"name":"inner_hash","type":{"kind":"field"}}]}},{"name":"return_type","type":{"kind":"field"}}]},{"kind":"struct","path":"SchnorrAccount::constructor_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::constructor_parameters","fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}]}}]},{"kind":"struct","path":"SchnorrAccount::entrypoint_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::entrypoint_parameters","fields":[{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]}},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]}},{"name":"cancellable","type":{"kind":"boolean"}}]}}]}]},"globals":{"notes":[{"kind":"tuple","fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"kind":"struct","fields":[{"name":"x","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"y","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"npk_m_hash","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}}]}]}],"storage":[{"kind":"struct","fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"kind":"struct","fields":[{"name":"signing_public_key","value":{"kind":"struct","fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}]}}]}}]}]}},"file_map":{"3":{"source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n","path":"std/array/mod.nr"},"7":{"source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec where T: Eq {\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n","path":"std/collections/bounded_vec.nr"},"24":{"source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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 x: Field,\n y: Field,\n 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 lo: Field,\n 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(\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)]\nfn multi_scalar_mul_array_return(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [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 { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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 { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\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(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> 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","path":"std/embedded_curve_ops.nr"},"25":{"source":"use 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;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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","path":"std/field/bn254.nr"},"26":{"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(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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(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(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(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(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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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","path":"std/field/mod.nr"},"29":{"source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T] where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B) where A: Hash, B: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n","path":"std/hash/mod.nr"},"34":{"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(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 = 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(input: [Field; N], in_len: u32, is_variable_length: bool) -> 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","path":"std/hash/poseidon2.nr"},"35":{"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// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\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\nunconstrained fn build_msg_block_iter(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [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\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\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\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(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_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) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\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 }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\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 // 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 msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\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 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\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\n for i in msg_byte_ptr..56 {\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[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\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, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 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, 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, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 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, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 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, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 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, 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, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 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","path":"std/hash/sha256.nr"},"58":{"source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option where T: Hash {\n fn hash(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n","path":"std/option.nr"},"59":{"source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n","path":"std/panic.nr"},"70":{"source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/public_key_note.nr"},"71":{"source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/azguard-nft/contracts/account/src/main.nr"},"73":{"source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr"},"75":{"source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/auth.nr"},"78":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr"},"79":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr"},"80":{"source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/authwit/src/account.nr"},"98":{"source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr"},"99":{"source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr"},"100":{"source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/utils.nr"},"102":{"source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions\n) -> (BoundedVec, BoundedVec) where Note: NoteInterface + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note where Note: NoteInterface {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions\n) -> BoundedVec where Note: NoteInterface {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr"},"118":{"source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr"},"121":{"source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal 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 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 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 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 Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\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(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize 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 for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\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 = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr"},"123":{"source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr"},"124":{"source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, 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(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(contract_address: AztecAddress, log: [u8; 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(&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(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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\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(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/hash.nr"},"131":{"source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note\n ) -> NoteEmission where Note: NoteInterface + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note where Note: NoteInterface + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr"},"146":{"source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/initializer.nr"},"148":{"source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr"},"150":{"source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr"},"151":{"source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr"},"152":{"source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr"},"154":{"source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr"},"155":{"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(note_hash_counter: u32, encrypted_note: [u8; M], 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_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(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], 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_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\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(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(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper(\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(contract_address: AztecAddress, message: T, counter: u32) {\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.\nunconstrained pub fn emit_contract_class_unencrypted_log_private(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/logs.nr"},"156":{"source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr"},"159":{"source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S] where Note: NoteInterface {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr"},"161":{"source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr"},"162":{"source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr"},"166":{"source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"},"169":{"source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> () where Note: NoteInterface {\n | e: NoteEmission | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr"},"170":{"source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr"},"171":{"source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 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, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\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, 0, 0, 2, 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, 0, 0, 1, 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, 0, 0, 1, 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, 0, 0, 2, 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, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr"},"176":{"source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/utils/point.nr"},"185":{"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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, 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},\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, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests : BoundedVec,\n public_call_requests : BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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.storage_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(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\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.key_validation_requests_and_generators.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(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\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 = 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 = 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 { request, sk_app_generator: sk_generators[key_index] };\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(\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(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_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\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\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\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(\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(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function(\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(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function(\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(contract_address, function_selector, args_hash, false, true)\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, 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, false)\n }\n\n pub fn delegate_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, 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 is_delegate_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 is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function(\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(contract_address, function_selector, args_hash, false, false)\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 is_delegate_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 is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/private_context.nr"},"188":{"source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr"},"199":{"source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_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 = 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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr"},"200":{"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(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr"},"202":{"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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr"},"203":{"source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr"},"210":{"source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\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},\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(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(function_leaf, function_leaf_index, function_leaf_sibling_path)\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 [\n tx_hash,\n note_index_in_tx as Field\n ],\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 [\n app.to_field(),\n unique_note_hash\n ],\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 [\n app.to_field(),\n nullifier\n ],\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([log_hash.contract_address.to_field(), log_hash.log_hash.value])\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(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\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(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = BoundedVec::new();\n\n let inputs = [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(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> 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\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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // 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 pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\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(inputs: [Field], separator: T) -> Field where T: ToField {\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(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,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = 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 = 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(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr"},"229":{"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(msg: str) {\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(msg: str, 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 {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper(msg: str, args: [Field; 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(_msg: str, args: [Field]) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr"},"248":{"source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr"},"265":{"source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr"},"299":{"source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr"},"310":{"source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr"},"311":{"source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr"},"334":{"source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.57.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr"}}} \ No newline at end of file +{"noir_version":"0.36.0+1094f036be7b102252a3a5c0d4b8c621779cf4bd-aarch64","name":"SchnorrAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"error_types":{"3469988399892582431":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"H4sIAAAAAAAA/+19e4xk2Vnfre7qnunqnu2a96u7p3pmd1j3Y6ae/cBGmsR2jLIoUiBhAccR1d3VZAPeBTPrDUZGFSIjEiErjrJxlGD+iTeKFB5yYghJlMgEhwiFhMgQQInkTUBgEGjB8AcYsKHv+H7Vv/7V75576tY90zXgK81UdZ3vfK9zzvc4r1uKvvjMH/0rJd9nks/ZaPgxmAfJZ328p1EgrnpIPktPCJ9TTwif008In+UC+Yx5m45OPkXzOxNAr0XzOPsE8Him4HY3HsvJ97NH/+aO/lWiL9reoUIUbCrpOHF53MCxAs8ATBrSryPlxM9Hpo6/X08+/8J73tP9jtoLLx70/k7tpZcf1l46rO299PKLB9+OFV/LW/GH8lb8T1BxKfnsPnzYe/e3Pqw9fKnWPTiovfLCw79Ve+m9vfccfstLr2Ddn8lL9P/lrfjZMbh9Zjp/3fZ0Tobfkrfi2/JW/GtjiPkv8hL913kr/tu8FX9yDDE/lZfor+Wt+PtjcLtezl/3y8s5Gf6LeSv+5bwVv2EMMT+dl+iv5a34Rt6KXxhDzHMzOYmu5q3YnMnP7eEYdV/Oy/D781b8QN6Kr44h5kfzEv3BvBU/nrfiJ8cQ8+fyEv1M3op/MAa3G7P56755NifDb81b8bm8Fd85hpj/My/RX8hb8dN5K74xhpifz0v0/JmcFW+fyc/t145Rt5eX4Xfnrfhy3oofGEPMf5yX6PfnrfjRvBU/PoaYP5mX6C/mrfjrY3C7dDZ/3fWzORlu5a345rwVnxtDzG/IS3Qvb8W/nbfi+8YQ8+/nJfqRvBV/eAxuf3mMup/Ny/Dn8lYszeWseH4uv5jX8hK9lbfi2hjcNqDuU8nn1zzs7n/zUc2Xage93rcOJvm+MgG1GjYtZbPPD5K/6+M9A45KAfDv1NuHIHEI/ltzCc4zYfDvGP6zYfDXje+39o/xoyxG16Z33tE/1uU7oE78nEu+nwj7+yfLYHozehuV4arG26kMJhWiv0RlkAoNeDK9zYIsBfar0O3SMtlwgt70arTnwtBul4heFB23DZYZ/UoUdAw0SkTP+GH9WN86ZzD9Y35mqazcH5bDymagzNo3/lwFOO5bZwBuA37nPj8dDY8RK7d2RV0X2Gf3DH85AP6jp630zm1S7p+kjWWod1yMMr1fPPr3XAJTBp3Fz5l+EJkGq25nE/wzwLfRRN6nCJ6/z9Bv69Ex34/kAVijMw2/Gc3F5O9ZKLO6Llxlgasq4GcJ1xmBC38zueMxcTv5Hi8exu13D2IJHFPx8yD5rOd8utvt7s7Bft14tf4wEw33daOrxkERvNijfEOB+BuGvwL4pwPwPx8V1072zFA7/cPkM+43HWof9DWlwnho7xr+qSD4tzrKjheHf3vb8M+E4b+nYqcC9d9W8UuB+hm070IQ/M3B+DgXRv97Fl9YimY0ouh4bCzC78WN/UbHN/Yz+hXiNVTst0j8sH4wzojLqoJX0915KCuu3TqdqqDNtKpCjqqQQ+GaKRDXuQngy9rjAtV/kPxdH+vZOlS8XihQ7ukCcRXZtgsTylde3Vs/uUj1HyR/18d6ttuK14sFyj1VIK4i27ZIGedy4rK2vUT1HyR/18d6tuuK10sFyj2pbVsqEBfHgeZPMX9SedYMwf/d5POcoG/8Wn+4DL8XGN9slYie6QN/Q/rnBD/Gd0WUjbPTu1Vvbvfqjfpur9M8qDcOS4TfeOXfuA9eEfAqVjJdX42C6FrOB10BvcZPGcouU9kMlBmPOB80RziL5t9H/0i/KsowRx+lLS9EJ/sa6g3HdxQNj51AazXeuYHRr0TDtihEbuA7v8rrDFi3Ksrm4TuWIZ1pQedJxMXrDajD2P5/YvYk3ALgL6V8RtFw/0B+DNc5gcv6cqC80nuNw+hXiNdQffkp4of1w7pbFLxWRRn3GZVPLwo6jwuXlWEMZHIvRsN9gfNXpbenHDxgfYML3OcaYedujtcMMRY3/xMP39dIZ+ZbZkBnWHcRyhH+0twxzn+V/LZIMNiWi9Fw23JMuUA6YRvD7TfroINl3E9mBZ1ZB51zHjxHkTumLkXD45hlxLbykePciLTPC3g1BlRbWV0171lg/20arxdGlO2igMe5BrYjOCdndV05SV6/dqFAXBcLxHWpQFyXC8R1pUBcVwvA5cqFrQz72QKV4fzKeSrjOQgsw/yBeeFcB8swj6uAfPHf14UM8fcywFyD3w0+Er8pW2p1zUbcgLoPks/6aE+DfzBaNx2y3aCyJSi7mSI31l+KhuVeIrlvCp2k8bYkeGO8Uw450uggXtb9NYB9kHyOqus03TPP14Ts9vdyigysZ/zbYo1ZgWeGYF9PPtHO4qPaAP0a9oHZFN6iSPcBFcswv64+YGUroh7zhvVXomHeVoi35RRZFG8rgjfGOxX592XFE+tnlvBeE/wxnkjwkIbX+smCwMP9643kM6sPqXjI1YcWCA/jYDwsy4qDPvehW6Ie84b1b0XDvN0i3lZSZFG83RK8Md4phxxpdBDvKH1oJQVPFGWPXe5D5wUe7kOfTz6z+hDiwrgjrQ+dJzyMg/GwLLcc9LkP1UQ95g3r16Jh3mrE2y3BdxpvNcEb451yyJFGB/GO0odupeCJouyxy31oWuDhPrRQ+uJnWh9Se6STKkH3Oh89uyWiF0V6rszoV6JhuUPMlc0SP6wfzglqgteqKOM4tybo1AQdhetmgbiWCsS1XCCuhQJxrRSI63yBuMwe8FiLnwfJZ73daDZbjfb23tZOfadTP9jfafZ2up1Od/doQa99cNisNztbh716Z7d1sNvePfq53djv1uuH9e7eYWOwb7AmcDeau3uHB42Dbqe9t13fah5s7XXa7d52r7W1t1vfbm21OvXDrcO9bv2Ih539I7zbzfrubqe+e9jZrjcGe/pWBe5Wvd3c6m21u71eq97b3d3Zb7T2d/Z7vf2Dbqu7vb1T3z7Y63UPOs29/eZha++w3uv2djqNvSNWGvX9wbzmbaWT7s4RJ72t+kH96L/DzsFOvd1p7x60dw6PyLYP6luNdn1vd6d3sN3Y7u7udVrN7uFW6whrp1Xf3h3gvqNw9w72Gr3mbmu/td/bbewd7tfbvaOv3e6R7pv7R8o97O4e1HdjXfT22vVW73CvsX/Ybe7vtVqd7UPD/bTSd6PV6Gx161s7h1vxwmyr2a7v727tteMW2G5vbR2ppLW3s91o7HeaRwTaO81Gs9vo7O3XW+1ed8tszjOAm+31Xfi9QPt44GuvjX6FeA1lr+8SP6wfttdfJnitirJV+I5lSOfLBB2F6+kCcZVz4rL+8SyUPUg+mzvNzv727v7+Vrezv7fX6x1uH2x1dw4be1vdRnOvddQJu63WTrtd7/YOjzp9a/dogO3s7+wemaWj4bGr+Hy2QJlrBeLKqz+F605OXNYWb4KyB8lno9VuHGxtdw67Rxait99rHRmNIyvZ2u+22ke2urXX2N3b6u1ubzXr7a3to9/aR03RbO+3j1rsoNfqKD7fVKDMRepvtkBctwPIaDYDbQzbW6x3GmvJRr8SBbX/DZdelb01/ayF4Wff+FkX/Ew7+NkIw8+O8bMp+Lkr+InjyDPRcB9CfeE5LuR7E/Dbb/G/BU/aBq/W71xrh0jP6ha5d4P30sfPg+SzPtrT4h+Mz+uCT6OLedVp7HEy+hXiNdRYvkn8sH44dlLrHlVRxns5lgSdJUHnScJlfdTGhlq/cen5poMO1je4c6Je3nHG7VkEruUCcJkuMV9nXa4QLv7NpcuVx0znnKjHNgfnM08jfjD6FaGTEDbnlqdeOfbCuhx7RcXx2aoKuuifsQxlUH5W4ZoPgEvtc1uhMmWflF3j/X68fhg/oftu1p6zD5SOf0edpO05OwflCP/+s8c4vzfBuSjq87ym1cdcaE7oiel9X0Ijaz5+KkXuD5Lcc0JurMt77Qz+r4DcH3LIzXvgsO8tURnGreyzMEZPyIWOx71jLqNfIV5D2b8N4gd1Fz8cC2+G4WdwDuGe4Gdd8BPHO4vRcJshf4YLx4XZCNVP+HwX54ppuqmK+mtUtiDoKFu4TmVoC3l+EO3AWeJd5V5KjyXiAeFduRfKyuOriNzrS3HsyTYeB5eyl6zLUf0+1r/7mOn4zIMFmufxjmON/uOaB1vz1Cv7QKzLPjAqUG9VQZfvkFJzZ8pmKVzzAXAp2802uMg4Nive+unSSRmt3dLiLY4zDf7fnTnG+TMJzkVRn+NMq4/+dErIwfT+V0IjK84sRVruT5HcU0JurMtxpsF/L8j9vx1yc5yJtoTjTOw37FNw7pXt0z34/TTiTKNfIV5D2SffuM70cz8MP4M4sy742RT8YJyJbYb8GS5XnIn9hGMvjvGzbBXW53hxQdBRtmqTytBWcew6apyp9FgiHhDeFWdifatr49ru7Xgj6djxuP6t5LuyKWbXY7iPzZ6kgzxUiQc8G3GByvBsxEUqw7MRl6gMz0ZcpjJ17nqR/o6/21kIjn1ZHtzfiOcnsC0igYPx8HmTJQd93nup9mszb1gf494o0v5Izf+n8bYseGO8Uw450uggXtbPVcJ7TfDHeCLBQxpetQeczxEYbDkZSFn7d7F/YL9P22d9lfAwDsbDueGygz73oTVRz9W/MSaOBI6s9lt20L+RgnfKIUcaHcTL+lkgvK5zBGspdFx4+dwr4uH+ddGzDyl76epDVcLDOBgPy7LmoM99SOU9zBvWRz8cCRyMp5rB27rgjfFOOeRIo4N4R+lDayl4oih77HIfuiDwcB+67dmHUB6+e0b1IZ92uuyQZdNBn/vQPVGPecP6GPtGAgfjWc/g7Z7gjfFORdn97YaDp1H6EOc511Lo+PShywIP96FGRh9yzUOGvXvJ/xyB0a9Ew305RP6l7uRRdw+Y7q4JXquijOPFa4LONUFH4VoqENfVAnEtF4irWiCutQJx3SgQl9kD1/n5OVHvNOZpjb665yzEOFR6de1XDLT+N9ivqOZlFhz8BJqXGexXVPMy6u4w3K+IfUj5Xea7DvjtN5bbRdvg1X2DvnedVFNoYwxxReBSsSHyzfH884mQMe3nEwGKvAdEzVnwmo/vfXBqzSftjkIrV59GJ43nIu/PYH85Di7TJdpi1uUNwsW/uXR54zHTUXeL8D4g1W/UXR+8foJjntdP1BiM+/+LU1pGXEdQd3PNEPwnpo5xflvyXc0jIo9YH+eJeZ5O0XvZM96dTZH7FZJ7QciNdXn9xOA/BHK/j+RWtk3p5CqVYR/ksa7W5M0PYax4GusnRr9CvIaKG9TeYDUeTT/LYfgZrJ/UBD9q7wWun2CbIX+Gy7V+gv2Ez+ncIFmzbBXWd9kqPj+Ntor3m6u5NmWrfNZPlB5LxB/Cjxpz8DvFEC7+/PrpkzjU+HXZUHVHCNu0V8GW/AeHDWVbouyF2ivEdkbdJWRlywInnyUONY5uZ+hvNTqpP4P/gQyfUKL6UTS8FhI/3L9uC3jUgfFmuqtB2W0qQ71aO/I56oL12jI57iT40vSKekf4f+mpV6Unl17vCHjUAesVdX6H6PO8fw2+W71J778/7BHTPNJV/xjXDZAtfsr9ILJ1YhvdmjvmA3X8SBagmzbGED7vGKtGw/1kmcpUHqj8VY3K1Dqwa04O7bTLd2Hb4x2z2H6z0Wi+4j/niH8XgNYrlPfyvHf8BD5z1yoRvSjScSWfubsRhh/nmTsVO4165o7vfhznbJu1a+DYf3A3K66hqxiL7/Ez+P/h6Tt8Y3nmB+HVfX8qDlqmMuxP11L4wjgc4Tk/Nfifz5Bb0b7qoD0t4BdTaP8+xJG/NJVOj+NI1B/HkWpPgIp3OI5cFfX4bpcQdiX+9zToR/kUjIcQ/v9Prh9uKz+MvpP9sCvGih8eV08LeGwn01+V4HGMqb52m+iMOpeG9V1zdktj0lF3Xbpw4bhg3276mI3ce65mCP53M/qfinNuUxnGOUtUpvbhqDinBvzfThwzxwvxd5xX+xzFQ+gXRrFhz8Ic/R/ntGE+Oa2KZUvJZ+B8wXtezehXomF7GyL+WSV+UHfxw/NqgfLWtsuG1QQ/OK+GbYb8GS7XvJoaoyVR5tJNVdRfzkEnKphObUw6NUFn0vwh8s/+0LdvG3xWXloh/WBfc/lD3j8xqp9SfUfRqY1JpyboKP/DObhvnu1aw8I82/yPS44Fgdfli9WdxOyL7yZ0ffdVIS5cX1P+ieN9lWOp2IZzrA3wlX91Op0e+0rlD1VMz/H+KpSxj70tcPJ9i6H8xDMZ+sN8AOE7GW1covpR5BdLPyPgUQc8bjHOfobKUK88bxzo/sZBHmX3BKbpFfWO8F/hqVelJ5denxXwqAPWK+r8WaJ/m/7GNrB6k95/3+5hox7pqn+Maxlki59yP4hsct4Y4zn2z678M37yjrFqNNxPOGdCf8Y5E/qzO1SGdrxGZejPVpPvaKdLRA/lwLZnf7YMuEbxFX/d058pXJjf+a6XGr+h9nK9q3xM812Uoxa5lwvnbnlf0CXCxb+59gUZ3J+HdzSZLnG8sC6vEi7+zaXLq4+ZjrIbd6lM9RtlUzgOxrHhu5fr4bSW0Xcvl8H/FMSTrzj2PSCP8T872+m7l8vgv9PTJs2kyP3+FFuDcmPdtL1cHwa5+yQ31nft5eI4Wp13de21DLwH3HvOifeAh3lXtHsPOL77juecAq0BDmIxtQao7APOOaWdHTBcrjkn7CfY17jMpZuqqH+RyqqCjrJVbOPUOTFlq3z2cik9log/hHft5VLjUq19G1z8257jnPtl4sf0l2ZLeH3e4P852JJPOGwo2xLX+firgk/V9/h8/A2BM/C68WAcLWfoLy1O/ahn7lj0urHxNuq6MefkgfaaDnJyfK+Z0iufeTf4H/TUq9KTS6/qLlbUAes17d12TIfbwOpNev/9eI6c/CLIFj/lfhDZZE6O/m4G6KaNMdd+XN8x5prL9tnLhf6K992gHWdfhv7K7CbaaZfvwrbnnPwi4BrFV3wyR/yLe7neT3nvKcSV3nu5JiGuVPGHmvewumqNDf002yyfdRXEZe0aOLYd7OXCO4NGWQv5OU/foXThivlc++2QNxXr8Bob9qcrKXxhHI7waWeN/k+G3K74TNGeFvCLKbQ/D3Hkp6fT6bnOBHAceVPwqfwyx5GuMwE1KAsR76yCflR8UYNyhP9MDj+M+9Tip9wPIptcu8ZYiP1wDcqmBTyPq1UBXwMYXrNdhTJe18O+xu/qG3UuDeu75uxujEnHtbdS4cJxwb4d4wQFz/dPGfwfZPQ/n/OgGOdwfOQb5+Ac/rOJoeN4If6O82p/krLmjmPQx4bdgzn6qeT7qDaMbRHqnufV1F3DgfMy73k1o1+Jhu1tiPhHxeIqdjf9BHq3hPOMpNrzjvNq2GbIn+FyzaupMVoSZS7duM6HjEInKpjO0ph01LmFSfOHrrzUt28bfNYcBe/lwr7m8od838+ofsp1RhPpLI1JR+09Uv6Hc+lLgodR17BwT5T5H5ccrr1cyher87jsizcSuqPs5boKtB5S/K3O3fJYTPOVaTlWE3zl8+V0euwrlT8c9VwH+9gVgfM0z1Ci/lajk/oz+DdntHGJ6keRXyydtQ/UdSaGzwCjXifhDPBVwSufAX6rp16Vnlx6vSPgUQeuvYd3iD7PI9fgu9Wb9P77nIeNeqSr/jGumyBb/JT7QWQ79TPA7LOwn3DOhP6Mcyb0ZzUqc52bQX+G+6+eJ3/mmv9S/kztTfbxFe/09GcKF+Z3VlYlOqineSoz2L85e4zvGymvLGL/kbrjm/fyXCFc/JtrL4/BFbnP6Ut3aT0eOmrMsh1Q/Wbcu7TQtpy4UyrFDqAPwLppd2n9t5ljnO+jGBDr81llG6+YD1eFHDy+v8vTjqTtv+qT3FUht2v/lcH/U5D77znk5hhW7VtxzSF96S6twTOxd2mpXD3vXVqGy/cuLexrXOZjq1yxx2VBR9kq111al6jMdZeW2pvsmiNR91Li+OL9V2pcFrmX+Um+S3PSYgm1fsq6HPWOY6x/7THTUfE877923aWJ4439v1oXzvKDP1LWMqb5Qfb/A32BH/w3Dj/I88xq/7XL/xv8j43p/3+8IP//KZj7+o8kN9bn+S2UkeewcJ8Gj3UVUwfeg+Ht/41+JRoeSyH8v4rHXfuvA8UjbVc8ouwD+n+15xpxTcL+60uCjrJVbOPQVnHcgHaA/b/aT630yLIivMp3Fh2yqnl03H/9jbT/Wo1f5ifNlvCchcH/AtiSP3LYULYlyl6MuseacxC13+Zxx9Gj7hN+3XO+t+g1OJ99wq41j8Dr2IN59FqCL02vqHeE/4ynXn3zH+YH4VEHrFe1dyoSdLgN8NzwJPff384xj36a+6/R380A3bQxpvZMjDrG1Dq3a+2X/Y7vXDn7srT56D9KiSNRjnH2X6f5ij/JEf9WgdaP07z3KcSV3vuvJyGuVPEHz8lhXbVPgvdfj7r3BXHxGmyg2Haw/1rdiYZ9i9/pavBPJUBZvkPpwhXzuc53KN+h7gZQMVLaPiiMw9U8O69zXc6Q2xWfKdrTAn4xhfYO5OLXZ9LphdhjzXHkiqgXeD17EO+o9WzkZzU6qT+Dv53RdsoPXwPZ4qfcDyJb+7TXs3mtCtezeS1N3ctYiobHts9cGtZ3zdmN+x67m4KOCxeOC597stVdj7yW1srof6PuCeD4yDfOwf0C+wlP6r2COK/25TPHv7NfGMWGvQA27Cty2jDXuyN4Xo3v4o+fwHmZ97ya0a9Ew/Y2RPyjYnEVuwc+R9N22TB1/yHOq6k914jLNa+mxmhJlLl0o9a5lnLQiQqmszwmHfX+90nzh6681LdvG3xNwGPf4v3XNShz+cNx35HqujO4yHeeLgs6o+6x5jNbvmtYuMdsfyZbDleerXzxjJCNffE3ecSCabhwfU35J473VY6lYhvOsd4NvvIfzaTTC7HH2rWHmOeNA+0THrpzOU1/afuE3+uZo6rYuAa/jbpP2PXegTtUVoMynje+A2Uh8qinE3xpekW9I/x3eepV6akGv7Fes+77d93v+jTRr9Hf2AZWb9L77/fkyFfxTpL4KfeDyCbnjVeBN/bPrvwzfvKOsWo03E9qVOZ7N8cqlak91sqfmd1EO10ieigHtj37MzwbO4qv+Cee/kzhwvzOZ2/HJeDBZ27b4L8f/NlPOOi59lTmXetk26HmvR73udNR1+te87S7RcfCPut1rtjjNO9lmBG88r0MP+Sp11o0rCeXXlcFfA1gWK9qDjMSdLgNrN6k998fzeHPMCaKn3I/iGydUd/d4FrXjJ+8Y0zlm64czLVv1+WzXO/aQb/wE+TPRl0HvQS4RvEV/zVHfobroH1aB+V73OLnS+8UdO8hP813Clq7nuY7BTEmSbtb7+c9fUfRd0O6zlw/jncK/l/PdVDXvTd53yn4BYgjX59JpxdirZPjyJqod5rnp5GftLzy13P44dN8h9Iq8MZ+uOi8spZ8V3ml6x1Kq0Rn1DOFWN91dvHPwjsFP+e5Duqbm+d9pyDm7W9K9gFnvVPQLnJmG4Zj0MeG3YezytO0B9nXhrneKcjnC/k+gvgJnJd5r4Ma/Uo0bG9DxD814gd1Fz+8Droahp+2y4apeypwHbQGPCF/huvP6zsFV8aksyLoPEnvFKx5ymvwqwK+BjC8Dop9bRLeKbgyJp0VQWfUtU7eO5XnnYJvms2WoyrwunyxOvvLvngzoZuVZytceM+A8k9FvVOwBb7y62bT6YVY63St5fG8caD1uoGfeDpDf2nrdW/JaOMS1Y8iv1g6a72Ox61ar1N6fUzvahzkUc8k+NL0mvauu7d56lXpyaXXZwT8qO9qjAQdbgOrN+n996s8bNQjXfWPcZ3mOwUxnmP/7Mo/4yfvGKtGw/1klcp8z8jcpjK11qn8WS35jna6RPRQjhDvFPwbnv4s7Z2CEeWBWedG1ft98H0Ieyn4DDZ+bPyhjz2NPMzoV4TsIfIwtZaA+rGxEP9mffCbeg+f633H13a/5YWD7sMXXnrxq3vf9nLv2x+iGIi6LMRENSDMFPwWw1ygv+cFXEQwXM8llsGrY84XAMamENRSedoxZytXn0aHf+OrOZCH6x4yXhC41JUZF4hn1rP6NDppPBuuiwXiepKujJmEq2nMjKErKTqMQHomB/6G9CtCJyHM2BVPvaorEDmFwO2vDwrhs9VRbpyXgUa9vhlxzQfAZWXqdXhWpuyTleGRTE7BcZnS9zqdD1I4g1dQqmVtvk7H4D8LqeyHKJXFEIKXUq0++rNZIQfTe9UzHEqT+8MkdzlDbp7uNvj/AnL/M5JbvaLVdaWH0hf7FJPfyuPHxtg5+P00wiyjX4mGx08I+3SO+EHdxQ9Pdz8Vhp9BGrgo+JkX/OB0N7YZ8me4XNPdapyURJlLN1VRf5bK1OuFla1iG6eu+1G2iq/TMdgocuuRZUV4Ne4XHbKeA3wsawzzMUp3ykCTxyHSPo1xaPQrQt4Q41C1F+qH4wT1ythqpPutfU9rZ1efRlxzBeLy6X++uKzdTDdnoAz73yeo/2F7W514jKg+fjGF3zRfxz7X4H8KfN1vjuDrlD+zsnnBp7KNruvoDKeNv0Bx8cDOX8nQ3+XopP4M/mc9p1VVPoNTCtz/XHE68ma6Ow9lvHyAerV2DJz/DKar8ZUiSq+od4T/RU+9Kj259KrifdQB61W9JiwSdLgNeFlgUvvv6zmmq2dBtvgp94PIJqerzwNvM0A3bYwhfN4x5nOVoG88dZ7K0I5zrIXxlLUD2ukS0UM5XNucZwHXKL7it3PkZ+jvPkz+zpX34Fgq2i4hvSjS8ZbRf1x5z3nih/XD8dZlwataOuG4ZNR5NbV9P7BNa45r074whk925SRF+mTsT5dS+ML4C+F5fA70kASNWducVXymaE8L+MUU2s8mtGPVz51Jp8dxJOqP48grgk8rU9e6q6sH8GrC+O+Q18jF/7Kumknb2nIho+2UH54H2eKn3A8im9zWdR14Yz+stgMhPI+rrNdY8/FZPD5gY0z1NV5TmBd01HhXawrzDjqXx6RzWdBx4VJXV7AfmU2B59cRGfydjP6n4hyex8Y4h+e/feMcfG3g1yQ8cbwQf8d537Uzx7+zXxjFhn092LDNnDaMbRHqnud91asJeG2l4LHsPd9k9CvRsL0NEf+oq1TUq6hMP9fD8NN22TC1LoTzvmmvbcBX2NtvPO+rxmhJlLl0UxX1r+SgExVM5+qYdNQa5KT5Q+Sf/aFv3zb46wJeXXWn/JTLH/JVP6P6KdV3FJ2rY9LxXWO9QmUXBA+jrrGaLUf/45LDlWcrXzwjZGNf/LxHLJiGC9d/lX/ieF/lWCq24RzrXeArv/tMOj32lcofqpie433XdYtqv87jft1Gmv7SrkA5zGjjEtWPIr9YOutKYh63riuJUa88bxzoiPMgj1Lb7+cFr7yl8kVPvSo9ufSadcSZ9aqOOEeCDrcBvpJ2kvvve3Pkq7h/KH7K/SCyyXljjOfYP/teMTDqGFPHWDln8t0zxFun0Y6zr0N/htcAfndKnoRyYNuzP7sCuEbxFd/j6c8ULszvbGxhe/AR4zXgYRp+j6juDMF/H/izjznosT9bgzI+YrYu+LSyTSjjI4L3BE6zB3UoC2EPGhn6q0cn9Wfwr3ra3Tr8Nk3yxg+PtYaArxNM/Jju7kNZg8pQr+zPGlAWwp81E3xpekW9I/xHPPWq9OTSa1PANwgmfkx3qPMm0b9Hf2MbWL1J77+v5fBnayBb/JT7QWST/uw+8Mb+TI0xhM87xqrRcD+5R2XozzivQx95n8rQjq9TGR6NNLuJdrpE9FAObHv2Z2uAaxRf8aOe/kzhiml9qnQSbg3qWh0bL+hDTmMd1OhXomF/F2IecJ34Yf3wOuim4LUqykr0fVPQ2RR0FC4b73OiLMQ6qI0xtGk4hjehHOE/6ek7lC6UzpkfhEcd8HkS7MP3qAz703IKXzhvivC8Dmrw/91zHRRxLTloTwv4xRTab0Ac+bNn0ulxHIn64zjynuBTxTscR9ZFPeuzTSgLEe+0QD/Kp2A8hPC/NLl+WM77ou9kP+yKseKHx1VLwGM7mf6qBI9jTPU1juvWBB013pW/X3PQ2RyTzqag48KF44J9u+ljNgUe80SE/40c66ANKsM4Z5PKlgQPKs65D/xfTzbTc7wQf8d10N+heAj9wig27NbZY5y/l9OG+eS0KpY1Px04X/BeBzX6lWjY3oaIf3zz48B5a9tlw1Qugeug2GbIn+FyrYOqMVoSZS7dVEX9eznoRAXTuT8mnfuCzqT5Q+Sf/WHRcz+8Dop9zeUP7xGdUf2U6juKzv0x6dwXdJT/4RzcN8/mddC0PNv8j0uOKYHX5YunhGzsi5cTull5tsIV0/rpxJAr/8TxvsqxVGzDOdYd8JVfeTadHvtK5Q9VTM/xPvZ/9rENgdP8BMaKIfxEO0N/mA8g/EZGG5eofhT5xdJtAY864HGLcXabylCvPG/chrIQeVQnwZemV9Q7wrc99ar05NJrR8CjDlivqPMO0W/Q39gGVm/S++9bPGzUI131j3HdA9nip9wPIpucN8Z4jv2zK/+Mn7xjrBoN9xPOmdCfcc6E/qxJZWjH2dehPzO7iXa6RPRQDmx79mf3ANcovuKrPP2ZwoX5nY0tPP/K/uwu8KB87hzxaPBfDf7slbPp9Nif3YUy9mdqnk3NDbI/2xA4zR5wLvAg+bs+3jOwB/cz9IfxAsK/09Puqth/A37jsXZfwKMOeM4VY4/7VIZ6ZX8WKL8d+DNcf1N6Rb0j/L6nXpWeXHp1rZUpvaLO60R/g/7GNkCbP8n995tz+LO7IFv8lPtBZJP+DG03+zPXOkUU5R9jKj/boDL0Z3NUVsT8IOZUr5A/M3oohys/uwu4RvEV35kjP5sDWh8snYS7C3WTosF4CbTu6L0OavQr0bC/CzEPqHJs1A+vg64LXquijPu8Wm9dF3QULtNT4LXqwTqojTG0aRiTrEM5wv8DT9+hdKF0zvwgPOrAeFNx0AaVYX9aTuEL500RntdBDf5DGXIr2ksO2tMCfjGF9schjnz1bDo9jiNRfxxHbgg+R1174HXQQOsLg3hH7UdSMQTvR/qByfXD7dPej8Tzna71SexrPB97V9BR4135+7sOOutj0lkXdFy4cFz47HHaEPh5j9OPZPQ/Fedw/o1xDu/NWRI8ZM1Dv07roKgbXAf9MYqH0C+MYsN+FWzYv89pw3xyWhXLcvwTKF/wXgc1+pVo2N6GiH988+PAeWvbZcNULoHroGlrf4bLtQ6qxmhJlLl0UxX1N3LQiQqmszkmnU1BZ9L8IfLP/rDouR9eB1XrhspubRCdUf2U6juKzuaYdDYFHeV/OAf3zbNd66CYZ79+NluOOYHX5YvnhGzsi3/FM89WuGJaH0gMuetcCo/FNF+ZlmP9BvjKp+bS6bGvVP7QtV6rbCv72PsC5+PeL5Omv7RzHr/rmaOq2NgVS2ed8+Bxq/ZoKr3yvPFp7Ce9K3jl/aR/6KlX331OzA/Cow5Yr6jzFtHn/W9q/9Sk99+pZMyPkq9ugGzxU+4HkU3OG2M8x/7ZlX8+kjU6Ce87xqrRcD/hnAn9GedM6M94LzDacfZ16M9w7dLsdInooRzY9uzPNgDXKL7igkdfScOF+Z2NrSrAsV3CM7Qh7NJFkFH59AukA4O/nqGDEtWPAP8s/MZ9Mev9LDwneR7K+K40PGMcQneXQDdKd6hbhK/lsDV4d2H8lPtBZJO5APLJtsbVXvHD7XtJwGM78VoTngU/T7iqApcrflX3mSC84eP7TNYz2kvZPr4rS9GJ+Xgt+R6yXbd36vWS6al/LON0NPyUoRzhmxk6mI+O56Fm+8e/Yx+OnzPJ3zYfz/B4ZhHhtxP6sc52oX8+ghX0Yrh3OOBKKZ+PcIjfykndwdm5/jFMgeNv0E6V/rEepokm8jNF8Px9hn57O/jM+JnvD8s9Db8ZTWvbs1A238/GNSNwVQX8WcI1J3Dhb3ge9S2JTBWiWXDbNLBPxf39TwEMbXwUBYUBAA==","debug_symbols":"7Z3druTIkaTfpa51wfiP0KssFoPWjGbQQKM1kHoWWAh6983KrGSeLCbp5ywj0i0i7GYh7VB53D8rMsycZPCf3/7jr3/5n//6t19//8+//ePbn//XP7/99rd//+WPX//2++W//fNff/r2l7//+ttvv/7Xv338//62fP9/fLge/4///uX37//1H3/88vc/vv3Zevenb3/9/T++/6d8+d//56+//fXbn5P51//+0zcfv/q/CO5L/4s/bQ5N9seRKa0HhnL9ad/up0O7n47tfjq1++nc7qdLs5+OS7ufNu1+2rb76XZnY2x3NsZ2Z2NsdzbGdmdjbHc2xnZnY2p3NqZ2Z2Nqdzamdmdjanc2pnZnY2p3NqZ2Z2Nqdzamdmdjbnc25nZnY253NuZ2Z2Nudzbmdmdjbnc25nZnY253NuZ2Z2NpdzaWdmdjaXc2lnZnY2l3NpZ2Z2NpdzaWdmdjaXc2lnZno1mWhr9tGv62bfjbruFv+4a/HRr+dmz426nhb+eGv93wvDQNz0vT8Lw0Dc9L0/C8NA3PS9PwvDQNz0vT8Lw0Dc9L0/C8tA3PS9vwvLQNz0vb8Ly0Dc9L2/C8tA3PS9vwvLQNz0t/Vsu45PLj2GicWQ++uNgXR7tczI+jXTFuPdr6WzUBqpoIVU2CqiZDVVOQqgkLVDUGqhoLVY2DqgbqWhygrsUB6locoK7FAepaHKCuxRHqWhzfe05FE+8H28cPO2Nuxbz3n01068E+bIspQMWkBakYg1SMRSrGIRXjkYo5f52JH4qxQjE++B8H+/Dhh5dbLRGolgRUSwaqpeDUkhegWgxQLRaoFgdUiweqpeV19/oHYus/kFr/gdz6D5TGf6Asrf+Aaf0HbOs/4Fr/Ad/6D7Q+k0vrM7m0PpNL6zP59DM2l1/N6x8I7lR2t6efyqlbjYGqxkJV46Cq8VDVBKhqTl8EzSM0WyOF5l3v9qJw6+5FOJvio/Dy4uCS7nO2y99dHseGVxU/rnkf7sZeDr3ySOTxxCPPx6PcT69k/IZHmZBHuvP4MMP+wcMs5PHEw0zHI601pGg3PCx5PPFw8/FYDUheNuvL6SdMe+Sx3HlYs+ERpuOR3f16ml+cL/P50w88tn7M4PpTF8KdhyvuI49r4bhGUigc1/E5Xw4Kt7jWzHlzVDiuhxIKxzU7QuHzuZLD1Hv6+frReMznSg6nAHbCqdlR6rXzTc0OU56db2p2zGO+qdlh6nXzTc0OU6+bb2p2mHrdfFOzw9TrcP3pcXh0vtPw6HAd33GUcbjWTCgceLJzXPiEtwiPwpKb8BbhEQ8/4y3Cg/Do5zM7h+HR8xbhM48JbxEe8vAMj0885hvGHYZHP/Utwhfny3zDuMPw6Hu98+h7vfMYer3zGHq98xh6vfMYeOfx6WJ1fgeSwXjwzuMzD955fObBO4/PPHjn8ZkH7zw+8Yi88/jMg3cen3nwzuMzj17vPJ7+HpdWeIy93nmMvd55jL3eeYy4ZifF+0XF5e1btxHXlRwXnnDtg1A47jovFI67IAuF466cQuG4K6dQOO7KKRSOu3IKheOunELhva6cqdeVM/e6cuZeV87c68qZe105z28EqFV4rytn7nXlzL2unLnXlTP3unKWXlfO0uvKWXpdOUuvK+f53TS1Cu915Sy9rpyl15Wz9Lpylk5XTrd0unK6pdOV0y2drpxu6XTldEunK6dbOl05HfCWsULhna6cDngTVqHwXldO4G1NhcJ7XTmBNwoVCu915QTeelMovNeVE3gzS6HwXldO4F0nhcJ7XTmBd50UCu915QTedVIovNeVE3h7SKHwXldO4A0XhcJ7XTmBtzAUCu915QTeFFAovNeVE3ibPaHwXldO4P3whMJ7XTmB98PLaxEuh7QpHHflFArHXTmFwk+vnNbbtfAShcJNKfej7RI/vOluXh69+PU9cLMEl56O/17++X3mdMs3fZdv+y7f9V2+77v80Hf5se/yU9/l577L73vVDX2vuqHvVTf0veqGvlfd85t16Zbf96ob+l51Q9+rbuh71Q19r7qx71U39r3qxr5X3dj3qnt+Z6Om5Ye1kMt/DlE63tj7rM+Y9Cjc3UZyEXuJrtsr9npet1fsxf+LvQZz32Hv8h/Npldsp1C3V2xbUbXXhO1BvthrzPdfN2mxm16xDUvdXrHdTd1esa1Q3V79RL0O5ZuEXofyTUKvQ/kmodehfJPQ61C+6bjXPJFvyhP5pjyRb8oT+abzu5p11OtEvimDrzkfxqBxKf/6eQxasC83MXwoP5lTx1/bxb7ifLHdlNZ/yKlsJisF+4pTt1fsK07dXrEd/Rd7zXn9xkZZwsdetwfn9ZMPObifsPgF2yQ2xHK5ytvHb4cNmKEu8TXBDLUY1AQz1MrxJTCHN9z8MtQyUxMM9vRQEQz2qFERzLQuRgKDHSj1wBjsiacimHmdrwBmXucrgJnX+QpgPMG8BjOJ8732OomZvfY6iT+99jqJ5bz2OpKLtIt9/Lrb9GpHMoZSryN5PanX0/bN2fvHjaMrSejVmnBfAa3NVuxVeMPAn9+YTrd833f5oe/yY9/lp77Lz32XX7ou//wWdrrlm77L73vVddirbs33v/z5ffA66hV7Pa/bK/biX/P9L++wnULdXrFtRd1esT1IzWdAvcc2LHV7xXY3dXvFtkJ1ex3KNwm9+ol6Hco3Cb0O5ZuEXofyTUKvQ/kmodeJfFOYyDeFiXxTmMg3hYl80/mdKjvqFXx9PX6vz0fsS2vl9/p8xL661nz/y0fsq2vdXrGvrnV7xU4vWu/1RWxDrPeWVhrqEl8TzFCLQU0wQ60cFZ9uTkMtMzXBeIJ5DQZ7rKoIZloXI4HBDpSKYLCnu4pg5nW+x2DyvM5XADOv8xXA0PnugJnE+V579RP1Ook/vfY6ieW89jqSixTe/8ojGUOp15G8ntBraXkdvv6B0PoPxNZ/ILX+A7n1Hyht/0BYltZ/4LSZ9utZEy//JoVT8mLU1gu/iY9T7OU32EN094evQ/x+xPFPL2l9VHspVjj6K5+Ct+5Ow9n04Y57eXFwSWt/y/Io2YZX6OL67fqUPh56FcZSGExhHIVRE6bkH8cm4zfCeAqjJ8ydXLJ5I0ygMFrCpLWGFO1GmEhhMIVJFEZNmGJ+HJuX7eKfKYyeMPeCszUbYQqF0RImuzu5vL2Und/QlMJUEGabYwyTvyiMC/fhiXPFfRTmSpARXSa4PvX6kiCz9CcImiOCngRPEmQ6PUuQMRJzVGkYI0GFYYzEnCEbxkjMGbJljMQcVVrGSFBhmE4xZ8iWoRdzhnx+M3AK02SGbBnRMWfIlsn/5AzZMqKfnCFbZumT8zvL0HuSoGM6PUuQMRJzVOkYI0GFYYzEnCGf/2AFhfn/F+ZghuwYIzFHlY4xElQYplPMGbJj6MWcITtmacwZsmdEx5wheyb/kzNkz4h+cobsmaVPzu/Of21oeoJMp2cJMkZijio9YySoMIyRmDNkzxiJOUMOjJGYo8rAGAkqDNMp5gw5MPRizpDPf4GOwjSZIQdGdMwZcmDyPzlDDozoJ2fIgVn65PwuMPSeJBiZTs8SZIwUCaZ479Bl84GgvxFk3jtLkMHsLEFPgicJMuqcJchMcpYgM8lZgswkZwkyk5wkmJhJzhJkJjlLkJnkLEFmkrMEPQmeJMhMcpYgM8lZgswkZwkyk5wlyExykmBmJjlLkJnkLEFmkrMEmUnOEvQkeJIgM8lZgswkZwkyk5wlyExyliAzyUmChZnkLEFmkrMEmUlEgnml4XJIG4LMJGcJehI8SXCcTGKXlaA1zwSvnY6THaROx/FXdv2HbmyJ0tGl2HuLS/zwnrx5fcb59eVtswSXno6/cIzLOC5Ll+M4XkuX4ziOS5fjOL5Ll6MnxyocB/JgqhwHcniqHMeZEetyHGdSrMuReaYKR8M88ymOYSVy+c8hSsdfKljbTA+Czt+gM/woQGdSUoDOWNUCejDrsC8Ys4HuCf390BnYFKAz3bWAHvP9101a7AY6o6ACdOZGBegMme+HbunTPwf9Q7K/jEM2yX6gj9435RjDB47JnDr+yp2epAX3lNZrTCobI2jpSRSg05O8H/pAHzpHgp7z2mZZwkfo24Pzuo9rDm6jj6c+yvpcvJF9/HbYKERjhK4QLRS6QvRb6god33kZ6AvPoyrE6RK4QgN983lUhZiG0BXiOBddIT6jga6Qp0LgCnGmgK4QZwroCnGmgK4QZwrvVegKnWOC90Mf6DPdHUFnmFeAznzeALpd7OPX3RY6I7cCdE/o74dOUw/9uMpAXx3u91a7WQtf3Eahgb4oO6pCtFDoCtFvoSvkqRC4QrzFga4Qb3GAPzY50BeJR1WIeQhdId4PAVdooC82j6oQZwroCnGmgK4QZwroCnkqpK5QXB8oWvJmr4+Bvsg9qkKcKaArxJkCukKcKaArxJkCuEIDfXF9VIU4U4DKQy8U4kwBPLEO9EX6URXyVAhcIc4U0BXiTAFdIc4U0BXiTAFdIc4UwBUqnCmgK8SZArpCnCmgK8SZArpCngqBK8SZArpCnCmgK8TEiq4QEyu2QmlhYkVXiIkVXSFPhT6lkHu8axq9ezr+ypGeuA5HOtc6HHnPqg5H+vQ6HOmmq3A09Lx1ONKZ1uHIOx51OPK+RB2OnhyrcGSeqcOReaYOR+aZOhyZZ+pwZJ6pwtEyz3yOo10eHJ2Tjj/8ckmyDD8toD8AXho2G+hMSgrQGasUoHtCfz90BrYm0FN41LJdSOmmW0APZj08mO2/dFrv90N39OkK0OnTFaDTpytAp09vAf1yyP3wGJcNdE/o74dOn64AnXdhFKDzlo0CdCZSBehMpO+H7plIFaAzkSpAZyJVgM5EqgDdE/r7oTORKkBnIlWAzkSqAJ2JVAE6E+n7oQcm0ibQ8/oCe1rsBjoTqQJ0JlIF6EykCtA9ob8fOhOpAnQmUgXoTKTvhx5pGVtA93aF7v3TE17bg7O/v5+Ug9vowzVXWx9h17DIBRpdIa7m6Apx6VdX6Pg12cjJNbpCHHODK5Q4E0dXiGkIXSFO29EV4mgeXSFPhcAV4kwBXSHOFNAV4kwBXSHOFN6r0BU6xwTvh56Z/BWgM8wrQGc+V4DOyK0A3RN6C+iPz3/5D5XfoTMYK0Bn1lWAzviqAJ2JVAE6E+n7oRcmUgXoTKQK0JlIFaAzkSpA94T+fuhMpArQmUgVoDORvn8z6MJEqgCdifTt0PPCRKoAneHoNPQrR+adOhw9OVbhyFRShyPtF/Lr8XmhU9N/tdc8PmvrNgoZOgx0hehd0BXyVAhcIfotdIU4MkZXiPNl7G1asmEaQleIeQhcIcsxN7pCfEoLXSHOFNAV4kwBXSFPhcAV4kxBX6G4bmCwZLtRiDMFdIU4U0BXiDMFdIU4UwBXyHGmgK4QZwroCnGmAJWHXijEmQJ4YnWeCoErxJkCukKcKaArxJkCukKcKaArxJkCuEKeMwV0hThTQFeIMwV0hThTQFfIUyFwhThTQFeIMwV0hThTQFeIiRVcocDEiq4QEyu6Qkys6ApBO4V0PzikD3Xs/HQoK8RoytPR106hp/g1O43Q18WvdGrN4zyysYhHh7Ie/eGBj72zzpd1f8oluPR0/JUj9NWrI47QU7GOOHpyrMIResLUEUfoOVBHHIfxYMoch3F4yhyhZ1P9cEzQE6SOODLP1OHIPPMpjmElcvnPIUrHH36VPCeGHwXontDfD52xqgX04x33EzOYAnQGNgXoTHctoMe83h5Ky+YlycQo+H7omblRATpDpgJ0T+ifgv4h2celbJI99tfdcTjG8IFjMqeOv3KnJ2nBPaX1GpPKxghif+B9UOjYH3gfFTpnhy2g57y2WZanJ+K2Bx9+Lgr7u8FT6CM83oj9kWEqdFGIFgpdIfotdYUO77wU7G8dU6GLQpwuoSvEhyPQFWIaQlfIUyFwhfiMBrpCnCmgK8SZArpCnCmgK8SZArhChjOF9yp0hc4xgQJ0Jn8F6AzzCtA9odeHbhf72OzFbaEzcitAZ4pWgE5Tj/y4SsH+Vvwkt9rNuo3Y4rYK0RWhK+SpELhC9FvoCtGcoSvEWxzoCvEWB/ZjkwX7O9dU6FvB/s41FbooxPsh6Arx5gm6QpwpoCvkqRC4QpwpoCvEmYK+QnF9oGjJdqMQZwroCnGmgK4QZwrgCmF/55oKXRTiTAFdIc4U0BXiTAEqD71QyFMh7MSK/Z1rKnRRiDMFdIU4U0BXiDMFdIU4UwBXCPtL5FToohBnCugKcaaArhBnCugKeSoErhBnCugKcaaArhBnCugKcaYArlBkYkVXiIkVXSEmVnSFmFjRFaLb/pxC7vGuafTu6fgrR3riOhzpXOtw5D2rKhwTfXodjnTTdTjS89bhSGdah6MnxyoceV+iDkfmmTocmWfqcGSeqcOReaYKx8w8U4cj80wdjswzn+NolwdH56Tjj79ckhl+WkB/ALw0bDbQPaG/HzpjlQJ0ZjAF6AxsTaCnsEIvm4W00E23gB7Mengwm3/phdZbATp9ugJ0+nQF6J7Q3w+dPr0F9Msh98NjXDbQ6dMVoNOnK0DnXRgF6Lxl83bol4oYSTWoM5NqUGco1aDOVKpB3ZO6AnXmUg3qDKYa1JlMNagzmmpQZzZVoG6YTTWoM5tqUGc2bUI9r2+zp8VuqTObalD3pK5AndlUgzqzqQZ1ZlMN6symGtSZTRWoWzrHFtS9Xal7//TY1/bg7O+V5OC2AnHh1RboeC+xi0RcpeEl4pIOLxHXf3WJDt+fNYvjIBteIk694SXiiBxeIqYieIk8JUKXiJN6eIk4XYCXiNMFeIk4XYCXiNMFdIk8pwvvlehGnQMDDeqcAWhQZ6zXoO5JXYE6w7cGdebpJtQfHwrz33v7mTojsgZ1pl4N6gyyCtQDs6kGdWZTDerMphrUmU01qHtSV6DObKpBndlUgzqzqQZ1ZlMN6symb99D+vILzKYa1JlNNagzm2pQ96R+lvoNJINPJZDMMpVAMp7UAZnowrBfpE80bPqvAJvHZ3HdC4k8JUKXiA4GXiJ6I3iJ6LrgJeIEGV4ijpvRN3XJTEXwEjEXwUvEqTe8RHx8C14iT4nQJeJ0AV4iThfgJeJ0QV+iuO51sOTttsuZ0wV4iThdQJeocLoALxGnC/AScboALxGnC/ASeUqElIteScTpAnp0LZwuwEvE6QK8RJwuwEvE6QK4RJf6KRG6RJwuwEvE6QK8RJwuwEvkKRG6RJwuwEvE6QK8RJwuwEvE6QK8RJwuoEtkGF3hJWJ0hZeI0RVeIk+J0CUaxnSbC7n7T8ewPB19bdUOM9Q3OeX7TxfvpaPL49/uEr34r9GXdafHJbj0dPwN5DD+RRvkMC5DG+QwXkAb5DArtjbIYUbC2iCHGdxqgxzH6SmDHGYIqg1ymFGlMkjHZFMJJJPNp0CGlcj3L7pE6fjjr38bxxikQZ2ZSYO6J/UG1I93sTeOaUyDOqObBnXmvBbUY17vo6TFbqkzFGpQZ4JUoO4ZNzWo069/jvqHkB+Xsg35nrbkUyBj+AAymVPH38DTmbQAn9J6mUll6wc9nYkGdToTBerjfL8einrOa5tleXqGbHvw4ZeYzDif/+5WIOmJwHG+FT6uRDRS8BLRdalLJNyKGeeT5cNKNM73zceViI9MwEvEVAQvEYe78BJ5SoQuEacL8BJxugAvEacL8BJxugAvEacL75XoSj1xYKBBnTMADeqM9RrUmdQbULeLffy6e0Hdk7oCdeZpDerjROQS8tqplQr56q5J4tucaZwgqwxynLipDHKcUKgLMo+T85RBjhPdlEGOk8aUQY4TsJRBeoKsA3KcGKQMksmmEkgmm0+BrLt3R2YM0qDOzKRAvTBgtaAu7N1RmMY0qDO6aVBnzmtBXdhFonhSV6DOBKlBnXFTgzr9+ueoC/vU2HE+n9wWZO19auw4H0WGAn+8d4ddPKkrUKcz0aDOSWIL6tX2qbHjfKKzW4GEHTbsOJ/oHFciGil4iTwl0pbo+FbMpVJKhC4RJ03wEvGRCXiJmIrgJeJwF12igT5zPaxEnC7AS8TpArxEnC7AS+QpEbpEnC68V6IbdQ4MNKhzBqBBnbFegzqTegPqwt4ddqAvsfdEnXlag7ondeiHWAb66nW/t9+NX3/bvZCI3gheIhopdIkG+iDxsBLRosFLxFse8BLxlgf6A5XeUyJ0iZiL4CXi/RF4iXgzBV4iThfgJeJ0AV2iwOkCvEScLuhLFNfnjJZstxJxugAvEacL8BJ5SoQuEacL8BJxugAvEacL8BJxugCVi15JxOkCenSNnC7AS8TpArxEnC7AS8TpArxEnhKhS8TpArxEnC7AS8TpArxEnC7AS8TpArpEidMFeIk4XYCXiNMFeIk4XYCXiNEVXiJGV3iJGF3hJWJ0RZco03R/TiL3eB81evd0/A0krXElkDSwlUB6gqwDkn69Eki66kog6X0rgaRDrQSSt0DqgCy8UVEJJJNNJZBMNpVAMtlUAukJsg5IJptKIJlsKoFksvkcSLs8QDonHS98+6QwBrWg/gD4/d2ZLXVmpvdTdwsDlgZ1pjEN6oxuTainsFIveUudrroF9WDWw4N58W+dFlyDOv26BnX6dQ3q9OsK1A39egvql0Puh8e4bKnTr2tQp1/XoM77MhrUPakrUGc21aDObKpBndlUgzqzqQZ1ZlMF6pbZVIM6s6kGdWZTDerMphrUPakrUGc21aDObKpBndm0CfW8vu2eFrulzmyqQZ3ZVIG6YzbVoM5sqkGd2VSDOrOpBnVP6grU6RxbUPd2pe7907Nf24Ozv1eSg9sI5Lnwagsk7DXmPFdpeIm4pMNL5CmRtkTHr9M6z0E2vEScesNLxBE5vERMRfAScfiOLlHgpB5eIk4X4CXidAFeIk4X4CXylAhdIk4X3ivRjToHBhrUOQPQoM5Yr0GdSV2BemT41qDOPN2E+uNDYv57bz9TZ0TWoM7Uq0Hdk7oCdWZTDerMphrUmU01qDObalBnNlWgnphNNagzm2pQZzbVoM5sqkHdk/r7N5JOzKYa1JlNNagzm2pQZ0o6Tf0KMjP4VALJLFMJJONJJZB0Ydgv0mcaNv1XgM3jM7nuhUT0GegSFToYeInojeAlouuCl4gTZHiJPCUC39SlMBXBS8RcBC8Rp97wEvHxLXiJOF0Al8gvnC7AS8TpArxEnC7oSxTXvQ6WbLcScboAL5GnROgScboALxGnC/AScboALxGnC/AScboAlYteSGQ4XUCProbTBXiJOF2Al4jTBXiJPCVCl4jTBXiJOF2Al4jTBXiJOF2Al4jTBXSJLKcL8BJxugAvEacL8BJxugAvkadE6BIxusJLxOgKLxGjK7xEjK7oErlxTHdOd4lM8V4UtNhV0OhliR7bHy4xGen4nNc2yxKOJTrcu8S7cSx3rwIJLyN7N46fG1aicfzcsBKN4+eGlWgcPzeqRH6cWxHDSjTOrYh+JTpORZ6pCF4i5iJ4iTwlQpdonAcdh5WI0wV4iThdgJeI0wV4iThd0Jfo+E3XwOkCvEScLsBLxOkCvEScLsBL5CkRukScLsBLxOkCVC56JRGnC+jRNXC6AC8RpwvoEkVOF+Al4nQBXiJOF+Al4nQBXiJPidAl4nQBXiJOF+Al4nQBXiJOF+Al4nQBXaLE6QK8RJwuwEvE6AovkadE6BIxusJLxOgKLxFN9+ckco/3UaN/3l7mCjLTGlcCSQNbCSRvYlUCSb9eCaQnyDog6X0rgaRDrQSSt0AqgeSNikogmWzqgCxMNpVAMtlUAslkUwkkk00lkJ4g64BksvkcyK9td23s+gabSY/K71PgwhjUgvoD4KVhs6XOzKRBnQFLgzrT2Puph4XRrQn1FFbqJW+p01W3oB7MengwL/6te1JXoE6/rkGdfl2DOv26BnX69RbUL4fcD49x2VKnX1egbujXNajzvowGdd7E0aDObKpB3ZO6AnVmUw3qzKYa1JlNNagzm2pQZzZVoG6ZTTWoM5tqUGc21aDObKpB3ZO6AnVm0ybU8/q2e1rsljqzqQZ1ZlMN6symGtSZTRWoO2ZTDerMphrUmU01qNM5tqDu7Urd+6dnv7YHZ39/hykHtxWIC6+2QMJeY8FzlYaXiEs6vERc/9UlOn6dNngOsuEl8pQIXSKOyOElYiqCl4jDd3iJOKmHl4jTBXSJAqcL8BJxugAvEacL8BJxuvBeiW7UPakrUOcMQIM6Y70GdSZ1DeoM3xrUmaebUH98SMx/7+0n6pERWYM6U68GdQZZDerMphrUPakrUGc21aDObKpBndlUgzqzqQZ1ZlMF6onZVIM6s6kGdWZThY2kE7OpBnVP6grUmU01qDMlnaZ+A8ngUwkks0wdkJnxpBJIujDsF+mzp0DqrwCbx2dy3QuJ6DPgJaKDgZeI3ghdokLXBS8RJ8jwEnHcjL6pS2EqgpfIUyJ0iTj1hpeIj2/BS8TpArxEnC7AS8TpArhEceF0QV+iuO51sGS7lYjTBXiJOF2Al4jTBXiJPCVCl4jTBXiJOF2Al4jTBahc9EoiThfgoyunC+gSGU4X4CXidAFeIk4X4CXidAFeIk+J0CXidAFeIk4X4CXidAFeIk4X4CXidAFdIsvpArxEnC7AS8TpArxEnhKhS8ToCi8Royu8RIyu6BK5d69FeX2v0xp7LJEL92P9Uh4/bO2rMspdzfRhAxATXpXs4/13g12ejr0hCUTyM5JIJD8jSUTyM5JMJD8jKUTyExK/zIckrMbkYjuEY82SzLpi5wfA71xuAA0BngNoCfAcwDc/HmEfhtcVfwzQLL6sO1UvwaUnN30r3/ddfui7/Nh3+anv8nPf5Zeuyw9L3+Wbvsu3fZff96r77q+Nf638sNZx+c8hPpX/ctJ49D37GKCX6Mq9Qq/nlXuFXvy/2Ovxzv8xQDuFyr1C24q6vUZoD/LFXmNefzwt29f+IrRhqdwrtLup3Cu0Farcq5+o15F8k9TrSL5J6nUk3yT1OpJvknodyTcJvaaJfFOayDeliXxTmsg3vfsrjaq9TuSbEvb6+mEMGj/cwV3HoBn60hrDh/KTkaQ6PP7WLvTV9YvtprT+Q05lO1nJ0FfXyr1CX10r9wqdXr7Ya87rM9JleXoeeHvw4Vf1YoE2xA2xSM9Ul5Eu8VXBjLQYVAUz0srxJTDCDbd3f6GmHzDQjl8TDPRYVRPMrC5GBAMdKDXBQE939cCkZVrnK4GZ1vlKYKZ1vhIYOt8dMH4KMLde5zCzt17n8Ke3XuewnLdeB3KRdrGP/Qvci14HMoZSr2Ygryf16mb1tYeD7uTmnecefoU9vXvzkH7ATDudk8BMO52TwEw7nZPATDudk8BMO507vpmWPO9L74DhfekdMLwvvQNm2umcBMYTzGsw8zpfAcy8zlcAM6/zPfysaMLeqkUTzLzO9xgM9vYymmDmdb4CmHmdrwBmXucrgPH0Ma/B0Pm+NnjYGwRpgpnX+Qpg5nW+AhjOfF+Dwd7USBMMZ747YDjz3QHDme8OGE8wr8HQ+e6AofPdAUPnuwOGzncHDJ3vazDYWzVpgqHB2wFDg7cDxhPMazDYy7V7PCcX/fPXE2/lYy+qYvnYS59UfsYezYjlY6+vYvnYq6BYPvZaJZaPvaKI5WMHe7F87Pgtlt/3qpv7XnVz36su+OZsYvl9r7rgG52J5WOvul/7WrqwzwL4DmNf6/VRtrHRbHvFXs/r9oq9+NftFdsp1O0V21Z8sdcU1l7L5tqUwbdT+lqvx5+lyuA7JNXtdaT1Vep1pPVV6nWk9VXqdaT19XLI/fAYl22vI62vUq8jra9Sr9gZv2qv4PsY1e11JN8k9TqSb5J6Hck3Sb36iXodyTdJvU7km8xEvslM5JvMRL7JTuSb7ES+yU7km+xQvunw84DZ+ol6Hco3Cb0O5ZuEXofyTUKvQ/kmodehfNNxr+B7SdftdaQ1xz9+3Punuf/24MN9szP4nrbtsAjP02fwPW0VwYx0gawJBnxP24Zgjh/fyuB72iqCGSnfVgUzUhiuCsYTzGswI8XsqmBGyuRVwUzrfCUw0zpfCcy0zlcAA76nrSKYOZzvrdc5zOyt1zn86a1XP1Gvc7jIW69zGMNbr0N5vccmIz5tbySDb8xat9ehHNlxr+Dbp9btdSjfJPQ6lG8Seh3KNwm9+ol6Hco3Cb0O5ZuEXifyTeDbetbtdSLflEbyTcILn+AbjdbtdaKX0cG3A63ba7de4lZ+t/bgVn63K/6t/G4X8Wv54BtZaj2kCL5BZstHzg6/L5/BN39UBDPtUw8SmHmf9xXAzPu8rwBm3ud9j8GAb9+p9yA0+MagimDm9TECmGmf95XAeIJ5DWZe5yuAmdf5CmD4ptsOmHmd7+Fn1HOZ1/keginLvM5XADOv8xXAzOt8BTDzOl8BjCeY12DofHfA0Pm+NHhlqK2Rq4LhHg87YLjHw2swQ+3QXBUMZ747YDjz3QHDme8OGE8wr8HQ+e6AofPdAUPnuwOGzncHDJ3vazBD7bFdFQwN3g4YGrwdMJ5gXoOhwdsBc3q5dvb+FcvoShLAWBPuI2hrP0xadzq9VJwe1ScjHZ9zvB9+mWYfkzl8MLyc36y5Vy7Cw4nFWZLZIeNIZoeMJ5kdMoFkdshEktkhk+Ylc+xm3LRuRiQzsZ85JnN+c/VhyRiS2SEzsQcWyEzsgQUynmR2yEzsgY+fyPMTe2CBzMQeWCAzsQcWyEzsgY/JhIk9sEBmYg8skKEH3iNDD7zj9M7v+D4smYk9sEBmYg8skOEceI8M58B7ZDgH3iETOQfeI8M58B4ZeuA9MvTAe2Q8yeyQoQfeI0MPvEeGHniPDJ3eDplEp7dHhk5vjwyd3h4Z8FXbPZ6li367M3pJ4GurWD/4CijWDz6rEesHX2el+jP4aijWD75mifWDryxi/eBJX6zfd15/5+tv7nz9zZ2vv7nz9Td3vv6WztffAr7+fu3dWmPXh15MypuwU8AX6681+6jb2Gi2zYKv7HWb9TM1C+4Z6jYLbjC+2GwKa7PlxQUKfDWs+EFHuyzgS2fdZodaZ6Vmh1pnpWaHWmelZodaZy+H3A+Pcdk2O9Q6KzU71DorNQue+us2Cz4iqNvsUA5KaNYM5aCkZodyUFKzQzkoqdmhHJTUrJ+p2ZkclJnJQZmZHJSZyUGZmRyUnclB2bEcVF4fbEuL3TY7loMSmh3LQQnN+pmaHctBCc2O5aCEZsdyUEKzYzmo42bR91hut1/50a7cFy5DXcvq7eN+ITPUha8qmaGuklXJDHVJ/RKZw8e8LmSGSrA1yaDvlqtIZqhsXJXMtG5GJDNU6q5KxpPMDpl5PbBEZl4PLJGZ1wNLZOiB98hM4oGvzaJvgFu32Umc6q3ZScznrdlJ/OStWT9Ts2O5vsd2JT5tbzOjb/lat9mxvJnQ7Fh2S2h2LAd13Cz69ql1mx3LQQnNjuWghGbHclBCs36mZmdyUOgbhtZtdiYHFYdyUMLLouh7mFZtFn1b0rrNzvQ2e+rXVNzq953X3+/Sf6u/39X8Vv+0j9McP86IvvVmy0fTjj5xfyEz74MREpl+r8WtyUz8cLBAZuKHgwUyEz8cLJCZ98EI4bFp9A1H9cigb2WqSGbeh4MlMvM+HCyRmdgDC2Q8yeyQ4Qtye2Qm9sBHH3K/kJnYAwtkJvbAApmJPfAhGTPWnsRVyUzsgQUyE3tggQw98B4ZTzIvnZ4Za9PlqmS4ScQeGW4SsUeGc+A9MpwD75AZa1fpqmQ4B94jwznwHhl64D0ynmR2yNAD75GhB94jQw+8R4YeeIfMWLtfVyVDp7dHhk5vjwyd3h6Z06u29fc/EG2JApnvH/q9//ISvUzm8c7WEpORjs853g8vSzgmc/gEuTm/BXSvXITnF41bSGaHjCGZHTKWZHbIOJLZIeNJZodMmJfMsZtx07oZkczEfkYgk0lmh0whmddk/MQeWCAzsQcWyEzsgQUyE3vg46f0zm/WPiyZiT2wQGZiDyyQmdgDC2Qm9sACmYk98DGZQA+8R4YeeMfpBXrgPTITe2CBjCeZHTKcA++R4Rx4jwznwHtkOAfeI8M58A6ZSA+8R4YeeI8MPfAeGXrgPTKeZHbI0APvkaHT2yNDp7dHhk5vh0yi09sjA75qu8ezdNFv91A35/fgV64ffAUU6wef1Yj1g6+zYv3gq6FYP/iaJdWfwVcWsX7wpC/WD57Hxfo7X3/Pf3dBuf7O19/c+fqbO19/c+frbwZff7/2bq2x60MvF2e0CTsFfLH+WrOPuo2NZtss+Mpet1lwG1C3WXDPULdZP1SzKazNlhcXKPDVsObnH00BXzrrNjvUOnvcrF2GWmelZodaZ6Vmh1pnL4fcD49x2TY71DorNTvUOis1C5766zYLPiKo2+xQDkpqdigHJTU7lIMSmjVDOSip2aEclNTsTA7KzOSgzm+73FOzMzkoM5ODMjM5KDOTgzJjOai8PtiWls1rvNaO5aCEZsdyUEKzYzkoodmxHJTQrJ+p2bEclNDsWA7quFn0PZbb7Vd+uCu3Rd8tV20fd4u+W64imaGuklXJDHVJ/RKZ48e8LPpuuYpkhoq7VckMlY1rkkHfLVeRzFCpuyqZoSJ6VTLzemCJjCeZHTLzemCJDD3wHplJPPCt2Uls7a3ZSZzqtVn0bWrrNjuJn7w1O4lFvDU7lut7bFfi0/Y2M/qWr3WbHcubCc2OZbeEZsdyUEKzYzkoodmxHNRxs+ibnNZtdiwHJTQ7loMSmp3JQaFvGFq32ZkcVBzKQQkvi6LvYVq32YneZrfoO41WbTb1aypu9ffrE27197v03+rvdzW/1T/t4zTHjzOib73Z8tG0w0/cW/RNJRXJzPtghERm4oeDBTL9rh+tyUz8cLBAZt4HI4THptE3HFUkM7GfEcjM+3CwQGasHVWrkpnYAwtkJvbAAhm+ILdHxs9L5vBD7rZM7IEFMhN7YIHMxB5YIDOxBxbITOyBD8m4sXY7rkqGHniPDD3wa6fnxtp0uSoZTzI7ZLhJxB4ZzoH3yHAOvEeGc+A9MpwD75AZa7/qqmTogffI0APvkaEH3iPjSWaHDD3wHhl64D0ydHp7ZOj0dsiMta92VTJ0entkTq/aS74PmqNxRiATTVwxftgZx5gf1YT3VuPz/eDoXlQToapJUNVkqGoKUjXnN5muWo2Bqsa+txq3HuzDi2ocVDUeqpoAVU2EqiZBVZOhqilI1fgFqhoDVQ3UtdhDXYs91LXYQ12LPdS12MNci/91+a//55e///rLX3776z8u/5Pv/9f/+f3f//j1b7//+K9//N//vv1fLgf/Pw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]},"visibility":"private"},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"databus"},"error_types":{"3469988399892582431":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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Y1tl26rYlmRbsm1VbatmW3Xbath2hW1X2naVbTVtu9q2a5zPgtlW27ZrbbvOtjq21bWtnm3X21bftga2NbTtBtsa2dbYtia23WhbU9ua2XaTbTfb1ty2FrbdYtuttrW0rZVtrW27zbY2trW17Xbb7rCtnW3tbetgW0fbOtmWYltn27rY1tW2brbdadtdtnW3rYdtPW3rZVtv2/rY1te2fral2tbftrttG2DbQNsG2TbYtntsG2LbUNvute0+24bZNty2Ebbdb9tI20bZNtq2B2wbY9tY28bZNt62CbZNtG2SbZNtm2LbVNum2Tbdthm2zbRtlm0P2jbbtjm2PWTbXNvm2Tbftodte8S2BbYttO1R2x6zbZFti2173DbnO+id71F3vlfc+d5l57uDne9Wdb4v0vnOQ+c7AJ3vSHO+58v53ivnO6Wc72tyvgvJ+Z4h5zt8nO/Hcb57xvleF+c7U5zvI3G+68P57gvneyXW2OZ8h4Hz/QDOs/ed59o7z4x3nsfuPOvceY6484xu5/nXzrOlnec2O89Edp437DzL13lOrvMMWuf5rs6zU53nkjrP/HSep+k8q9J5DqTzjEXn+YXOswGd5+45z7RznhfnPIttp23OM8Sc53M5z75ynivlPLPJeR6S86wh5zk+zjNynOfPOM92cZ6b4jyTxHneh/MsDec5Fc4zIJznKzjPLnCeC+DULufz7M5nxZ3PYTufcXY+P+x8Ntf53KvzmVLn85rOZyGdwu58hs/5fJzz2TPnc13OZ6aczyM5n/VxPkfjfEbF+fyH89kK53MLzmcCnPvtnXvZnfvEnXuwnfubnXuHnftynXtenftJnXs1nfsgnXsMnfv3nHvjnHvFnHunnHuJnHtrgrY591449yI41+ada9XOtVvnWqZzbc+51uVc+3GuhTjXBpy9cmfv2NlLdfYWnb02Z+/J2Ytx9iactbqzdnXWcs7axtH6jvZ1tKCjjRytkO1/aS/g1HrnVT9w+pU2JX9pAOd9554x5x4q554i5x4b554T5x4M554E5xq9c83auYbrXNN0rvE517yca0DONRHnGoGzZ+7sITt7qs4eo7Pn5uxBOXsyzh6Fs2Z31rDOmi5oWynbStvmaEJHIznf91LOtottK29bBdsuse1S2yraVsm2y2y73DZHsBnbKttWxbYk25Jtq2pbNduq21bDtits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","debug_symbols":"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udNJz9zppGfudNIzdzrpmTudFN7ptCH+zPew8E6nDfFnvoc9c6eTnrnTSc/c6aRn7nRSeKfT/UgM73TaEH/me1h4p9OG+DNfYc/c6aRn7nTSM3c66Zk7nfTMnU4K73TaEM++wm6IP/M9LLzTaUP8ma+wZ+500jN3OumZO50U3ul0PxLDO502xJ/5HvbMnU565k4nPXOnk56500nP3OmkZ+50Unin032rPHOnk56500nhnU4bn/kzX2HP3OmkZ+500jN3OumZO50U3ul03yrhnU4b4s98hYV3Om2IP/MV9sydTnrmTic9c6eTnrnTSc/c6aTwTqf74uGdThviz/w9LLzTaUP8ma+w7E6nyHERH6kfxR99hR1jXsWHv9/zDz0PvWj+OMQOl7YQux7C6v7II4dcNk592zjq1vosb/+4i7992EbVT/V5avV1ZvV79Cn9kfpalsvGZX5f/UjXcZ3VLd/0p9/YXta/vqzN+uccv2z/Y97RbF5pNq82m9fI89aw665rvbLf0O/H6l/3fF1RefcPcFu/25vX+vpI5Yb+eXL9gdY/7Z3+WTf058n116n127KcXH+vPGBLrzxgS688YIs1m9ebzTubzRvN5s1m81aveUev5y02muWrcXS+injbuPT9vD/0KEyPwfSwnz+IXnftUsuNz9vB38hLXDeWXOT+niVDLxvX8u7uS29+j+J5GVbneLf1t8N82Lo0Lqdurd8g7HDmxmsld1rJfK3kTivJfjq09XTRhP10aFv/OLl+e52J+5yJRxeUPfFKvhLLXivZ7NmINHs2Is2ejWizZyPa7NmINvvuaY++uD2fdajD9EyYHvbvQmw+C9KErefJ716PbmB73qR6dB3cE6+knPyc0pPrh11DDX5PlPOaqabJjfVE3+Ns/v6q+esasZOz+esasddKHn2ftSeRYq6nVm+nVt/st+m82W/TebMnxt7sibGfPE1N9BPgivDr1rn4xr/XfLPmmfLOmn/Oin76u/Os6Ce/O8+KJg52ntUazYrORn8869TrrOkfZkXnop1nRWeinWdF56GdZ2VnoV1njefKTfdnfa7cdH/W58pN92d9rtx0f1ZrNGuj3BSNclM0yk3RKDdFo9yUjXJTNspN2Sg3ZaPctEcv5WlmbZSbslFuyka5KRvlpmyUm9itoTvP2ig3sdtCd561UW6Ct4TuO2uj3FSNclM1yk3VKDdVn9zkS5/c5Oxm1Z1n7ZObnN2ouvOs1mjWPrnJ2S2qO8/aJzc5uz1151kb5SZ2a+rOszbKTaNRbhqNctPhLa9fOWuj3DQa5abRKDeNRrlpPFVuqmu9xazxYVZ5qty0MetT5aaNWc/dAuNy7hYY36NX9wvfeuXCbr3f1s9+6962/nO/dc8F/da9uWa3y67nNld/n/t0QbfY7Turovvad54V3e2+86zovLDzrOhs8cez3r2XObph9ktnRWeWnWdF55udZ0VnoZ1nfa7cdH/W58pNd2e158pN92d9rtx0f9bnyk33Z22Um8wazdooN1mj3GSNcpM1yk3WKDd5o9zkjXKTN8pN3ig3Hd1u/aWzNspN3ig3eaPc5I1ykzfKTbNRbpqNctNslJtmo9x0dE/2l87aKDfNRrlpNspNs1Fumo1yUzTKTdEoN0Wj3BSNctPRPdlfOmuj3BSNclM0yk3RKDdFo9yUjXJTNspN2Sg3ZaPcdHRP9pfO2ig3ZaPclI1yUzbKTdkoN1Wj3FSNclM1yk3VKDcd3ZP9pbM2yk3VKDdVo9xUjXJT9clNc+mTm+bSJzfNpU9umkuf3DQXe6ZZ73ZvzeWpctPGrE+VmzZmRfc9puu4bJ3bs8r619eVHJnjl+1/zIvufHzAvOjex/3nZXdmP2BedP/jA+ZFd2c/YF50f/YD5rVm86J7tB8wL7pL+wHzNstXh3dqv9XijdR6P+8PPcXSc3g39ZaeAdMjMD1HX38j3jYu/ajHYHocpmfC9ARMT8L0FEvP0V3Am3oGTI/A9CjresHupnXR665davmY39h9s3+DfnZH/rZ+dkf+tn70d9N/g37Y/YLB7hcMdr9gsPsFg12Pju783NSzw/VlzusXYDFkwx/iurHkIvf3LBmX73tXc3gTP/TWrtXzsi66Pmd42/rbYT5sXRqXRy2lucOTlj1aP18r+X0l47WSO61kvlZyp5Ws10rus5J7tK2+VvL7So7XSu60kvJayZ1WUl8rudNK2msld1pJZ91zHd1zu6mH/Yxr6z2ok90v+zfoRzMV2/rZPbB/g340+/A36D/3e5gnu4P1b9BvJ9fP/o5pWz/7O6Zt/cHKAxP2O2MT9h1QwL4DCth3QAH7Dihg3wEd3Se5qQd2fxSw+6OA+XPA/Dlg/pwwf06YPyfMnxPmzwnz54T5c8L8OWH+nDB/Tpg/F8yfC+bPBfPngvlzwfy5YP5cMH8umD8XzJ+L5c+xsPw5FpY/x8Ly51hY/hwLy59jYflzLCx/joXlz7Gw/DkWmD8PmD8PmD8PmD8PmD8PmD8PmD8PmD8PmD/DOiUC1ikRsE6JgHVKBKxTIgTmzwLzZ4H5s8D8WWD+LDB/Fpg/K8yfFebPCvNnWKdEKMyfFebPCvNnhfmzwvwZ1rEQsI6FgHUshD1T56qvt/8/N/fVyX7Z+se0z9S4uj2ttZr2mdpWt6d9pq7V7WmfqWl1e9pn6rHfnvaZWuw3p/Vn6rDfnvaZGuy3p22VpRx2J70H476rHtidNIwUD4fdSTvsTtphd9ITdic9YXfSE/akc8L8ecL8ecL8ecL8GUYSB4wkDhhJHDCSOGAkccBI4oCRxAEjiQNGEgeMJA4YSRwwkjhgJHHASOKAkcQBI4kDRhIHjCQOGEkcMJI4YCRxwEjigJHEASOJA0YSB4wkDhhJHDCSOGAkccBI4oCRxAEjiQNGEieMJE4YSZwwkjhhJHEuLH9OGEmcMJI4YSRxwkjihJHECSOJE0YSJ4wkThhJnDCSOGEkccJI4oSRxAkjiRNGEieMJE4YSZwwkjhhJHHCSOKEkcQJI4kTRhInjCROGEmcMJI4YSRxwkjihJHECSOJE0YSJ4wkThhJnDCSOGEkccJI4oSRxAl7W3vC3taesLe1p8H82WD+bDB/Npg/G8yfHebPDvNnh/kzjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcLxg8WjB8sGD9YMH6wFpY/F4wfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wfLYP4M4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgsfhBWVj84KoH5c+rHpQ/r3pQ/rzqQfnzqgflz6selD+velD+vOpB+fOqB+bPLH5w1QPzZxY/uOqB+TOLH1z1wPyZxQ+uemD+zOIHVz0wf2bxg6semD+z+MFVD8yfWfzgqgfmzyx+cNUD82cWP7jqgfkzix9c9cD8mcUPrnpg/sziB1c9MH9m8YOrHpg/s/jBVQ/Mn1n84KoH5s8sfnDVA/NnFj+46oH5M4sfXPXA/JnFD656YP7M4gdXPTB/ZvGDqx6YP7P4wVUPzJ8P5wdrWS4bl/l7Pbc2jvDr1rm8bT7Sb2w/a7kMO2u82/nPWaPRrNlo1uoz6+G85lfOOhrNKo1m1UazWqNZvdGsjXLTROemdB3XhOuWG7PKt3e2X3R/e9/aL9v/mBednR4wLzo/7T9voDPUA+ZF56gHzIvOUg+YF/bMhcWcr3pgz1wOZ84j3jYu/agnYHoSpqdYeg5nzrf0DJgegelRmB6D6TnYn9c9X6+o8u4CfPt67aLXXbvU8vH6ezSjvrv+OLn+PLl+2PWlYNeXgl1fjmbm//DzZm/p0+diHz9vRzP2u+u3k+vf4Xo3Z1z1D9nQH9eNJRe5v2fJ0MvGtbytzNBbu1bPyzrqHO+2/naYD1uXxuXWtzR3uPPdo33gtZLfVzJeK7nTSuZrJXdayXqt5C4rOfZo2Xit5PeVHKfOHmM5d3Ydy7mz61js5PrZz2q29bOf1WzrZ/3++oD1pwxYf8qA9acMWH/KgPWnDFh/yoD1pwxYf8qA9acMWH/KgPWnDFh/yoD1pwxYf8qA9acMWH/KgPWnDFh/yoD1pwxYf8qA9acMWH/KgPWnDFh/yoD1pwxYf8qA9acMWH/KgPWnDFh/yoD1pwxYf8qwZ/pdeo9xwWY89Fdq5se0z/Sb9NvTPtPv0W9Pi6YSd5/WWk2LJhN3nxZ2TYd17gxY586Ade4MWOfOgHXuDFjnzoB17gxY586Ade4Mh/mzw/zZYf7sMH+eMH+eMH+eMH+eMH+eMH+eMH+eMH+eMH+eMH+eMH8OmD8HzJ8D5s+w/oQB608YsP6EETB/Dpg/B8yfA+bPCfPnhPlzwvw5Yf6cMH9OmD8nzJ8T5s8J8+eE+XPB/Llg/lwwfy6YPxfMnwvmzwXz54L5c8H8uVj+LAvLn2Vh+bMsLH+WheXPsrD8WRaWP8vC8meBMacCY04FxpwKjDkVGHMqMOZUYMypwJhTgTGnAmNOBcacCow5FRhzKjDmVGDMqcCYU4ExpwJjTgXGnAqMORUYcyow5lRgzKnAmFOBMacCY04FxpwKjDkVGHMqMOZUYMypwJhTgTGnYjB/Npg/G8yfDebPBvNng/kzjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYHxgwLjBwXGDwqMHxQYPygwflBg/KDA+EGB8YMC4wcFxg8KjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYHxgwLjBwXGDwqMHxQYPygwflBg/KDA+EEpdGtsRfh161x+7ZP8uP2s6wutZo13O/85K7ozdudZ0Y2xO89qjWZFt8XuPOtsNOvB13F56/Vdv0PamHW9cFxkpNvYmDSyLhu/k7yO+HPSPOmkP9TXidXr0XTszurHqdXLqdXrqdXbqdX7qdXPU6s/63X5h/ozX2t1OfW1dpz6WjtOfa0dp77WjlNfa48mtHdWf+pr7S70d+hVffl99ZlxGTVrLhs3hsP1uuu5yNvW8yJ/h4ttLvH2vFP+78YNv7/d8Ee87TlvbLxG4Mv9/prI3s1a9VN9nlp9nVn9Htj6n6iXRfOy5yX1vvo/fYnSt9bMy7Oib42MN070PbD4U80rzebVZvMaed4adr2il4rf0O9o/X/4qPrtO8OZ8u47w5+zzkazRqNZs9Gs1WdWRWejP5516nXW9A+zonPRzrOiM9HOs6Lz0M6zWqNZnys33Z/1uXLT/VmfKzfdn/W5ctP9WZ8rN92d1RrlJmuUm6xRbrJGuWmP6pzTzNooN1mj3GSNcpM1yk3WKDd5o9zkjXKTN8pN3ig37VFpdZpZG+Umb5SbvFFu8ka5yRvlptkoN81GuWk2yk2zUW7ao2ruNLM2yk2zUW6ajXLTbJSbZqPcFI1yUzTKTdEoN0Wj3LRHBeRpZm2Um6JRbopGuSka5aZolJuyUW7KRrkpG+WmbJSb9qhmPc2sjXJTNspN2Sg3ZaPclI1yUzXKTdUoN1Wj3FSNctMe9cCnmbVRbqpGuaka5aZqlJuqT26ypU9usqVPbrKlT26ypU9ussUazdonN9nSJzfZ0ic32dInN9nSKDeNRrlpNMpNo1FuGo1y0x4F2KeZtVFuGo1y02iUm0aj3DQa5SZ2J/jOszbKTewu8J1nbZSb4B3g+87aKDc9WV/4/Vkb5aYn6wu/P2uj3NSoL9wa9YVbo75wa9QXbo36wq1RX7g16gu3Rn3h1qgv3Br1hVujvnBr1BdujfrCrVFfuDXqC7dGfeHWqC/cnqsvvJbre8xqfJz1qXLTxqxH5ya1y9t4vwGpG7O6XV84N3wu9sus3/Uf3gG+t/6B1j/tnf5ZN/TLyfXryfXbyfU7Wf/0cd313H7/8P33Y9rhPdlfOWs0mjUbzYrOC/vOOtHZ4o9nvZvvJzqH7DwrOrPsPCs63+w8qzWa9bly0/1Znys33Z/1uXLT/VmfKzfdn/W5ctPdWaNRbopGuSka5aZolJsO78n+ylkb5aZolJuiUW6KRrkpGuWmbJSbslFuyka5KRvlpsN7sr9y1ka5KRvlpmyUm7JRbspGuaka5aZqlJuqUW6qRrnp8J7sr5y1UW6qRrmpGuWmapSbqk9u8qVPbvKlT27ypU9u8qVPbvLFGs3aJzf50ic3+dInN/nSJzf50ig3jUa5aTTKTaNRbhqNctPhPdlfOWuj3DQa5abRKDeNRrlpNMpN0ig3SaPcJI1ykzTKTYf3ZH/lrI1ykzTKTdIoN0mj3CSNcpM2yk3aKDdpo9ykjXLT4T3ZXzlro9ykjXKTNspN2ig3aaPcZI1ykzXKTdYoN1mj3HR4T/ZXztooN1mj3GSNcpM1yk3snux9Z2V3au88a6PcxO7q/tNZ7/baO7vXe+dZjfy+glyf6V53vT2rrH99GXb9c45ftv8xL/odIw+YF/2ekQfMi37XyAPmRb9v5AHzot/Vtv+8E/2+tgfMi35n2wPmRb+37QHzot/d9oB5rdm8B+erUX7Jzt/ebvV+3h96JkxPwPTskB9C7HKIsNrQE/G2cb37fNZPPcXSs0cf9a56BkyPwPQoTI/B9DhMz4TpCZieZF0v4mB/Xvd8TRzyLqCs63Njz74+Srvs2qWWj/kkl5PrHyfXLyfXryfXbyw/Sdj9QsLuFxJ2v5Cw69HRXaVbevboE53zqifG1v1+XDeWXOT+niXj8h3fag7v3qiqt3atq1n83FrneLf1t8N82Lo0Lo8SSnOHJwl7tJW+VvL7SsprJXdaSX2t5E4raa+V3Gkl/bWSO63kfK3kTisZr5XcaSXztZI7rWS9VnKXlZxHd/9u3HPNo/t5N/Wwn3HZ9cX1w+diN/592c+4tvXbyfX7yfXPk+uPk+vPk+tnf8e0qX+wv2Pa1s/+jmlbv7DywNF9qZt6DKaH9R3QHKzvgOZgfQc0x9G/M5ZvZ3xqvfeHH3qKpUcWmJ4B0yMwPQrTYzA9DtMzYXoCpof1Hf0U1nf0U2H+rDB/Vpg/K8yfFebPCsvPCsvPCsvPCvNnhfmzwb5fMJg/G8yfDebPBvNng+Vng+Vng+Vngz3fMNjzDYflZ4d9/+uw588O82eH+bPD/Nlh/uwwf3aYPzvMnyfMnycsP09Yfp6w7weP7qzY1AN7vgHrlJiwTok5Yc83JsyfA+bPAfPngPlzwPLz4Z0SW3pg+Tlg+Tlg+Tlg+Tlgz58T9vw5Yf6cMH9OmD8nzJ8T5s+wjoUJ61iYsI6FCetYmAXz54I9fy6YPxfMnwvmzwXz54Ll54Ll54Ll52I934iF9XwjFlZ+joX1/WAsrOfPsbD8ORaWP8fC8udYWP4cC8ufY4H584D584D582Dl5xis/BwwfjBg/GDA+MGA8YMxWM83YrCebwSMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg+GwPKzwPKzsp4/h7KePweMHwwYPxgwfjAU5s8K82cYPxgwfjBg/GDA+MEwmD8b7PkzjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPhsOebzgsPzvs+8Gj31m/qQfmzzB+MGD8YMD4wYDxgwHjBwPGDwaMH4wJy8978IO76tnDn6/9/CPK7+vRRf3nxrr4ct141EXQpAkKmqCkCSqYoF0gwl0FDZogoQlSmiCjCYL9JkfAfpMjYE+iYW+nDhhJGDCSMBL2JDphT6IT9qQD9rbmgL2tOWAkYcBIwoCRhAEjCQNGEgaMJIyC+XPB/Llg/lwwfy6YPxfMnwvmz8Xy54S9aTJhb5pMGEmYMJIwF5Y/58Ly51xY/pwLy59zYflzLjB/HjB/HjB/hr2JMGFvIkwYSZgwkjBhJGHCSMKEkYQJIwlTYP4sMH8WmD8LzJ8F5s8C82eB+bPA/Bn2JsKEvYkwYSRhwkjCVJg/K8yfFebPsDcRJuxNhAkjCRNGEiaMJEwYSZgwkjBhJGEazJ8N5s8G82eD+bPB/Nlg/mwwf3aYP8PeRJiwNxEmjCRMGEmYDvNnh/mzw/zZYf7sMH+eMH+eMH+eMH+GvYkwYW8iTNibCBP2JsKEvYkwYW8izAnz54D5c8D8OWD+HDB/Dpg/w/jBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBgvGDBeMHC8YPFowfrIXlzwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YMH4wYLxgwXjBwvGDxaMHywYP1gwfrBg/GDB+MGC8YMF4wcLxg8WjB8sGD9YMH6wYPxgwfjBgvGDBeMHC8YPFowfLBg/WDB+sGD8YLH4QV1Y/OCqB+XPqx6UP696UP686kH586oH5c+rHpQ/r3pQ/rzqQfnzqgfmzyx+cNUD82cWP7jqgfkzix9c9cD8mcUPrnpg/sziB1c9MH9m8YOrHpg/s/jBVQ/Mn1n84KoH5s8sfnDVA/NnFj+46oH5M4sfXPXA/JnFD656YP7M4gdXPTB/ZvGDqx6YP7P4wVUPzJ9Z/OCqB+bPLH5w1QPzZxY/uOqB+TOLH1z1wPyZxQ+uemD+zOIHVz0wf2bxg6semD+z+MFVD8yfWfzgqgfmzyx+cNUD82cWP7jqgfkzix9c9cD8mcUPrnpg/sziB1c9MH9m8YOrHpg/s/jBVQ/Mn1n84KoH5s8sfnDVA/NnFj+46oH5M4sfXPXA/JnFD656YP7M4gdXPTB/ZvGDqx6YP7P4wVUPzJ9Z/OCqB+bPLH5w1QPzZxY/uOqB+TOLH1z1wPyZxQ+uemD+zOIHVz0sfx4wfnDA+MEB4wcHjB8cC8ufB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPjBAeMHB4wfHDB+cMD4wQHjBweMHxwwfnDA+MEB4wcHjB8cMH5wwPhBgfGDAuMHBcYPCowflIXlzwLjBwXGDwqMHxQYPygwflBg/KDA+EGB8YMC4wcFxg8KjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYHxgwLjBwXGDwqMHxQYPygwflBg/KDA+EGB8YMC4wcFxg8KjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYHxgwLjBwXGDwqMHxQYPygwflBg/KDA+EGB8YMC4wcFxg8KjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYHxgwLjBwXGDwqMHxQYPygwflBg/KDA+EGB8YMC4wcFxg8KjB8UGD8oMH5QYPygwPhBgfGDAuMHBcYPCowfFBg/KDB+UGD8oMD4QYXxgwrjBxXGDyqMH9SF5c8K4wcVxg8qjB9UGD+oMH5QYfygwvhBhfGDCuMHFcYPKowfVBg/qDB+UGH8oML4QYXxgwrjBxXGDyqMH1QYP6gwflBh/KDC+EGF8YMK4wcVxg8qjB9UGD+oMH5QYfygwvhBhfGDCuMHFcYPKowfVBg/qDB+UGH8oML4QYXxgwrjBxXGDyqMH1QYP6gwflBh/KAezQ/KonnZ85L6Xs8t8RF+VZ+LXzcf6Te2n7XIz81njbet4+es0mhWbTSrNZrVG806G80ajWbNRrNWn1mPZm+/dFZ0bkrXcd21W27MKutfX4Zd/5zjl+1/zIvOTg+YF52fHjCvNZsXnaMeMC86Sz1g3h3yVIhdRIXV/XlHDnlbnLeNo37qSZieYunZgwv/Iz0RbxuXftQzYHoEpkdhegymx2F6JkxPwPQkTM/B/rzu+XpFlXcX4FXPjT276HXXLrV8vP7mcnL94+T65eT6YdeXPbj2XfXAri850Z83e0ufPhe78XmLk+vPk+vf4Xo35/X+NMbW/WlcN5Zc5P6eJUMvG9fytjJDb+16fb59Wcf1MeG7rb8d5sPWtd5q/Ny61n/Fv//Od4+GgNdKfl/J8VrJnVZSXiu500rqayV3Wkl7reROK+nnzh518uxaJ8+udfLsWuxnNVv6bWE/q9nWP1DfZdgiMD0K02MwPQ7TM2F6WN+l2sL6LtUW1nepNhaYHpg/D5g/D5g/D5g/D5g/D5g/D5g/D5g/D5g/C8yfBebPAvNngfmzwPxZYP4sMH8WmD8LzJ8F5s8K82eF+bPC/Flh/qwwf1aYPyvMnxXmzwrzZ4X5s8H82WD+bDB/Npg/G8yfDebPBvNng/mzwfzZYP7sMH92mD87zJ8d5s8O82eH+bPD/Nlh/uwwf3aYP0+YP0+YP0+YP0+YP0+YP0+YP0+YP8NYeIOx8AZj4S1g/hwwfw6YPwfMnwPmzwHz54D5c8D8OWD+HDB/Tpg/J8yfE+bPCfPnhPlzwvw5Yf6cMH9OmD8nzJ8L5s8F8+eC+XPB/Llg/lwwfy6YPxfMnwvmz8XyZ19Y/uwwftBh/KDvwg9eefYR5ff16KKXpmZdfLluPOoiyGiCnCZo0gQFTVDSBLHeVOOwN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6U77E3pDntTusPelO6wN6W7w/zZYf7sMH92mD87zJ8d5s8O82eH+bPD/HnC/HnC/HnC/HnC/HnC/HnC/HnC/HnC/HnC/HnC/Dlg/hwwfw6YPwfMnwPmzwHz54D5c8D8OWD+HDB/Tpg/J8yfE+bPCfPnhPlzwvw5Yf6cMH9OmD8nzJ8L5s8F8+eC+XPB/Llg/lwwfy6YPxfMnwvmz8Xy57mw/HkuLH+eC8uf58Ly57mw/HkuLH+eC8uf58Ly57mw/HnC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfnDB+cML4wQnjByeMH5wwfnDC+MEJ4wcnjB+cMH5wwvjBCeMHJ4wfDBg/GDB+MGD8YMD4wVhY/hwwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMHwwYPxgwfjBg/GDA+MGA8YMB4wcDxg8GjB8MGD8YMH4wYPxgwPjBgPGDAeMHA8YPBowfDBg/GDB+MGD8YMD4wYDxgwHjBwPGDwaMH0wYP5gwfjBh/GDC+MFcWP6cMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcTxg8mjB9MGD+YMH4wYfxgwvjBhPGDCeMHE8YPJowfTBg/mDB+MGH8YML4wYTxgwnjBxPGDyaMH0wYP5gwfjBh/GDC+MGE8YMJ4wcT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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"databus"},"error_types":{}},"bytecode":"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","debug_symbols":"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J6+1F845mXjjnLOJc87ZxDnn5HfOxjlnE2+ITybOOWcT55yziXPO2cQ552zinHMy8SvnnE2cc84mzjlnE+ecs4k3xCcT55yziXPOyWvtlXPOJs45ZxPnnJOJ3zjn5HfOG+ecTZxzzibOOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxO+ecTZxzzibOOWcT55yziTfE5661d845mzjnnE2cc84mzjlnv3NyzsnEH5xzNnHOOZs455xNnHPOJt4Qn0ycc84mzjlnE+ecs4lzztnEOedk4k/OOZs455xNnHNOXmufnHM28Yb4ZOKcczZxzjn7nZNzzibOOWcT55xziV9PnHM2cc45mzjnnE2cc84m3hCfTJxzzibOOWcT55yziXPO2cQ552TiZ845d629njnnbOKcczZxzjmbeEN88jsn55xNnHPOJs45ZxPnnLOJc87JxDfOOZs455xNnHPOJs45ZxNviE8mzjlnE+ecs4lzztnEOefktXbjnJOJXzjnbOKcczZxzjn5nfPCOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxxjlnE+ecs4lzztnEOeds4g3xycQ552zinHPyWts452zinHM2cc45mfiVc05+57xyztnEOeds4pxzNvGG+GTinHM2cc45mzjnnE2cc84mzjknE79xztnEOeds4pxzNnHOOZt4Q3zuWnvjnLOJc87ZxDnnbOKcc/Y7J+ecTPzOOWcT55yziXPO2cQ552ziDfHJxDnnbOKcczZxzjmbOOecTZxzTib+4JyziXPO2cQ55+S19sE5ZxNviE8mzjlnE+ecs985Oeds4pxzNnHOOZn4k3POJs45ZxPnnLOJc87ZxBvik4lzztnEOeds4pxzNnHOOZs455xL/HbinHPX2tuJc84mzjlnE+ecs4k3xCe/c3LO2cQ552zinHM2cc45mzjnnEz8zDlnE+ecs4lzztnEOeds4g3xycQ552zinHM2cc45mzjnnLzWnjnnZOIb55xNnHPOJs45J79zbpxzNvGG+GTinHM2cc45mzjnnE2cc84mzjknE79wztnEOeds4pxzNnHOOZt4Q3wycc45mzjnnLzWXjjnbOKcczZxzjmZeOOck985G+ecTZxzzibOOWcTb4hPJs45ZxPnnLOJc87ZxDnnbOKcczLxK+ecTZxzzibOOWcT55yziTfE5661V845mzjnnE2cc84mzjlnv3NyzsnEb5xzNnHOOZs455xNnHPOJt4Qn0ycc84mzjlnE+ecs4lzztnEOedk4nfOOZs455xNnHNOXmvvnHM28Yb4ZOKcczZxzjn7nZNzzibOOWcT55yTiT8452zinHM2cc45mzjnnE28IT6ZOOecTZxzzibOOWcT55yziXPOycSfnHPyWvvknLOJc87ZxDnnbOIN8cnvnJxzNnHOOZs455xNnHPOJs455xK/nzjnbOKcczZxzjmbOOecTbwhPpk455xNnHPOJs45ZxPnnHPX2vuJc04mfuacs4lzztnEOefkd84z55xNvCE+mTjnnE2cc84mzjlnE+ecs4lzzsnEN845mzjnnE2cc84mzjlnE2+ITybOOWcT55yT19qNc84mzjlnE+eck4lfOOfkd84L55xNnHPOJs45ZxNviE8mzjlnE+ecs4lzztnEOeds4pxzMvHGOWcT55yziXPO2cQ552ziDfG5a23jnLOJc87ZxDnnbOKcc/Y7J+ecTPzKOWcT55yziXPO2cQ552ziDfHJxDnnbOKcczZxzjmbOOecTZxzTiZ+45yziXPO2cQ55+S19sY5ZxNviE8mzjlnE+ecs985Oeds4pxzNnHOOZn4nXPOJs45ZxPnnLOJc87ZxBvik4lzztnEOeds4pxzNnHOOZs455xM/ME5J6+1D845mzjnnE2cc84m3hCf/M7JOWcT55yziXPO2cQ552zinHMy8SfnnE2cc84mzjlnE+ecs4k3xCcT55yziXPO2cQ552zinHPyWvvknHOJP06cczZxzjmbOOec+875OHHO2cQb4pOJc87ZxDnnbOKcczZxzjmbOOecTPzMOWcT55yziXPO2cQ552ziDfHJxDnnbOKcc/Jae+acs4lzztnEOedk4hvnnPzOuXHO2cQ552zinHM28Yb4ZOKcczZxzjmbOOecTZxzzibOOScTv3DO2cQ552zinHM2cc45m3hDfO5ae+Gcs4lzztnEOefsP8c552zinHMy8cY5ZxPnnLOJc87ZxDnn5OuwNcQnE+ecs4lzztl/jnPO2cQ552zinHMy8SvnnE2cc84mzjknX4dXzjmbeEN8MnHOOZs455z9zsk5ZxPnnLOJc87JxG+cczZxzjmbOOecTZxzzibeEJ9MnHPOJs45ZxPnnNnE74/z5z/5cemJc86/QPzc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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block","attach_len_to_msg_block","build_msg_block","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator","fields":[{"name":"request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest","fields":[{"name":"pk_m","type":{"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}]}},{"name":"sk_app","type":{"kind":"field"}}]}},{"name":"sk_app_generator","type":{"kind":"field"}}]}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"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}}]}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"public_teardown_call_request","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_static_call","type":{"kind":"boolean"}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"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":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash","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}}]}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash","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"}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}]}}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"total_fees","type":{"kind":"field"}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"databus"},"error_types":{"3469988399892582431":{"error_kind":"fmtstring","length":20,"item_types":[]}}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"consumer","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"},"error_types":{}},"bytecode":"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","debug_symbols":"5Z3djiPHkYXfZa51kZEZ+edXWSwWsi0bAgTJsOQFFobefTlk82dETgaazml+kXljj6wq9vnG7HNOFSuC//701x/+/K+//8+PP//tl18//em//v3pp1/+8v1vP/7y8+Gf/v37d5/+/M8ff/rpx7//z+3//Cl8/g+Jx+N//cf3P3/+x19/+/6fv336k5Qevvv0w89/PfyxhnB4hb/9+NMPn/5U5ffv7g5uQd+ObTFeDpXWHhybY347Nufry0rOv//3d58k/eda8vn1W62GFk397Vgt7U6L/sdaeohvx3YphpYSzrpLLHda8n+uRc/H9pwsLe187O3LnrWUd2r5fE594pz2xDn9/efE8MQ58sQ58Ylz0hPn6BPn5CfOeeJ9EJ94H8SH74NUVd7OSfXmF/3hez/lcjm4yI1DpfDoN6Xlsy30Vm9+V0I86uksPSnA9AhMT4TpSTA9CtOTYXoKTE+F6YH5c4L5s8L8WWH+rDB/Vpg/K8yfFebPCvNnhfmzwvxZYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf6cYf5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYP5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf5cYf7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYP7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf7cYf4sAWbQEmAOffgvmiCYR0uAmbQEmEtLgNm0BJhPS4AZtQSaUwvNqYXm1EJzaqE5tdCcWmhOLTSnFppTC82phebUkebUkebUkebUkebUkebUkebUkebUkebUtOFCoU0XCm28UGjzhUIbMBTahKHQRgyFNmMotCFDoU0ZCm3MUGhzhkIbNBTapKHQRg2FNmsotGFDoU0bCm3cUGjzhkIbOBTaxKHQRg6FNnMotKFDoU0dCm3sUGhzh0IbPBTa5KHQRg+FNnsotOFDoU0fCm38UGjzh0IbQBTaBKLQRhCFNoMotCFEoU0hCm0MUWhziEIbRBTaJKLQRhGFNosotGFEoU0jCm0cUWjziEIbSBTaRKLQRhKFNpMotKFEoU0lCm0sUWhziUIbTBTaZKLQRhOFNpsotOFEoU0nCm08UWjziUIbUBTahKLQRhTlw2cUJYRY3w6XoF2+kHR/fKzp/HUihz9ev0+kfpYfP3yicbJ88S0/+paffMtX3/IzXL7WkN4Oz6H269H50TcNJU3nr35JTb48+ohb9sKte+G2vXDprWEurtBbxmRceiuZjEtvMZNx6a1nMq7uhbtXq5K9WpXs1apkr1Yle7WquFerinu1qrhXq4p7taoP31jwYty9WlXcq1XFvVpV3KtVxb1aVdqrVaW9WlXaq1WlvVrVh28XeTHuXq0q7dWq0l6tKu3VqtJerUr3alW6V6vSvVqV7tWqPnwT0Itx92pVuler0r1ale7VqnSvVpX3alV5r1aV92pVea9W9eFbu16Mu1erynu1qrxXq8p7taq8V6sqe7WqslerKvRWlSWcXz2LhHsAek8yAdQ7AL3LfAlQ7wHo7cQEoPcNE4DeILLUK0B78DtA7wQWQKWnvAnA/3+gn1cn5BjLHUDDJ3Ev58Nzvz36DIBPYgsAn8QWAD6JLYCPT+IsegHI6UuAo6TKk9R4kjpOUg88ScKTFHmSEk+S8iRlniSee3eee3eee3ece6eAc+8UcO6dAs69U8C5dwo4904B594p4Nw7BZx7p4Bz7xR47i089xaeewvPvYXn3sJzb+G5t/DcW3juLTz3Fp57R557R557R557R557R557R557R557R557R557R557J557J557J557J557J557J557J557J557J557J557K8+9lefeynNv5bm38txbee6tPPdWnnsrz72V596Z596Z596Z596Z596Z596Z596Z596Z596Z596Z596F596F596F596F596F596F596F596F596F596F596V596V596V596V596V596V596V596V596V596V596N596N596N596N596N596N5968WcvEm7VMvFnLxJu1TLxZy8SbtUy8WcvEm7VMvFnLxJu1TLxZy8SbtUy8WcvEm7VU3qyl8mYtlTdrqbxZSw0491berKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2uprxhG036VVMq9pI//P67IVVKJ/V5Sx0maPmZVDEkp5nI+OtYrQD3JEZacyJKTPlpOuuwkT0nzjZz7Yw+3l87SD/dQ8h+lq1/p2a/0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","brillig_names":["lookup_validity"]}],"outputs":{"structs":{"functions":[{"kind":"struct","path":"SchnorrAccount::entrypoint_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::entrypoint_parameters","fields":[{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]}},{"name":"fee_payload","type":{"kind":"struct","path":"authwit::entrypoint::fee::FeePayload","fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}]}},{"name":"cancellable","type":{"kind":"boolean"}}]}}]},{"kind":"struct","path":"SchnorrAccount::constructor_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::constructor_parameters","fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}]}}]},{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters","fields":[{"name":"inner_hash","type":{"kind":"field"}}]}},{"name":"return_type","type":{"kind":"field"}}]}]},"globals":{"storage":[{"kind":"struct","fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"kind":"struct","fields":[{"name":"signing_public_key","value":{"kind":"struct","fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}]}}]}}]}],"notes":[{"kind":"tuple","fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"kind":"struct","fields":[{"name":"x","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"y","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}},{"name":"npk_m_hash","value":{"kind":"struct","fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}]}}]}]}]}},"file_map":{"3":{"source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n","path":"std/array/mod.nr"},"7":{"source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n","path":"std/collections/bounded_vec.nr"},"24":{"source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\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(\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(\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","path":"std/embedded_curve_ops.nr"},"25":{"source":"use 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\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{\n decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI,\n };\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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","path":"std/field/bn254.nr"},"26":{"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(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(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(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(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(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(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(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(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(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(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(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","path":"std/field/mod.nr"},"29":{"source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n","path":"std/hash/mod.nr"},"34":{"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(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(\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","path":"std/hash/poseidon2.nr"},"35":{"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(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(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(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(\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(\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","path":"std/hash/sha256.nr"},"58":{"source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n","path":"std/option.nr"},"59":{"source":"pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n","path":"std/panic.nr"},"70":{"source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/phantom-gate/contracts/account/src/public_key_note.nr"},"71":{"source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage {\n signing_public_key: PrivateImmutable,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}","path":"/home/lima.linux/aztec/alpha-build2/phantom-gate/contracts/account/src/main.nr"},"73":{"source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/auth_witness.nr"},"75":{"source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, CANONICAL_AUTH_REGISTRY_ADDRESS,\n }, hash::poseidon2_hash_with_separator,\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let result: Field = context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n )\n .deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/auth.nr"},"78":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr"},"79":{"source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr"},"80":{"source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator,\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/authwit/src/account.nr"},"98":{"source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr"},"99":{"source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n note: Note,\n}\n\nimpl NoteEmission {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/note_emission.nr"},"100":{"source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n }, utils::arr_copy_slice,\n};\n\npub fn compute_siloed_nullifier(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request(note: Note) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash =\n compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify(note: Note) -> Field where Note: NoteInterface {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify(note: Note) -> Field\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface + NullifiableNote,\n{\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/utils.nr"},"102":{"source":"use dep::protocol_types::constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields(\n serialized_note: [Field; N],\n selects: BoundedVec, N>,\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, BoundedVec)\nwhere\n Note: NoteInterface + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, BoundedVec)\nwhere\n Note: NoteInterface + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteInterface,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr"},"118":{"source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice,\n};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator =\n arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr"},"122":{"source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{\n keys::get_public_keys_and_partial_address,\n key_validation_request::get_key_validation_request,\n }, keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) =\n unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address),\n \"Invalid public keys hint for address\",\n );\n\n hinted_canonical_public_keys\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr"},"123":{"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(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(\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(&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(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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/hash.nr"},"130":{"source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl Storage for PrivateImmutable {}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: &mut Note) -> NoteEmission\n where\n Note: NoteInterface + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteInterface + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: NoteInterface + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr"},"145":{"source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator,\n constants::GENERATOR_INDEX__CONSTRUCTOR, abis::function_selector::FunctionSelector,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm,\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/initializer.nr"},"147":{"source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader,\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\npub unconstrained fn get_contract_instance_internal_avm(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr"},"149":{"source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle(_return_hash: Field) -> [Field; N] {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/returns.nr"},"150":{"source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice,\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH,\n ),\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_low_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr"},"151":{"source":"use dep::protocol_types::abis::validation_requests::{\n KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr"},"153":{"source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/random.nr"},"154":{"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(\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(\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(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(\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(\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(\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(\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(\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(\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(\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(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/logs.nr"},"155":{"source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/execution.nr"},"158":{"source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option; S]\nwhere\n Note: NoteInterface,\n{\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/notes.nr"},"160":{"source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point,\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/keys.nr"},"161":{"source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr"},"165":{"source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"},"168":{"source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::getters::get_ovsk_app, encrypted_logs::payload::compute_encrypted_log,\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash,\n};\n\nfn compute_raw_note_log(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] =\n compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface,\n{\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteInterface,\n{\n |e: NoteEmission| {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) =\n compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteInterface,\n{\n |e: NoteEmission| {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) =\n unsafe { compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient) };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress,\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext,\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr"},"169":{"source":"use dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point,\n};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr"},"170":{"source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose,\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes,\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n};\n\npub fn compute_encrypted_log(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] =\n compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext(\n plaintext: [u8; P],\n eph_sk: Scalar,\n ivpk: IvpkM,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{\n address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar,\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false,\n },\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(\n 0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2,\n );\n\n let log: [u8; 448] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n plaintext,\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235,\n 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79,\n 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171,\n 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203,\n 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211,\n 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205,\n 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248,\n 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110,\n 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173,\n 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4,\n 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194,\n 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219,\n 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18,\n 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167,\n 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239,\n 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25,\n 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91,\n 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76,\n 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178,\n 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189,\n 117, 147, 101, 230, 132,\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\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, 2, 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, 1, 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, 1, 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, 2, 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, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31,\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(\n recipient,\n recipient_ivpk,\n sender_ovsk_app,\n eph_sk,\n eph_pk,\n );\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238,\n 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248,\n 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31,\n 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151,\n 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58,\n 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25,\n 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224,\n 30, 168, 177, 26, 144, 5, 124, 128, 6,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr"},"175":{"source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/utils/point.nr"},"185":{"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,\n nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n note_hashes: BoundedVec,\n nullifiers: BoundedVec,\n\n private_call_requests: BoundedVec,\n public_call_requests: BoundedVec,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec,\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,\n encrypted_logs_hashes: BoundedVec,\n unencrypted_logs_hashes: BoundedVec,\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; 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(\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(\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(\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(\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(\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(\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(\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/context/private_context.nr"},"188":{"source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::storage_read,\n};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Deserialize,\n {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr"},"199":{"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 for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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,\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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr"},"200":{"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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr"},"202":{"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 for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize 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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr"},"203":{"source":"use crate::{\n address::{\n aztec_address::AztecAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash,\n }, public_keys::PublicKeys, contract_class_id::ContractClassId,\n constants::CONTRACT_INSTANCE_LENGTH, traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n salt: Field,\n deployer: AztecAddress,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys.hash(),\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr"},"210":{"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(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(\n _vk: VerificationKey,\n) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key::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 = 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(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(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(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(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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr"},"229":{"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(msg: str) {\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(msg: str, 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(\n msg: str,\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(_msg: str, args: [Field]) {}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr"},"248":{"source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr"},"265":{"source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash},\n};\n\npub struct NullifierLeafPreimage {\n nullifier: Field,\n next_nullifier: Field,\n next_index: u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value =\n compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(\n self.nullifier,\n siloed_value,\n \"Value of the nullifier leaf does not match read request\",\n );\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr"},"297":{"source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/point.nr"},"309":{"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 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 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 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 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 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 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","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr"},"310":{"source":"pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr"},"311":{"source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate {\n lhs\n } else {\n rhs\n }\n}\n\npub fn arr_copy_slice(\n src: [T; N],\n mut dst: [T; M],\n offset: u32,\n) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr"},"334":{"source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl ToField for str {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n fn deserialize(fields: [Field; N]) -> Self {\n str::from(fields.map(|value| value as u8))\n }\n}\n","path":"/home/lima.linux/nargo/github.com/AztecProtocol/aztec-packages/aztec-packages-v0.60.0/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr"}}} \ No newline at end of file diff --git a/phantom-gate/contracts/nft-contract/Nargo.toml b/phantom-gate/contracts/nft-contract/Nargo.toml deleted file mode 100644 index 587e58073..000000000 --- a/phantom-gate/contracts/nft-contract/Nargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "nft-contract" -type = "contract" -authors = [""] -compiler_version = ">=0.33.0" - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/aztec" } -authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/authwit" } -compressed_string = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/compressed_string" } \ No newline at end of file diff --git a/phantom-gate/contracts/nft-contract/src/main.nr b/phantom-gate/contracts/nft-contract/src/main.nr deleted file mode 100644 index c54a0b4b4..000000000 --- a/phantom-gate/contracts/nft-contract/src/main.nr +++ /dev/null @@ -1,310 +0,0 @@ -mod types; -mod test; - -use dep::aztec::macros::aztec; - -// Minimal NFT implementation with `AuthWit` support that allows minting in public-only and transfers in both public -// and private. -#[aztec] -contract NFT { - use dep::compressed_string::FieldCompressedString; - use dep::aztec::{ - oracle::random::random, - prelude::{NoteGetterOptions, NoteViewerOptions, Map, PublicMutable, SharedImmutable, PrivateSet, AztecAddress}, - encrypted_logs::{encrypted_note_emission::{encode_and_encrypt_note, encrypt_and_emit_partial_log}}, - hash::pedersen_hash, keys::getters::get_public_keys, note::constants::MAX_NOTES_PER_PAGE, - protocol_types::traits::is_empty, utils::comparison::Comparator, - protocol_types::{point::Point, traits::Serialize}, - macros::{storage::storage, events::event, functions::{private, public, view, internal, initializer}} - }; - use dep::authwit::auth::{assert_current_call_valid_authwit, assert_current_call_valid_authwit_public, compute_authwit_nullifier}; - use std::{embedded_curve_ops::EmbeddedCurvePoint, meta::derive}; - use crate::types::nft_note::NFTNote; - - global TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX = 3; - - // TODO(#8467): Rename this to Transfer - calling this NFTTransfer to avoid export conflict with the Transfer event - // in the Token contract. - #[event] - #[derive(Serialize)] - struct NFTTransfer { - from: AztecAddress, - to: AztecAddress, - token_id: Field, - } - - #[storage] - struct Storage { - // The symbol of the NFT - symbol: SharedImmutable, - // The name of the NFT - name: SharedImmutable, - // The admin of the contract - admin: PublicMutable, - // Addresses that can mint - minters: Map, Context>, - // Contains the NFTs owned by each address in private. - private_nfts: Map, Context>, - // A map from token ID to a boolean indicating if the NFT exists. - nft_exists: Map, Context>, - // A map from token ID to the public owner of the NFT. - public_owners: Map, Context>, - } - - #[public] - #[initializer] - fn constructor(admin: AztecAddress, name: str<31>, symbol: str<31>) { - assert(!admin.is_zero(), "invalid admin"); - storage.admin.write(admin); - storage.minters.at(admin).write(true); - storage.name.initialize(FieldCompressedString::from_string(name)); - storage.symbol.initialize(FieldCompressedString::from_string(symbol)); - } - - #[public] - fn set_admin(new_admin: AztecAddress) { - assert(storage.admin.read().eq(context.msg_sender()), "caller is not an admin"); - storage.admin.write(new_admin); - } - - #[public] - fn set_minter(minter: AztecAddress, approve: bool) { - assert(storage.admin.read().eq(context.msg_sender()), "caller is not an admin"); - storage.minters.at(minter).write(approve); - } - - #[public] - fn mint(to: AztecAddress, token_id: Field) { - assert(token_id != 0, "zero token ID not supported"); - assert(storage.minters.at(context.msg_sender()).read(), "caller is not a minter"); - assert(storage.nft_exists.at(token_id).read() == false, "token already exists"); - - storage.nft_exists.at(token_id).write(true); - - storage.public_owners.at(token_id).write(to); - } - - #[public] - #[view] - fn public_get_name() -> pub FieldCompressedString { - storage.name.read_public() - } - - #[private] - #[view] - fn private_get_name() -> pub FieldCompressedString { - storage.name.read_private() - } - - #[public] - #[view] - fn public_get_symbol() -> pub FieldCompressedString { - storage.symbol.read_public() - } - - #[private] - #[view] - fn private_get_symbol() -> pub FieldCompressedString { - storage.symbol.read_private() - } - - #[public] - #[view] - fn get_admin() -> Field { - storage.admin.read().to_field() - } - - #[public] - #[view] - fn is_minter(minter: AztecAddress) -> bool { - storage.minters.at(minter).read() - } - - #[public] - fn transfer_in_public(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { - if (!from.eq(context.msg_sender())) { - assert_current_call_valid_authwit_public(&mut context, from); - } else { - assert(nonce == 0, "invalid nonce"); - } - - let public_owners_storage = storage.public_owners.at(token_id); - assert(public_owners_storage.read().eq(from), "invalid owner"); - - public_owners_storage.write(to); - } - - /// Prepares a transfer from public balance of `from` to a private balance of `to`. The transfer then needs to be - /// finalized by calling `finalize_transfer_to_private`. `transient_storage_slot_randomness` is passed - /// as an argument so that we can derive `transfer_preparer_storage_slot_commitment` off-chain and then pass it - /// as an argument to the followup call to `finalize_transfer_to_private`. - #[private] - fn prepare_transfer_to_private( - from: AztecAddress, - to: AztecAddress, - transient_storage_slot_randomness: Field - ) { - let to_keys = get_public_keys(to); - let to_npk_m_hash = to_keys.npk_m.hash(); - let to_note_slot = storage.private_nfts.at(to).storage_slot; - - // We create a partial NFT note hiding point with unpopulated/zero token id for 'to' - // TODO(#7775): Manually fetching the randomness here is not great. If we decide to include randomness in all - // notes we could just inject it in macros. - let note_randomness = unsafe { - random() - }; - let note_setup_payload = NFTNote::setup_payload().new(to_npk_m_hash, note_randomness, to_note_slot); - - // We encrypt and emit the partial note log - encrypt_and_emit_partial_log(&mut context, note_setup_payload.log_plaintext, to_keys, to); - - // We make the msg_sender/transfer_preparer part of the slot preimage to ensure he cannot interfere with - // non-sender's slots - let transfer_preparer_storage_slot_commitment: Field = pedersen_hash( - [context.msg_sender().to_field(), transient_storage_slot_randomness], - TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX - ); - // Then we hash the transfer preparer storage slot commitment with `from` and use that as the final slot - // --> by hashing it with a `from` we ensure that `from` cannot interfere with slots not assigned to him. - let slot: Field = pedersen_hash( - [from.to_field(), transfer_preparer_storage_slot_commitment], - TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX - ); - - NFT::at(context.this_address())._store_point_in_transient_storage(note_setup_payload.hiding_point, slot).enqueue(&mut context); - } - - #[public] - #[internal] - fn _store_point_in_transient_storage(point: Point, slot: Field) { - // We don't perform check for the overwritten value to be non-zero because the slots are siloed to `to` - // and hence `to` can interfere only with his own execution. - context.storage_write(slot, point); - } - - /// Finalizes a transfer of NFT with `token_id` from public balance of `from` to a private balance of `to`. - /// The transfer must be prepared by calling `prepare_transfer_to_private` first. - /// The `transfer_preparer_storage_slot_commitment` has to be computed off-chain the same way as was done - /// in the preparation call. - #[public] - fn finalize_transfer_to_private( - token_id: Field, - transfer_preparer_storage_slot_commitment: Field - ) { - // We don't need to support authwit here because `prepare_transfer_to_private` allows us to set arbitrary - // `from` and `from` will always be the msg sender here. - let from = context.msg_sender(); - let public_owners_storage = storage.public_owners.at(token_id); - assert(public_owners_storage.read().eq(from), "invalid NFT owner"); - - // Derive the slot from the transfer preparer storage slot commitment and the `from` address (declared - // as `from` in this function) - let hiding_point_slot = pedersen_hash( - [from.to_field(), transfer_preparer_storage_slot_commitment], - TRANSIENT_STORAGE_SLOT_PEDERSEN_INDEX - ); - - // Read the hiding point from "transient" storage and check it's not empty to ensure the transfer was prepared - let hiding_point: Point = context.storage_read(hiding_point_slot); - assert(!is_empty(hiding_point), "transfer not prepared"); - - // Set the public NFT owner to zero - public_owners_storage.write(AztecAddress::zero()); - - // Finalize the partial note with the `token_id` - let finalization_payload = NFTNote::finalization_payload().new(hiding_point, token_id); - - // We insert the finalization note hash - context.push_note_hash(finalization_payload.note_hash); - - // We emit the `token_id` as unencrypted event such that the `NoteProcessor` can use it to reconstruct the note - context.emit_unencrypted_log(finalization_payload.log); - - // At last we reset public storage to zero to achieve the effect of transient storage - kernels will squash - // the writes - context.storage_write(hiding_point_slot, Point::empty()); - } - - /** - * Cancel a private authentication witness. - * @param inner_hash The inner hash of the authwit to cancel. - */ - #[private] - fn cancel_authwit(inner_hash: Field) { - let on_behalf_of = context.msg_sender(); - let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash); - context.push_nullifier(nullifier); - } - - #[private] - fn transfer_in_private(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { - if (!from.eq(context.msg_sender())) { - assert_current_call_valid_authwit(&mut context, from); - } else { - assert(nonce == 0, "invalid nonce"); - } - - let nfts = storage.private_nfts; - - let notes = nfts.at(from).pop_notes( - NoteGetterOptions::new().select(NFTNote::properties().token_id, Comparator.EQ, token_id).set_limit(1) - ); - assert(notes.len() == 1, "NFT not found when transferring"); - - let from_ovpk_m = get_public_keys(from).ovpk_m; - let to_keys = get_public_keys(to); - - let mut new_note = NFTNote::new(token_id, to_keys.npk_m.hash()); - nfts.at(to).insert(&mut new_note).emit(encode_and_encrypt_note(&mut context, from_ovpk_m, to_keys.ivpk_m, to)); - } - - #[private] - fn transfer_to_public(from: AztecAddress, to: AztecAddress, token_id: Field, nonce: Field) { - if (!from.eq(context.msg_sender())) { - assert_current_call_valid_authwit(&mut context, from); - } else { - assert(nonce == 0, "invalid nonce"); - } - - let notes = storage.private_nfts.at(from).pop_notes( - NoteGetterOptions::new().select(NFTNote::properties().token_id, Comparator.EQ, token_id).set_limit(1) - ); - assert(notes.len() == 1, "NFT not found when transferring to public"); - - NFT::at(context.this_address())._finish_transfer_to_public(to, token_id).enqueue(&mut context); - } - - #[public] - #[internal] - fn _finish_transfer_to_public(to: AztecAddress, token_id: Field) { - storage.public_owners.at(token_id).write(to); - } - - // Returns zero address when the token does not have a public owner. Reverts if the token does not exist. - #[public] - #[view] - fn owner_of(token_id: Field) -> AztecAddress { - assert(storage.nft_exists.at(token_id).read(), "token does not exist"); - storage.public_owners.at(token_id).read() - } - - /// Returns an array of token IDs owned by `owner` in private and a flag indicating whether a page limit was - /// reached. Starts getting the notes from page with index `page_index`. Zero values in the array are placeholder - /// values for non-existing notes. - unconstrained fn get_private_nfts(owner: AztecAddress, page_index: u32) -> pub ([Field; MAX_NOTES_PER_PAGE], bool) { - let offset = page_index * MAX_NOTES_PER_PAGE; - let mut options = NoteViewerOptions::new(); - let notes = storage.private_nfts.at(owner).view_notes(options.set_offset(offset)); - - let mut owned_nft_ids = [0; MAX_NOTES_PER_PAGE]; - for i in 0..options.limit { - if i < notes.len() { - owned_nft_ids[i] = notes.get_unchecked(i).token_id; - } - } - - let page_limit_reached = notes.len() == options.limit; - (owned_nft_ids, page_limit_reached) - } -} \ No newline at end of file diff --git a/phantom-gate/package.json b/phantom-gate/package.json index a35882588..d27701705 100644 --- a/phantom-gate/package.json +++ b/phantom-gate/package.json @@ -24,10 +24,11 @@ "vite": "^5.4.0" }, "dependencies": { - "@aztec/accounts": "^0.57.0", - "@aztec/aztec.js": "^0.57.0", - "@aztec/circuits.js": "^0.57.0", - "@aztec/noir-contracts.js": "^0.57.0", + "@aztec/accounts": "^0.60.0", + "@aztec/aztec.js": "^0.60.0", + "@aztec/circuits.js": "^0.60.0", + "@aztec/foundation": "^0.60.0", + "@aztec/noir-contracts.js": "^0.60.0", "buffer": "^6.0.3", "lucide-react": "^0.439.0", "node-stdlib-browser": "^1.2.0", diff --git a/phantom-gate/src/components/NftInteractions.tsx b/phantom-gate/src/components/NftInteractions.tsx new file mode 100644 index 000000000..81512b6e1 --- /dev/null +++ b/phantom-gate/src/components/NftInteractions.tsx @@ -0,0 +1,315 @@ +import React, { useState } from "react"; +import { useAccount } from "../hooks/useAccounts.js"; +import { AccountWalletWithSecretKey, AztecAddress, Fr } from "@aztec/aztec.js"; +import { toast } from "react-hot-toast"; +import { Loader } from "lucide-react"; +import { NFTContract } from "@aztec/noir-contracts.js"; + +interface NftInteractionsProps { + currentWallet: AccountWalletWithSecretKey | null; + setNftContract: (contract: NFTContract) => void; + nftContract: NFTContract | null; +} + +export const NftInteractions = ({ + currentWallet, + setNftContract, + nftContract, +}: NftInteractionsProps) => { + const { deployNFtToken } = useAccount(); + const [isLoading, setIsLoading] = useState<{ + deployNFTToken?: boolean; + isMintingNFT?: boolean; + isPublicTransferNFT?: boolean; + isFetchOwner?: boolean; + isPrivateTransferNFT?: boolean; + isFetchPrivateToken?: boolean; + }>({ + deployNFTToken: false, + isMintingNFT: false, + isPublicTransferNFT: false, + isFetchOwner: false, + isPrivateTransferNFT: false, + isFetchPrivateToken: false, + }); + const [tokenId, setTokenId] = useState(0); + const [nftMintAddress, setNFTMintAddress] = useState(""); + const [verifyAddress, setNFTVerifyAddress] = useState(""); + const handleDeplyNftToken = async () => { + if (!currentWallet) { + toast.error("Please select a wallet first"); + return; + } + setIsLoading({ ...isLoading, deployNFTToken: true }); + try { + const nftContract = await deployNFtToken( + currentWallet, + "phantom og", + "PHOG" + ); + + setNftContract(nftContract as NFTContract); + toast.success("NFT Token deployed successfully!"); + } catch (error) { + toast.error("Failed to deploy token: " + (error as Error).message); + } finally { + setIsLoading({ ...isLoading, deployNFTToken: false }); + } + }; + + const handleMintNFT = async () => { + if (!nftContract || !currentWallet || tokenId === 0) { + console.error("no contract or addrees or token id is 0"); + return; + } + setIsLoading({ ...isLoading, isMintingNFT: true }); + const tx = await nftContract.methods + .mint(AztecAddress.fromString(nftMintAddress), tokenId) + .send(); + console.log(`Sent nft mint transaction ${await tx.getTxHash()}`); + + const receipt = await tx.wait(); + console.log(`Transaction has been mined on block ${receipt.blockNumber}`); + setIsLoading({ ...isLoading, isMintingNFT: false }); + }; + + const handlePublicTransferNFT = async () => { + if (!nftContract || !currentWallet) { + console.error("no contract or addrees"); + return; + } + try { + setIsLoading({ ...isLoading, isPublicTransferNFT: true }); + const tx = await nftContract.methods + .transfer_in_public( + currentWallet.getAddress(), + AztecAddress.fromString(nftMintAddress), + tokenId, + 0 + ) + .send(); + console.log(`Sent public transfer transaction ${await tx.getTxHash()}`); + + const receipt = await tx.wait(); + console.log(`Transaction has been mined on block ${receipt.blockNumber}`); + } catch (e) { + console.error("Error in public transfer", e); + } finally { + setIsLoading({ ...isLoading, isPublicTransferNFT: false }); + } + }; + + const handleFetchNFTOwner = async () => { + if (!nftContract || !currentWallet) { + console.error("no contract or addrees"); + return; + } + setIsLoading({ ...isLoading, isFetchOwner: true }); + const owner = await nftContract.methods.owner_of(tokenId).simulate(); + console.log(`Owner of NFT is ${tokenId}: ${owner}`); + setIsLoading({ ...isLoading, isFetchOwner: false }); + }; + + const handlePrivateTransferNFT = async () => { + if (!nftContract || !currentWallet) { + console.error("no contract or addrees"); + return; + } + try { + setIsLoading({ ...isLoading, isPrivateTransferNFT: true }); + + const tx = await nftContract.methods + .transfer_to_private(AztecAddress.fromString(nftMintAddress), tokenId) + .send(); + console.log(`Private transaction ${await tx.getTxHash()}`); + console.log("Awaiting Transaction to be mined"); + const receipt = await tx.wait(); + console.log(`Transaction has been mined on block ${receipt.blockNumber}`); + console.log("Private Transaction has been done"); + } catch (e) { + console.error("Error in private transfer", e); + } finally { + setIsLoading({ ...isLoading, isPrivateTransferNFT: false }); + } + }; + + const handleFetchPrivateNFTTokenId = async (address:any) => { + let nftToken: [number[], boolean] = [[], false]; + if (!nftContract || !currentWallet) { + console.error("no contract or addrees"); + return; + } + try { + // const privateAddress =address || currentWallet.getAddress(); + setIsLoading({ ...isLoading, isFetchPrivateToken: true }); + nftToken = await nftContract.methods + .get_private_nfts(address, 0) + .simulate(); + toast.success("Private token fetched successfully" + nftToken); + console.log(`Private token id is ${nftToken}`); + } catch (error) { + console.error(error); + } finally { + setIsLoading({ ...isLoading, isFetchPrivateToken: false }); + return nftToken; + } + }; + + const handleVerify = async () => { + // const pathname = window.location.pathname; + // const pathParts = pathname.split("/").filter((path) => path !== ""); + // if (!AztecAddress.fromString(verifyAddress)) { + // return toast.error(`Please enter a valid address`); + // } + let privateNFTResponse = await handleFetchPrivateNFTTokenId(AztecAddress.fromString(verifyAddress)); + const [tokenIds = []] = privateNFTResponse || [[], false]; + const nonZeroTokenIds = (tokenIds as unknown as bigint[]).filter( + (nftTokenId: bigint) => nftTokenId !== 0n + ); + if (nonZeroTokenIds.length === 0) { + return toast.error(`Current wallet is not an NFT holder`); + } + return toast.success("You are an NFT holder"); + }; + + return ( +
+
+ +
+ + {/* mint nft contract flow */} + +
+ { + setTokenId(+e.target.value); + }} + /> + + { + setNFTMintAddress(e.target.value); + }} + /> +
+ + + +
+ { + setTokenId(+e.target.value); + }} + /> + + {/** Private Transfer NFT Flow Starts*/} + {/* token id */} + { + setTokenId(+e.target.value); + }} + /> + { + setNFTMintAddress(e.target.value); + }} + /> +
+ + + +
+ { + setNFTVerifyAddress(e.target.value); + }} + /> + +
+
+ ); +}; diff --git a/phantom-gate/src/components/WalletInteractions.tsx b/phantom-gate/src/components/WalletInteractions.tsx index 6b91237e5..53542ad8e 100644 --- a/phantom-gate/src/components/WalletInteractions.tsx +++ b/phantom-gate/src/components/WalletInteractions.tsx @@ -1,15 +1,31 @@ -import React, { useState, useEffect } from 'react'; -import { AccountWalletWithSecretKey, AztecAddress, computeSecretHash, Contract, ExtendedNote, Fr, Note } from '@aztec/aztec.js'; -import { TokenContract } from '@aztec/noir-contracts.js'; -import { useAccount } from '../hooks/useAccounts.js'; -import { Bell, Search, Loader } from 'lucide-react'; -import { toast } from 'react-hot-toast'; -import WalletSection from './walletSelection.js'; +import React, { useState, useEffect } from "react"; +import { + AccountWalletWithSecretKey, + AztecAddress, + computeSecretHash, + Contract, + ExtendedNote, + Fr, + Note, +} from "@aztec/aztec.js"; +import { NFTContract, TokenContract } from "@aztec/noir-contracts.js"; +import { useAccount } from "../hooks/useAccounts.js"; +import { Bell, Search, Loader } from "lucide-react"; +import { toast } from "react-hot-toast"; +import WalletSection from "./walletSelection.js"; +import { NftInteractions } from "./NftInteractions.js"; -const TokenRow = ({ token, onSelect }: { token: any, onSelect: any }) => ( - onSelect(token)}> +const TokenRow = ({ token, onSelect }: { token: any; onSelect: any }) => ( + onSelect(token)} + > - {token.name} + {token.name}
{token.symbol}
{token.name}
@@ -18,33 +34,41 @@ const TokenRow = ({ token, onSelect }: { token: any, onSelect: any }) => ( {token.portfolio}%
${token.price.toFixed(2)}
-
= 0 ? 'text-green-500' : 'text-red-500'}`}> - {token.priceChange >= 0 ? '+' : ''}{token.priceChange.toFixed(2)}% +
= 0 ? "text-green-500" : "text-red-500" + }`} + > + {token.priceChange >= 0 ? "+" : ""} + {token.priceChange.toFixed(2)}%
${token.balance.toFixed(2)}
-
{token.amount} {token.symbol}
+
+ {token.amount} {token.symbol} +
); export const WalletInteractions = () => { - const { deployToken, deployNFtToken } = useAccount(); + const { deployToken } = useAccount(); const [wallets, setWallets] = useState([]); - const [currentWallet, setCurrentWallet] = useState(null); + const [currentWallet, setCurrentWallet] = + useState(null); const [isLoading, setIsLoading] = useState<{ checkBalancePublic: boolean | undefined; - checkBalancePrivate: boolean | undefined; - createAccount?: boolean, - deployToken?: boolean, - mintPublic?: boolean, - mintPrivate?: boolean, - transferPublic?: boolean, - transferPrivate?: boolean, - deployNFTToken?: boolean, - movingPublic?: boolean, - movingPrivate?: boolean, + checkBalancePrivate: boolean | undefined; + createAccount?: boolean; + deployToken?: boolean; + mintPublic?: boolean; + mintPrivate?: boolean; + transferPublic?: boolean; + transferPrivate?: boolean; + deployNFTToken?: boolean; + movingPublic?: boolean; + movingPrivate?: boolean; }>({ checkBalancePublic: undefined, checkBalancePrivate: undefined, @@ -56,78 +80,107 @@ export const WalletInteractions = () => { transferPrivate: false, }); const [tokenContract, setTokenContract] = useState(null); - const [recipientAddress, setRecipientAddress] = useState(''); + const [recipientAddress, setRecipientAddress] = useState(""); const [transferAmount, setTransferAmount] = useState(0); - const [transactionStatus, setTransactionStatus] = useState(''); - const [tokens, setTokens] = useState<{ id: number; name: string; symbol: string; logo: string; portfolio: number; price: number; priceChange: number; balance: number; amount: number; }[]>([]); + const [transactionStatus, setTransactionStatus] = useState(""); + const [tokens, setTokens] = useState< + { + id: number; + name: string; + symbol: string; + logo: string; + portfolio: number; + price: number; + priceChange: number; + balance: number; + amount: number; + }[] + >([]); const [, setSelectedToken] = useState(null); - const [tab, setTab] = useState('Tokens'); - const [deployTokenAddress, setDeployTokenAddress] = useState(''); - const [deployNFTTokenAddress, setDeployNFTTokenAddress] = useState(''); + const [tab, setTab] = useState("Tokens"); + const [deployTokenAddress, setDeployTokenAddress] = useState(""); + const [nftContract, setNftContract] = useState(null); + const [walletVerifier, setWalletVerifier] = useState(""); useEffect(() => { // Simulated token data setTokens([ - { id: 1, name: 'USD Coin', symbol: 'USDC', logo: '/usdc-logo.svg', portfolio: 81.09, price: 1.00, priceChange: -0.14, balance: 279.73, amount: 280.0713 }, - { id: 2, name: 'Dai Stablecoin', symbol: 'DAI', logo: '/dai-logo.svg', portfolio: 15.44, price: 1.00, priceChange: -0.11, balance: 53.26, amount: 53.3194 }, - { id: 3, name: 'Ether', symbol: 'ETH', logo: '/eth-logo.svg', portfolio: 3.48, price: 2323.93, priceChange: -1.03, balance: 11.99, amount: 0.0052 }, + { + id: 1, + name: "USD Coin", + symbol: "USDC", + logo: "/usdc-logo.svg", + portfolio: 81.09, + price: 1.0, + priceChange: -0.14, + balance: 279.73, + amount: 280.0713, + }, + { + id: 2, + name: "Dai Stablecoin", + symbol: "DAI", + logo: "/dai-logo.svg", + portfolio: 15.44, + price: 1.0, + priceChange: -0.11, + balance: 53.26, + amount: 53.3194, + }, + { + id: 3, + name: "Ether", + symbol: "ETH", + logo: "/eth-logo.svg", + portfolio: 3.48, + price: 2323.93, + priceChange: -1.03, + balance: 11.99, + amount: 0.0052, + }, ]); }, []); - const handleDeployToken = async () => { if (!currentWallet) { - toast.error('Please select a wallet first'); + toast.error("Please select a wallet first"); return; } setIsLoading({ ...isLoading, deployToken: true }); try { const contract = await deployToken(currentWallet); setTokenContract(contract); - console.log('Token deployed at:', contract.address.toString()); + console.log("Token deployed at:", contract.address.toString()); setDeployTokenAddress(contract.address.toString()); - toast.success('Token deployed successfully!'); + toast.success("Token deployed successfully!"); } catch (error) { - toast.error('Failed to deploy token: ' + (error as Error).message); + toast.error("Failed to deploy token: " + (error as Error).message); } finally { setIsLoading({ ...isLoading, deployToken: false }); } }; - const handleDeplyNftToken = async () => { - if (!currentWallet) { - toast.error('Please select a wallet first'); - return; - } - setIsLoading({ ...isLoading, deployNFTToken: true }); - try { - const nftContract = await deployNFtToken(currentWallet); - console.log('NFT Token deployed at:', nftContract.address.toString()); - setDeployNFTTokenAddress(nftContract.address.toString()); - toast.success('NFT Token deployed successfully!'); - } catch (error) { - toast.error('Failed to deploy token: ' + (error as Error).message); - } finally { - setIsLoading({ ...isLoading, deployNFTToken: false }); - } - } - const handleMint = async (isPublic: boolean) => { if (!tokenContract || !currentWallet) { - toast.error('Please deploy a token and select a wallet first'); + toast.error("Please deploy a token and select a wallet first"); return; } - setIsLoading({ ...isLoading, [isPublic ? 'mintPublic' : 'mintPrivate']: true }); + setIsLoading({ + ...isLoading, + [isPublic ? "mintPublic" : "mintPrivate"]: true, + }); try { let tx; if (isPublic) { - tx = await tokenContract.methods.mint_public(currentWallet.getAddress(), 100n).send(); + tx = await tokenContract.methods + .mint_public(currentWallet.getAddress(), 100n) + .send(); } else { const random = Fr.random(); const secretHash = await computeSecretHash(random); tx = await tokenContract.methods.mint_private(100n, secretHash).send(); - const receipt = await tx.wait() - const note = new Note([new Fr(100n), secretHash]) + const receipt = await tx.wait(); + const note = new Note([new Fr(100n), secretHash]); const extendedNote = new ExtendedNote( note, currentWallet.getAddress(), @@ -135,46 +188,67 @@ export const WalletInteractions = () => { TokenContract.storage.pending_shields.slot, TokenContract.notes.TransparentNote.id, receipt.txHash - ) - await currentWallet.addNote(extendedNote) + ); + await currentWallet.addNote(extendedNote); tx = await tokenContract.methods .redeem_shield(currentWallet.getAddress(), 100n, random) - .send() + .send(); } const receipt = await tx.wait(); setTransactionStatus(`${receipt.status}`); - toast.success(`${isPublic ? 'Public' : 'Private'} minting successful!`); + toast.success(`${isPublic ? "Public" : "Private"} minting successful!`); } catch (error) { - toast.error(`Failed to mint ${isPublic ? 'public' : 'private'}: ${String(error)}`); + toast.error( + `Failed to mint ${isPublic ? "public" : "private"}: ${String(error)}` + ); } finally { - setIsLoading({ ...isLoading, [isPublic ? 'mintPublic' : 'mintPrivate']: false }); + setIsLoading({ + ...isLoading, + [isPublic ? "mintPublic" : "mintPrivate"]: false, + }); } }; const checkBalance = async (isPublic = true) => { if (!tokenContract || !currentWallet) { - console.error('No contract or wallet address found'); + console.error("No contract or wallet address found"); return; } try { - const method = isPublic ? 'balance_of_public' : 'balance_of_private'; - const balance = await tokenContract.methods[method](currentWallet.getAddress()).simulate(); + const method = isPublic ? "balance_of_public" : "balance_of_private"; + const balance = await tokenContract.methods[method]( + currentWallet.getAddress() + ).simulate(); toast.success( - `${isPublic ? 'Public' : 'Private'} Balance of address ${currentWallet.getAddress().toShortString()}: ${balance}` + `${isPublic ? "Public" : "Private"} Balance of address ${currentWallet + .getAddress() + .toShortString()}: ${balance}` ); } catch (error) { - console.error('Error checking balance:', error); - toast.error(`Error checking ${isPublic ? 'public' : 'private'} balance: ${(error as Error).message}`); + console.error("Error checking balance:", error); + toast.error( + `Error checking ${isPublic ? "public" : "private"} balance: ${ + (error as Error).message + }` + ); } }; const handleTransfer = async (isPublic: boolean) => { - if (!tokenContract || !currentWallet || !recipientAddress || transferAmount <= 0) { - toast.error('Please fill in all transfer details'); + if ( + !tokenContract || + !currentWallet || + !recipientAddress || + transferAmount <= 0 + ) { + toast.error("Please fill in all transfer details"); return; } - setIsLoading({ ...isLoading, [isPublic ? 'transferPublic' : 'transferPrivate']: true }); + setIsLoading({ + ...isLoading, + [isPublic ? "transferPublic" : "transferPrivate"]: true, + }); try { let tx; if (isPublic) { @@ -187,28 +261,46 @@ export const WalletInteractions = () => { ) .send(); } else { - tx = (await TokenContract.at(tokenContract.address, currentWallet)).methods + tx = ( + await TokenContract.at(tokenContract.address, currentWallet) + ).methods .transfer(recipientAddress as any as AztecAddress, transferAmount) - .send() + .send(); } const receipt = await tx.wait(); setTransactionStatus(`${receipt.status}`); - toast.success(`${isPublic ? 'Public' : 'Private'} transfer successful!`); + toast.success(`${isPublic ? "Public" : "Private"} transfer successful!`); } catch (error) { - toast.error(`Failed to transfer ${isPublic ? 'public' : 'private'}: ` + (error as Error).message); + toast.error( + `Failed to transfer ${isPublic ? "public" : "private"}: ` + + (error as Error).message + ); } finally { - setIsLoading({ ...isLoading, [isPublic ? 'transferPublic' : 'transferPrivate']: false }); + setIsLoading({ + ...isLoading, + [isPublic ? "transferPublic" : "transferPrivate"]: false, + }); } }; const handleMovingTokens = async (isPublic = true) => { - if (!recipientAddress || transferAmount === 0 || !tokenContract || !currentWallet) { - return toast.error('Invalid call: Please check recipient address, transfer amount, and contract/wallet availability.'); + if ( + !recipientAddress || + transferAmount === 0 || + !tokenContract || + !currentWallet + ) { + return toast.error( + "Invalid call: Please check recipient address, transfer amount, and contract/wallet availability." + ); } - + try { - setIsLoading({ ...isLoading, [isPublic ? 'movingPublic' : 'movingPrivate']: true }); - + setIsLoading({ + ...isLoading, + [isPublic ? "movingPublic" : "movingPrivate"]: true, + }); + let tx; if (isPublic) { tx = await tokenContract.methods @@ -231,21 +323,28 @@ export const WalletInteractions = () => { ) .send(); } - + const receipt = await tx.wait(); setTransactionStatus(`${receipt.status}`); - toast.success(`${isPublic ? 'Public' : 'Private'} token move successful!`); + toast.success( + `${isPublic ? "Public" : "Private"} token move successful!` + ); } catch (e: any) { - toast.error(`Error moving ${isPublic ? 'public' : 'private'} tokens: ${e.message}`); + toast.error( + `Error moving ${isPublic ? "public" : "private"} tokens: ${e.message}` + ); } finally { - setIsLoading({ ...isLoading, [isPublic ? 'movingPublic' : 'movingPrivate']: false }); + setIsLoading({ + ...isLoading, + [isPublic ? "movingPublic" : "movingPrivate"]: false, + }); } return; }; const onSelecTab = (tab: string) => { setTab(tab); console.log(tab); - } + }; return (
@@ -265,13 +364,16 @@ export const WalletInteractions = () => { />
- +
-

Decentralized accounts

@@ -286,170 +388,200 @@ export const WalletInteractions = () => { ))} */}
- {['Tokens', 'NFTs', 'DeFi', 'Transactions', 'Spending Caps'].map((tabAction) => ( - - ))} + > + {tabAction} + + ) + )}
- {tab === 'Tokens' && ( -
-

Wallet Actions

- {/* */} -
- -
- -
- - - - - -
- + {tab === "Tokens" && ( +
+

Wallet Actions

+ {/* */} +
+ +
-
- setRecipientAddress(e.target.value)} - placeholder="Enter Recipient Address" - className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" - /> - setTransferAmount(+e.target.value)} - placeholder="Transfer Amount" - className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" - /> -
+
- + +
+ setRecipientAddress(e.target.value)} + placeholder="Enter Recipient Address" + className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" + /> + setTransferAmount(+e.target.value)} + placeholder="Transfer Amount" + className="bg-gray-800 text-white px-4 py-3 rounded-lg w-full focus:outline-none focus:ring-2 focus:ring-purple-500" + /> +
+ + + + +
-
)} - {tab === 'Transactions' &&
-

Transactions

-
- Deployed Token Address: - {deployTokenAddress} -
-
- Transaction Status: - {transactionStatus}
-
- Deployed NFT Token Address: - {deployNFTTokenAddress} + )} + {tab === "Transactions" && ( +
+

Transactions

+
+ + Deployed Token Address: + + {deployTokenAddress} +
+
+ Transaction Status: + {transactionStatus} +
+
+ + Deployed NFT Token Address: + + {nftContract?.address?.toString()} +
-
} - -
- - - - - - -
-

Token List

- - - - - - - - - - - {tokens.map((token) => ( - - ))} - -
TokenPortfolio %Price (24hr) - Balance
-
+ )} + {tab === "NFTs" && ( + + )} +
+ + {tab === "Tokens" &&
+

Token List

+ + + + + + + + + + + {tokens.map((token) => ( + + ))} + +
TokenPortfolio %Price (24hr)Balance
+
}
); -} +}; export default WalletInteractions; -// export const WalletInteractions = () => { \ No newline at end of file +// export const WalletInteractions = () => { diff --git a/phantom-gate/src/hooks/useAccounts.ts b/phantom-gate/src/hooks/useAccounts.ts index 7b41e3984..3e82e70d1 100644 --- a/phantom-gate/src/hooks/useAccounts.ts +++ b/phantom-gate/src/hooks/useAccounts.ts @@ -60,9 +60,9 @@ export const useAccount = () => {// const pxe = useAtomValue(pxeAtom) } return } - const deployNFtToken = async (owner: AccountWalletWithSecretKey) => { + const deployNFtToken = async (owner: AccountWalletWithSecretKey, name:string, symbol:string) => { const ownerAddress = owner.getAddress() - const deployedContract = await NFTContract.deploy(owner, ownerAddress, 'Phantom', 'PHG') + const deployedContract = await NFTContract.deploy(owner, ownerAddress, name, symbol) .send() .deployed() diff --git a/phantom-gate/vite.config.ts b/phantom-gate/vite.config.ts index a15d30eab..611cae2ea 100644 --- a/phantom-gate/vite.config.ts +++ b/phantom-gate/vite.config.ts @@ -3,7 +3,7 @@ import { nodePolyfills } from 'vite-plugin-node-polyfills' import resolve from 'vite-plugin-resolve' import react from '@vitejs/plugin-react' -const aztecVersion = '0.51.0' +const aztecVersion = '0.60.0' export default defineConfig({ plugins: [ diff --git a/phantom-gate/yarn.lock b/phantom-gate/yarn.lock index e4ef1a20a..9ac19cca7 100644 --- a/phantom-gate/yarn.lock +++ b/phantom-gate/yarn.lock @@ -20,101 +20,103 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@aztec/accounts@^0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-0.57.0.tgz#ac6df18280a62e6cdb0639a387908005ca51843e" - integrity sha512-n+RdoaI5UUrGTdojGLlXtc81WfBLNLnTYOUv7o5P9G3MIn5skBT1ed6vkTCks3L/9rV/St+osl2eWavCKhaIqg== - dependencies: - "@aztec/aztec.js" "0.57.0" - "@aztec/circuit-types" "0.57.0" - "@aztec/circuits.js" "0.57.0" - "@aztec/entrypoints" "0.57.0" - "@aztec/ethereum" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/types" "0.57.0" +"@aztec/accounts@^0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-0.60.0.tgz#8bd8618b87611862f54d1df58605d3b520e2d587" + integrity sha512-Ldw6YBs/KERbgf5PtwI4ntlI8tHf02U34ylULCSAYk1wNOlfFM189/ioEmT1m+Q9ZC4P2kvoRF/mQzhCDM1brA== + dependencies: + "@aztec/aztec.js" "0.60.0" + "@aztec/circuit-types" "0.60.0" + "@aztec/circuits.js" "0.60.0" + "@aztec/entrypoints" "0.60.0" + "@aztec/ethereum" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/types" "0.60.0" tslib "^2.4.0" -"@aztec/aztec.js@0.57.0", "@aztec/aztec.js@^0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-0.57.0.tgz#46a2a94637eafcf972dc627f67817ace05dc9514" - integrity sha512-IywIWQEEdfiY7xQe3iUJXgKm8aV7isYXteouUmCz8OX1JRHzPb34TtMlu/Im91Ax+fiuadHRsILICKP7Y7vcbQ== - dependencies: - "@aztec/circuit-types" "0.57.0" - "@aztec/circuits.js" "0.57.0" - "@aztec/ethereum" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/l1-artifacts" "0.57.0" - "@aztec/protocol-contracts" "0.57.0" - "@aztec/types" "0.57.0" +"@aztec/aztec.js@0.60.0", "@aztec/aztec.js@^0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-0.60.0.tgz#46e90ee5252ccfa2aa6d1535715e7333869180c4" + integrity sha512-tUOYP1u5QG5IqD/DI71da4dluyt4fqbM2/LdvBv2ehKnYho42h6laiIDNbyH9yAH48UtWSIKpwVGlmJqC8YdCQ== + dependencies: + "@aztec/circuit-types" "0.60.0" + "@aztec/circuits.js" "0.60.0" + "@aztec/ethereum" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/l1-artifacts" "0.60.0" + "@aztec/protocol-contracts" "0.60.0" + "@aztec/types" "0.60.0" axios "^1.7.2" tslib "^2.4.0" viem "^2.7.15" -"@aztec/bb.js@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-0.57.0.tgz#0d3238aee14d0bd873e88405b577399595899354" - integrity sha512-6chgqPKfD21HCWkHLo/nsOAZ5t+IQh2jBqiVJZQazLO7UMZuTX5V6tFOCOpbbiroLriQqvB6D40+U6kRYGK0Ww== +"@aztec/bb.js@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-0.60.0.tgz#990a7f7368293df5e93ae5603fbab5081e43f29a" + integrity sha512-iZpbh0mUVo3wAdycNmhqHhi6hBVnNUz7PdQrV0Ao0UYt+1tVEuuK43DIzaYcOhWbhyT63Jov+EE6oPXycZZC8Q== dependencies: comlink "^4.4.1" commander "^10.0.1" debug "^4.3.4" + fflate "^0.8.0" tslib "^2.4.0" -"@aztec/circuit-types@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/circuit-types/-/circuit-types-0.57.0.tgz#b20441c2b4a5da743877efc7a8f11ddc72564073" - integrity sha512-FDFrBhOlVr1PIuYYVKCYOM28/TBEGpFYkTZ3EGZEILgS9lh3eJajmNlLzBeohh67eYEapj8em2xKM2nzQrbF5Q== +"@aztec/circuit-types@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/circuit-types/-/circuit-types-0.60.0.tgz#2a7ed1687ff5a7e4d3fb2e521ac5b2d03ee98eaf" + integrity sha512-AX5K/s2Hvm1wAYOdW2z/EUERH8cM9sAxy6D6Th7fcnUaPG6QTij16CaS0GQkxSqcAd7e0sx7DCINRTVX+M9myQ== dependencies: - "@aztec/circuits.js" "0.57.0" - "@aztec/ethereum" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/types" "0.57.0" + "@aztec/circuits.js" "0.60.0" + "@aztec/ethereum" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/types" "0.60.0" browserify-cipher "^1.0.1" lodash.clonedeep "^4.5.0" lodash.isequal "^4.5.0" lodash.times "^4.3.2" tslib "^2.5.0" -"@aztec/circuits.js@0.57.0", "@aztec/circuits.js@^0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/circuits.js/-/circuits.js-0.57.0.tgz#1eb00dfdb158bf4b9f5cdbcc5f98d78cc055e017" - integrity sha512-cHY+35RyUcVIjR8itQuu0mHVkaXV9InkwNiHNW16m7+jAFXO0NLWXU5faleniWrpG/0hTnuFYfYzX5zzPj5mvA== +"@aztec/circuits.js@0.60.0", "@aztec/circuits.js@^0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/circuits.js/-/circuits.js-0.60.0.tgz#4d65a22d0074d47efac8fc84b96a6f14e4b21ca6" + integrity sha512-sgtKzYbzf6Wh22fhoGZyDTrtAmpXsXgtXETdcGKGsJp6+Oe/c5YmwKvcJqfbqd2kW0eIvKcm9ZDnuFfF8IhWRQ== dependencies: - "@aztec/bb.js" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/types" "0.57.0" + "@aztec/bb.js" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/types" "0.60.0" eslint "^8.35.0" lodash.chunk "^4.2.0" tslib "^2.4.0" -"@aztec/entrypoints@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-0.57.0.tgz#67bb1687ee6e4fe5a5a0348cc38cb09fc0cc8000" - integrity sha512-smu/u0RsOOGeo56gJ2ydMQogEoc/r4jWg/QAmheqnM47pClOrFrjhpWHxIIzAU6P7ZZzQCZeS1T1hyN2bRFdoA== +"@aztec/entrypoints@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-0.60.0.tgz#357853f538e9731692f3879f7a87efd9016a17a0" + integrity sha512-hVotSR9DGs3hPjiPbqnVkmQgciNRdnLI8HxWX1vjedm56qaO01aiBhC6JpF1b76vvfD0zuIx+BFD9PtzLSRSdA== dependencies: - "@aztec/aztec.js" "0.57.0" - "@aztec/circuit-types" "0.57.0" - "@aztec/circuits.js" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/protocol-contracts" "0.57.0" + "@aztec/aztec.js" "0.60.0" + "@aztec/circuit-types" "0.60.0" + "@aztec/circuits.js" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/protocol-contracts" "0.60.0" tslib "^2.4.0" -"@aztec/ethereum@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-0.57.0.tgz#7564a30ae4fc65cc6f7f8c12f46be1be33301f51" - integrity sha512-uR7MGGmvUANW6RAHsVXfwVKMls27ko1WJIzenbcCXDEADU2OGvp+xLJ4OLiP7YSRCnbv/WDck+O3UTdtP5YOsQ== +"@aztec/ethereum@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-0.60.0.tgz#e2b09621ec1858a78198e5d59d11557960fba2d6" + integrity sha512-QJ0aLi4g8JHcSjPCZtzxktpFmPr+xoRPEhzwzWxotYHrqIxrVNiH+7f+mTJ1NwM7NKrthp6ClX2DI+r22F5OlA== dependencies: - "@aztec/foundation" "0.57.0" + "@aztec/foundation" "0.60.0" + "@aztec/l1-artifacts" "0.60.0" dotenv "^16.0.3" tslib "^2.4.0" viem "^2.7.15" -"@aztec/foundation@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-0.57.0.tgz#50cec5d06722fa5fc611fb5dd4898ef212f9e8b3" - integrity sha512-wgaluyOyG8zUmxohFIlrsPj1QmLGtkN68sbYvfcAO0bR3Bhy7jbtrkCc6I7mYkiZShg41Zlj+l/WReydzOCrZg== +"@aztec/foundation@0.60.0", "@aztec/foundation@^0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-0.60.0.tgz#f8e3d91eb536d7f6b4a8908539f286792829e356" + integrity sha512-AKs+TmtfWm48GBwvcp5QrNr8xEmE1PQwfaDBvcdpNQmZIE03SAKUTQNUFt6DzDFzqCIGvvvXxRakQP8CG/wMlA== dependencies: - "@aztec/bb.js" "0.57.0" + "@aztec/bb.js" "0.60.0" "@koa/cors" "^5.0.0" "@noble/curves" "^1.2.0" bn.js "^5.2.1" @@ -135,39 +137,39 @@ sha3 "^2.1.4" zod "^3.22.4" -"@aztec/l1-artifacts@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-0.57.0.tgz#8d346671ee933d69ac082211e269bb5a408ea2df" - integrity sha512-fZokAEZug2NnKXr/sWuwWlSr5BKTZcs5vm2RBu9FiV8dpsnRkyYVtaI6JXPZKeeApIh+oqHA2X0WUgxU67d67g== +"@aztec/l1-artifacts@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-0.60.0.tgz#5374e725e2af63985d1f0f81de9e5377564335e6" + integrity sha512-XwzG43UOUs6P7EFmiqnFDb+DDkGsRQltpx9z0l+5EtKpDaiRUas3TQ4Gx4fmfqYfICccfcqMoDePgUidw5rbjg== dependencies: tslib "^2.4.0" -"@aztec/noir-contracts.js@^0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-0.57.0.tgz#7a7705a40755e4928e420cd13ba314e371d1e342" - integrity sha512-jOz+Ze1QZmRKf/tjLrXxRt5ZZTQ6b+yZ2rDptLh+pcShTKGmj6xPdkVUHKCBCVye3dxiML3vXbPNKFqlO/HfVA== +"@aztec/noir-contracts.js@^0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-0.60.0.tgz#298bfa9078dc910f7e7a450d725ecf95fc97e4f1" + integrity sha512-YAg763QRg8/nBi9MgXRCN4iE3HhPo8doKzQwYtmSgoYyvxOqDDiVUDdTauTK2CX+9C13Zv81OLFBA1uQ7CXWfw== dependencies: - "@aztec/aztec.js" "0.57.0" + "@aztec/aztec.js" "0.60.0" tslib "^2.4.0" -"@aztec/protocol-contracts@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-0.57.0.tgz#1fc37470546f04bbf0dec23f01a714b7f2eced95" - integrity sha512-sSertpZyWIyBiFrfytpTFABiWNH5nYyyTnCmq84CsiUHBy47pTTeNmW+uqGB6o0lMtACwzKbS/YK58p7tPy7QA== +"@aztec/protocol-contracts@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-0.60.0.tgz#7b8365641bdc8c327e0e598d490ee5ccdde67239" + integrity sha512-0skRTm6iGje1A0EvsGr6/EeVRnO/o6pvoFmh2LdOapKRhTBR6MMX6MALnnbycZQRfmXpyhv/HPV4X+LfZFFRjQ== dependencies: - "@aztec/circuits.js" "0.57.0" - "@aztec/foundation" "0.57.0" - "@aztec/types" "0.57.0" + "@aztec/circuits.js" "0.60.0" + "@aztec/foundation" "0.60.0" + "@aztec/types" "0.60.0" lodash.omit "^4.5.0" tslib "^2.4.0" -"@aztec/types@0.57.0": - version "0.57.0" - resolved "https://registry.yarnpkg.com/@aztec/types/-/types-0.57.0.tgz#c0ebcb0b1738cb3c0a1b2e9bef55366878363548" - integrity sha512-7PtIJFg0gwnl4+A02OHpyCsLdSXcskgVHrcOqusEcQ0IWI69q39fabBf6S82vgUrdvaAlynae2erz3PErHDdmQ== +"@aztec/types@0.60.0": + version "0.60.0" + resolved "https://registry.yarnpkg.com/@aztec/types/-/types-0.60.0.tgz#50816f96abac92233a2abca42e87b415efb5a7dc" + integrity sha512-SXcZuSguIvHllb/lwyvULjIbEUiYyE7bv/1DMfoYVYORCNqzsHGcJYMxWwZInXzM7fw9Dn4Q9M4db/TqtfE7Kw== dependencies: - "@aztec/ethereum" "0.57.0" - "@aztec/foundation" "0.57.0" + "@aztec/ethereum" "0.60.0" + "@aztec/foundation" "0.60.0" "@babel/code-frame@^7.25.9": version "7.25.9" @@ -1761,6 +1763,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fflate@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" + integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" From ff8a1d728427030070051c5fd92e5d2a66cf8b2e Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Wed, 30 Oct 2024 12:56:26 +0530 Subject: [PATCH 3/9] fix ui for the NFT Page --- .../src/components/NftInteractions.tsx | 222 ++++++++++-------- .../src/components/WalletInteractions.tsx | 7 - 2 files changed, 121 insertions(+), 108 deletions(-) diff --git a/phantom-gate/src/components/NftInteractions.tsx b/phantom-gate/src/components/NftInteractions.tsx index 81512b6e1..aacbb87fd 100644 --- a/phantom-gate/src/components/NftInteractions.tsx +++ b/phantom-gate/src/components/NftInteractions.tsx @@ -62,15 +62,23 @@ export const NftInteractions = ({ console.error("no contract or addrees or token id is 0"); return; } - setIsLoading({ ...isLoading, isMintingNFT: true }); - const tx = await nftContract.methods - .mint(AztecAddress.fromString(nftMintAddress), tokenId) - .send(); - console.log(`Sent nft mint transaction ${await tx.getTxHash()}`); - - const receipt = await tx.wait(); - console.log(`Transaction has been mined on block ${receipt.blockNumber}`); + try{ + setIsLoading({ ...isLoading, isMintingNFT: true }); + const tx = await nftContract.methods + .mint(AztecAddress.fromString(nftMintAddress), tokenId) + .send(); + console.log(`Sent nft mint transaction ${await tx.getTxHash()}`); + toast.success("NFT minted successfully"); + const receipt = await tx.wait(); + console.log(`Transaction has been mined on block ${receipt.blockNumber}`); + } + catch(e){ + console.error("Error in minting NFT", e); + toast.error("Error in minting NFT"); + } + finally { setIsLoading({ ...isLoading, isMintingNFT: false }); + } }; const handlePublicTransferNFT = async () => { @@ -89,11 +97,12 @@ export const NftInteractions = ({ ) .send(); console.log(`Sent public transfer transaction ${await tx.getTxHash()}`); - + toast.success("NFT transferred successfully"); const receipt = await tx.wait(); console.log(`Transaction has been mined on block ${receipt.blockNumber}`); } catch (e) { console.error("Error in public transfer", e); + toast.error("Error in public transfer of NFT"); } finally { setIsLoading({ ...isLoading, isPublicTransferNFT: false }); } @@ -104,10 +113,19 @@ export const NftInteractions = ({ console.error("no contract or addrees"); return; } - setIsLoading({ ...isLoading, isFetchOwner: true }); + try{ + setIsLoading({ ...isLoading, isFetchOwner: true }); const owner = await nftContract.methods.owner_of(tokenId).simulate(); console.log(`Owner of NFT is ${tokenId}: ${owner}`); - setIsLoading({ ...isLoading, isFetchOwner: false }); + toast.success(`Owner of NFT is ${tokenId}: ${owner}`); + } + catch(e){ + console.error("Error in fetching owner", e); + toast.error("Error in fetching owner"); + } + finally{ + setIsLoading({ ...isLoading, isFetchOwner: false }); + } }; const handlePrivateTransferNFT = async () => { @@ -126,29 +144,32 @@ export const NftInteractions = ({ const receipt = await tx.wait(); console.log(`Transaction has been mined on block ${receipt.blockNumber}`); console.log("Private Transaction has been done"); + toast.success("Private transfer of NFT done successfully"); } catch (e) { console.error("Error in private transfer", e); + toast.error("Error in private transfer of NFT"); } finally { setIsLoading({ ...isLoading, isPrivateTransferNFT: false }); } }; - const handleFetchPrivateNFTTokenId = async (address:any) => { + const handleFetchPrivateNFTTokenId = async (address: any) => { let nftToken: [number[], boolean] = [[], false]; if (!nftContract || !currentWallet) { console.error("no contract or addrees"); return; } try { - // const privateAddress =address || currentWallet.getAddress(); + // const privateAddress =address || currentWallet.getAddress(); setIsLoading({ ...isLoading, isFetchPrivateToken: true }); nftToken = await nftContract.methods .get_private_nfts(address, 0) .simulate(); - toast.success("Private token fetched successfully" + nftToken); + toast.success("Private token fetched successfully" + nftToken); console.log(`Private token id is ${nftToken}`); } catch (error) { console.error(error); + toast.error("Error in fetching private token"); } finally { setIsLoading({ ...isLoading, isFetchPrivateToken: false }); return nftToken; @@ -156,12 +177,9 @@ export const NftInteractions = ({ }; const handleVerify = async () => { - // const pathname = window.location.pathname; - // const pathParts = pathname.split("/").filter((path) => path !== ""); - // if (!AztecAddress.fromString(verifyAddress)) { - // return toast.error(`Please enter a valid address`); - // } - let privateNFTResponse = await handleFetchPrivateNFTTokenId(AztecAddress.fromString(verifyAddress)); + let privateNFTResponse = await handleFetchPrivateNFTTokenId( + AztecAddress.fromString(verifyAddress) + ); const [tokenIds = []] = privateNFTResponse || [[], false]; const nonZeroTokenIds = (tokenIds as unknown as bigint[]).filter( (nftTokenId: bigint) => nftTokenId !== 0n @@ -174,25 +192,24 @@ export const NftInteractions = ({ return (
-
- -
+

NFT Actions

+ {/* mint nft contract flow */} -
+
{ @@ -209,53 +226,54 @@ export const NftInteractions = ({ setNFTMintAddress(e.target.value); }} /> -
- + - -
- { - setTokenId(+e.target.value); - }} - /> - {/** Private Transfer NFT Flow Starts*/} - {/* token id */} +
+ + { + setTokenId(+e.target.value); + }} + /> + + {/** Private Transfer NFT Flow Starts*/} + {/* token id */} +
{ @@ -271,29 +289,31 @@ export const NftInteractions = ({ setNFTMintAddress(e.target.value); }} /> -
- - - -
+ + +
+ +
- +
); diff --git a/phantom-gate/src/components/WalletInteractions.tsx b/phantom-gate/src/components/WalletInteractions.tsx index 53542ad8e..bc45e150d 100644 --- a/phantom-gate/src/components/WalletInteractions.tsx +++ b/phantom-gate/src/components/WalletInteractions.tsx @@ -380,13 +380,6 @@ export const WalletInteractions = () => { $344.98 -$0.57 (-0.16%)
-
- {/* {['Buy', 'Swap', 'Bridge', 'Send', 'Sell', 'Stake'].map((action) => ( - - ))} */} -
{["Tokens", "NFTs", "DeFi", "Transactions", "Spending Caps"].map( (tabAction) => ( From d8beed97d8ab196dc803264db1e70726a209c3e8 Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Wed, 30 Oct 2024 16:25:51 +0530 Subject: [PATCH 4/9] fix build issue --- .../contracts/account/codegenCache.json | 2 +- .../account/src/artifacts/SchnorrAccount.ts | 70 ++++---- phantom-gate/contracts/counter/Nargo.toml | 14 +- .../contracts/counter/codegenCache.json | 6 + .../counter/src/artifacts/Counter.ts | 155 ++++++++++++++++++ phantom-gate/contracts/counter/src/main.nr | 6 +- phantom-gate/src/artifacts/Counter.ts | 6 +- phantom-gate/src/artifacts/SchnorrAccount.ts | 6 +- .../src/components/NftInteractions.tsx | 2 +- .../src/components/WalletInteractions.tsx | 1 - 10 files changed, 220 insertions(+), 48 deletions(-) create mode 100644 phantom-gate/contracts/counter/codegenCache.json create mode 100644 phantom-gate/contracts/counter/src/artifacts/Counter.ts diff --git a/phantom-gate/contracts/account/codegenCache.json b/phantom-gate/contracts/account/codegenCache.json index 79df75d34..dd0834526 100644 --- a/phantom-gate/contracts/account/codegenCache.json +++ b/phantom-gate/contracts/account/codegenCache.json @@ -1,6 +1,6 @@ { "account-SchnorrAccount.json": { "contractName": "SchnorrAccount", - "hash": "b40dd2b3700899ec3097908e2daa3472b1c5eaa9b8857dd4c8a6686eec63f2fc" + "hash": "b260fbc8dd255d7045c8821152dc627bb7130bbcaf85ca7724a62e26a324e161" } } \ No newline at end of file diff --git a/phantom-gate/contracts/account/src/artifacts/SchnorrAccount.ts b/phantom-gate/contracts/account/src/artifacts/SchnorrAccount.ts index d769df618..dfd81930c 100644 --- a/phantom-gate/contracts/account/src/artifacts/SchnorrAccount.ts +++ b/phantom-gate/contracts/account/src/artifacts/SchnorrAccount.ts @@ -3,20 +3,36 @@ /* eslint-disable */ import { + type AbiType, AztecAddress, - AztecAddressLike, Contract, - ContractArtifact, + type AztecAddressLike, + CompleteAddress, + Contract, + type ContractArtifact, ContractBase, ContractFunctionInteraction, - ContractInstanceWithAddress, - ContractMethod, - ContractStorageLayout, - ContractNotes, - DeployMethod, FieldLike, + type ContractInstanceWithAddress, + type ContractMethod, + type ContractStorageLayout, + type ContractNotes, + decodeFromAbi, + DeployMethod, + EthAddress, + type EthAddressLike, + EventSelector, + type FieldLike, Fr, - FunctionSelectorLike, loadContractArtifact, - NoirCompiledContract, - NoteSelector, Wallet + type FunctionSelectorLike, + L1EventPayload, + loadContractArtifact, + type NoirCompiledContract, + NoteSelector, + Point, + type PublicKey, + PublicKeys, + type UnencryptedL2Log, + type Wallet, + type WrappedFieldLike, } from '@aztec/aztec.js'; import SchnorrAccountContractArtifactJson from '../../target/account-SchnorrAccount.json' assert { type: 'json' }; export const SchnorrAccountContractArtifact = loadContractArtifact(SchnorrAccountContractArtifactJson as NoirCompiledContract); @@ -54,30 +70,26 @@ export class SchnorrAccountContract extends ContractBase { /** * Creates a tx to deploy a new instance of this contract. */ - public static deploy(wallet: Wallet, - // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike - ) { - return new DeployMethod(Fr.ZERO, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); + public static deploy(wallet: Wallet, signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike) { + return new DeployMethod(PublicKeys.default(), wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); } /** * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. */ - public static deployWithPublicKeysHash(publicKeysHash: Fr, wallet: Wallet, - // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike - ) { - return new DeployMethod(publicKeysHash, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); + public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet, signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike) { + return new DeployMethod(publicKeys, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); } /** * Creates a tx to deploy a new instance of this contract using the specified constructor method. */ public static deployWithOpts( - opts: { publicKeysHash?: Fr; method?: M; wallet: Wallet }, - // ...args: Parameters + opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet }, + ...args: Parameters ) { return new DeployMethod( - opts.publicKeysHash ?? Fr.ZERO, + opts.publicKeys ?? PublicKeys.default(), opts.wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, @@ -108,29 +120,29 @@ export class SchnorrAccountContract extends ContractBase { public static get notes(): ContractNotes<'PublicKeyNote'> { return { PublicKeyNote: { - id: new NoteSelector(2866150763), + id: new NoteSelector(2806681024), } } as ContractNotes<'PublicKeyNote'>; } /** Type-safe wrappers for the public methods exposed by the contract. */ - public override methods!: { + public declare methods: { + /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ + compute_note_hash_and_optionally_a_nullifier: ((contract_address: AztecAddressLike, nonce: FieldLike, storage_slot: FieldLike, note_type_id: FieldLike, compute_nullifier: boolean, serialized_note: FieldLike[]) => ContractFunctionInteraction) & Pick; + /** constructor(signing_pub_key_x: field, signing_pub_key_y: field) */ constructor: ((signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike) => ContractFunctionInteraction) & Pick; + /** entrypoint(app_payload: struct, fee_payload: struct, cancellable: boolean) */ + entrypoint: ((app_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike }, fee_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike, is_fee_payer: boolean }, cancellable: boolean) => ContractFunctionInteraction) & Pick; + /** lookup_validity(consumer: struct, inner_hash: field) */ lookup_validity: ((consumer: AztecAddressLike, inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; - /** entrypoint(app_payload: struct, fee_payload: struct) */ - entrypoint: ((app_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike }, fee_payload: { function_calls: { args_hash: FieldLike, function_selector: FunctionSelectorLike, target_address: AztecAddressLike, is_public: boolean, is_static: boolean }[], nonce: FieldLike, is_fee_payer: boolean }) => ContractFunctionInteraction) & Pick; - /** verify_private_authwit(inner_hash: field) */ verify_private_authwit: ((inner_hash: FieldLike) => ContractFunctionInteraction) & Pick; - - /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ - compute_note_hash_and_optionally_a_nullifier: ((contract_address: AztecAddressLike, nonce: FieldLike, storage_slot: FieldLike, note_type_id: FieldLike, compute_nullifier: boolean, serialized_note: FieldLike[]) => ContractFunctionInteraction) & Pick; }; diff --git a/phantom-gate/contracts/counter/Nargo.toml b/phantom-gate/contracts/counter/Nargo.toml index b34d0dbc2..fc4f3ea63 100644 --- a/phantom-gate/contracts/counter/Nargo.toml +++ b/phantom-gate/contracts/counter/Nargo.toml @@ -5,10 +5,10 @@ authors = [""] compiler_version = ">=0.33.0" [dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/aztec" } -value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/value-note" } -easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/easy-private-state" } -token_portal_content_hash_lib = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.57.0", directory="noir-projects/noir-contracts/contracts/token_portal_content_hash_lib" } -token = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.57.0", directory="noir-projects/noir-contracts/contracts/token_contract" } -authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/aztec-nr/authwit" } -ecdsa = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.57.0", directory = "noir-projects/noir-contracts/contracts/ecdsa_k_account_contract"} \ No newline at end of file +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/aztec" } +value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/value-note" } +easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/easy-private-state" } +token_portal_content_hash_lib = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.60.0", directory="noir-projects/noir-contracts/contracts/token_portal_content_hash_lib" } +token = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.60.0", directory="noir-projects/noir-contracts/contracts/token_contract" } +authwit = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/aztec-nr/authwit" } +ecdsa = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "aztec-packages-v0.60.0", directory = "noir-projects/noir-contracts/contracts/ecdsa_k_account_contract"} \ No newline at end of file diff --git a/phantom-gate/contracts/counter/codegenCache.json b/phantom-gate/contracts/counter/codegenCache.json new file mode 100644 index 000000000..7c55ef39a --- /dev/null +++ b/phantom-gate/contracts/counter/codegenCache.json @@ -0,0 +1,6 @@ +{ + "counter-Counter.json": { + "contractName": "Counter", + "hash": "ae05b3db142bd2f379f7260441ae5f477d4ddb031f8d0b36a523e7617f09bbd3" + } +} \ No newline at end of file diff --git a/phantom-gate/contracts/counter/src/artifacts/Counter.ts b/phantom-gate/contracts/counter/src/artifacts/Counter.ts new file mode 100644 index 000000000..f8e6dcff2 --- /dev/null +++ b/phantom-gate/contracts/counter/src/artifacts/Counter.ts @@ -0,0 +1,155 @@ + +/* Autogenerated file, do not edit! */ + +/* eslint-disable */ +import { + type AbiType, + AztecAddress, + type AztecAddressLike, + CompleteAddress, + Contract, + type ContractArtifact, + ContractBase, + ContractFunctionInteraction, + type ContractInstanceWithAddress, + type ContractMethod, + type ContractStorageLayout, + type ContractNotes, + decodeFromAbi, + DeployMethod, + EthAddress, + type EthAddressLike, + EventSelector, + type FieldLike, + Fr, + type FunctionSelectorLike, + L1EventPayload, + loadContractArtifact, + type NoirCompiledContract, + NoteSelector, + Point, + type PublicKey, + PublicKeys, + type UnencryptedL2Log, + type Wallet, + type WrappedFieldLike, +} from '@aztec/aztec.js'; +import CounterContractArtifactJson from '../../target/counter-Counter.json' assert { type: 'json' }; +export const CounterContractArtifact = loadContractArtifact(CounterContractArtifactJson as NoirCompiledContract); + + + +/** + * Type-safe interface for contract Counter; + */ +export class CounterContract extends ContractBase { + + private constructor( + instance: ContractInstanceWithAddress, + wallet: Wallet, + ) { + super(instance, CounterContractArtifact, wallet); + } + + + + /** + * Creates a contract instance. + * @param address - The deployed contract's address. + * @param wallet - The wallet to use when interacting with the contract. + * @returns A promise that resolves to a new Contract instance. + */ + public static async at( + address: AztecAddress, + wallet: Wallet, + ) { + return Contract.at(address, CounterContract.artifact, wallet) as Promise; + } + + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy(wallet: Wallet, headstart: (bigint | number), owner: AztecAddressLike, outgoing_viewer: AztecAddressLike) { + return new DeployMethod(PublicKeys.default(), wallet, CounterContractArtifact, CounterContract.at, Array.from(arguments).slice(1)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet, headstart: (bigint | number), owner: AztecAddressLike, outgoing_viewer: AztecAddressLike) { + return new DeployMethod(publicKeys, wallet, CounterContractArtifact, CounterContract.at, Array.from(arguments).slice(2)); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet }, + ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeys ?? PublicKeys.default(), + opts.wallet, + CounterContractArtifact, + CounterContract.at, + Array.from(arguments).slice(1), + opts.method ?? 'constructor', + ); + } + + + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return CounterContractArtifact; + } + + + public static get storage(): ContractStorageLayout<'counters'> { + return { + counters: { + slot: new Fr(1n), + } + } as ContractStorageLayout<'counters'>; + } + + + public static get notes(): ContractNotes<'ValueNote' | 'EcdsaPublicKeyNote' | 'TokenNote' | 'TransparentNote'> { + return { + ValueNote: { + id: new NoteSelector(1038582377), + }, +EcdsaPublicKeyNote: { + id: new NoteSelector(79774112), + }, +TokenNote: { + id: new NoteSelector(2350566847), + }, +TransparentNote: { + id: new NoteSelector(3193649735), + } + } as ContractNotes<'ValueNote' | 'EcdsaPublicKeyNote' | 'TokenNote' | 'TransparentNote'>; + } + + + /** Type-safe wrappers for the public methods exposed by the contract. */ + public declare methods: { + + /** compute_note_hash_and_optionally_a_nullifier(contract_address: struct, nonce: field, storage_slot: field, note_type_id: field, compute_nullifier: boolean, serialized_note: array) */ + compute_note_hash_and_optionally_a_nullifier: ((contract_address: AztecAddressLike, nonce: FieldLike, storage_slot: FieldLike, note_type_id: FieldLike, compute_nullifier: boolean, serialized_note: FieldLike[]) => ContractFunctionInteraction) & Pick; + + /** constructor(headstart: integer, owner: struct, outgoing_viewer: struct) */ + constructor: ((headstart: (bigint | number), owner: AztecAddressLike, outgoing_viewer: AztecAddressLike) => ContractFunctionInteraction) & Pick; + + /** get_counter(owner: struct) */ + get_counter: ((owner: AztecAddressLike) => ContractFunctionInteraction) & Pick; + + /** increment(owner: struct, outgoing_viewer: struct) */ + increment: ((owner: AztecAddressLike, outgoing_viewer: AztecAddressLike) => ContractFunctionInteraction) & Pick; + }; + + +} diff --git a/phantom-gate/contracts/counter/src/main.nr b/phantom-gate/contracts/counter/src/main.nr index 57ece83f9..37242f8ca 100644 --- a/phantom-gate/contracts/counter/src/main.nr +++ b/phantom-gate/contracts/counter/src/main.nr @@ -75,13 +75,13 @@ contract Counter { ); // docs:end:txe_test_read_notes // Increment the counter - let increment_call_interface = Counter::at(contract_address).increment(owner, outgoing_viewer); - env.call_private_void(increment_call_interface); + Counter::at(contract_address).increment(owner, outgoing_viewer).call(&mut env.private()); // get_counter is an unconstrained function, so we call it directly (we're in the same module) let current_value_for_owner = get_counter(owner); let expected_current_value = initial_value + 1; assert( - expected_current_value == current_value_for_owner, f"Expected {expected_current_value} but got {current_value_for_owner}" + expected_current_value == current_value_for_owner, + f"Expected {expected_current_value} but got {current_value_for_owner}", ); } // docs:end:txe_test_increment diff --git a/phantom-gate/src/artifacts/Counter.ts b/phantom-gate/src/artifacts/Counter.ts index f4cf4545b..d5619c5fc 100644 --- a/phantom-gate/src/artifacts/Counter.ts +++ b/phantom-gate/src/artifacts/Counter.ts @@ -49,7 +49,7 @@ export class CounterContract extends ContractBase { // outgoing_viewer: AztecAddressLike ) { return new DeployMethod( - Fr.ZERO, + Fr.ZERO as any, wallet, CounterContractArtifact, CounterContract.at, @@ -68,7 +68,7 @@ export class CounterContract extends ContractBase { // outgoing_viewer: AztecAddressLike ) { return new DeployMethod( - publicKeysHash, + publicKeysHash as any, wallet, CounterContractArtifact, CounterContract.at, @@ -84,7 +84,7 @@ export class CounterContract extends ContractBase { // ...args: Parameters ) { return new DeployMethod( - opts.publicKeysHash ?? Fr.ZERO, + opts.publicKeysHash ?? Fr.ZERO as any, opts.wallet, CounterContractArtifact, CounterContract.at, diff --git a/phantom-gate/src/artifacts/SchnorrAccount.ts b/phantom-gate/src/artifacts/SchnorrAccount.ts index d87ac96b5..247fa9d9a 100644 --- a/phantom-gate/src/artifacts/SchnorrAccount.ts +++ b/phantom-gate/src/artifacts/SchnorrAccount.ts @@ -57,7 +57,7 @@ import SchnorrAccountContractArtifactJson from '../../contracts/account/target/a public static deploy(wallet: Wallet, // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike ) { - return new DeployMethod(Fr.ZERO, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); + return new DeployMethod(Fr.ZERO as any, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(1)); } /** @@ -66,7 +66,7 @@ import SchnorrAccountContractArtifactJson from '../../contracts/account/target/a public static deployWithPublicKeysHash(publicKeysHash: Fr, wallet: Wallet, // signing_pub_key_x: FieldLike, signing_pub_key_y: FieldLike ) { - return new DeployMethod(publicKeysHash, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); + return new DeployMethod(publicKeysHash as any, wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, Array.from(arguments).slice(2)); } /** @@ -77,7 +77,7 @@ import SchnorrAccountContractArtifactJson from '../../contracts/account/target/a // ...args: Parameters ) { return new DeployMethod( - opts.publicKeysHash ?? Fr.ZERO, + opts.publicKeysHash ?? Fr.ZERO as any, opts.wallet, SchnorrAccountContractArtifact, SchnorrAccountContract.at, diff --git a/phantom-gate/src/components/NftInteractions.tsx b/phantom-gate/src/components/NftInteractions.tsx index aacbb87fd..f7714abc0 100644 --- a/phantom-gate/src/components/NftInteractions.tsx +++ b/phantom-gate/src/components/NftInteractions.tsx @@ -1,6 +1,6 @@ import React, { useState } from "react"; import { useAccount } from "../hooks/useAccounts.js"; -import { AccountWalletWithSecretKey, AztecAddress, Fr } from "@aztec/aztec.js"; +import { AccountWalletWithSecretKey, AztecAddress } from "@aztec/aztec.js"; import { toast } from "react-hot-toast"; import { Loader } from "lucide-react"; import { NFTContract } from "@aztec/noir-contracts.js"; diff --git a/phantom-gate/src/components/WalletInteractions.tsx b/phantom-gate/src/components/WalletInteractions.tsx index bc45e150d..1aecfaf0a 100644 --- a/phantom-gate/src/components/WalletInteractions.tsx +++ b/phantom-gate/src/components/WalletInteractions.tsx @@ -100,7 +100,6 @@ export const WalletInteractions = () => { const [tab, setTab] = useState("Tokens"); const [deployTokenAddress, setDeployTokenAddress] = useState(""); const [nftContract, setNftContract] = useState(null); - const [walletVerifier, setWalletVerifier] = useState(""); useEffect(() => { // Simulated token data From dd087d368ac4ec8351df250d3780bfaab4b4c6b2 Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Sun, 3 Nov 2024 20:28:41 +0530 Subject: [PATCH 5/9] add demo video --- phantom-gate/README.md | 9 +++++++++ phantom-gate/index.html | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/phantom-gate/README.md b/phantom-gate/README.md index 141333395..793ef943f 100644 --- a/phantom-gate/README.md +++ b/phantom-gate/README.md @@ -6,6 +6,15 @@ ## System Architecture +## Challenge Selection + +- [ ] ZKEmail Guardian +- [x] Social Cipher + +## Video Demo + +https://drive.google.com/file/d/13nFoF6wLdBG9dmjEhVkuu7vEoUdDLtLY/view?usp=sharing + ### Components #### 1. Client-Side (PXE) diff --git a/phantom-gate/index.html b/phantom-gate/index.html index c7a07f771..78e54d242 100644 --- a/phantom-gate/index.html +++ b/phantom-gate/index.html @@ -4,7 +4,7 @@ - Aztec Starter + Phantom Gate From aeea6face3370d9501d3689761f15b882edf3ee8 Mon Sep 17 00:00:00 2001 From: ankit agrawal Date: Mon, 4 Nov 2024 15:27:20 +0530 Subject: [PATCH 6/9] add few changes in UI and update demo link --- phantom-gate/README.md | 2 +- phantom-gate/src/components/Admin.tsx | 205 ++++++++++++ .../src/components/EventInteractions.tsx | 304 ++++++++++++++++++ .../src/components/NftInteractions.tsx | 108 +++---- .../src/components/WalletInteractions.tsx | 22 +- 5 files changed, 571 insertions(+), 70 deletions(-) create mode 100644 phantom-gate/src/components/Admin.tsx create mode 100644 phantom-gate/src/components/EventInteractions.tsx diff --git a/phantom-gate/README.md b/phantom-gate/README.md index 793ef943f..b6f91ad18 100644 --- a/phantom-gate/README.md +++ b/phantom-gate/README.md @@ -13,7 +13,7 @@ ## Video Demo -https://drive.google.com/file/d/13nFoF6wLdBG9dmjEhVkuu7vEoUdDLtLY/view?usp=sharing +https://drive.google.com/file/d/18d6teeO3AaEkc0og0u-o10yNMIXbd_-V/view?usp=sharing ### Components diff --git a/phantom-gate/src/components/Admin.tsx b/phantom-gate/src/components/Admin.tsx new file mode 100644 index 000000000..ca8d42b1e --- /dev/null +++ b/phantom-gate/src/components/Admin.tsx @@ -0,0 +1,205 @@ +import React, { useState } from "react"; +import { AccountWalletWithSecretKey } from "@aztec/aztec.js"; +import { toast } from "react-hot-toast"; +import { Loader, MapPin, Users } from "lucide-react"; +import { useAccount } from "../hooks/useAccounts.js"; +import { NFTContract } from "@aztec/noir-contracts.js"; + +interface AdminProps { + currentWallet: AccountWalletWithSecretKey | null; + eventContract: any | null; + isAdmin?: boolean; + setNftContract: (contract: NFTContract) => void; +} + +interface EventFormData { + title: string; + description: string; + location: string; + maxAttendees: number; +} + +export const Admin = ({ + currentWallet, + eventContract, + isAdmin=true, + setNftContract +}: AdminProps) => { + const {deployNFtToken} = useAccount() + const [isLoading, setIsLoading] = useState<{ + isCreatingEvent?: boolean; + isUploadingImage?: boolean; + }>({ + isCreatingEvent: false, + isUploadingImage: false, + }); + + const [formData, setFormData] = useState({ + title: "", + description: "", + location: "", + maxAttendees: 100, + }); + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData(prev => ({ + ...prev, + [name]: value + })); + }; + + const handleCreateEvent = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!currentWallet) { + toast.error("Please connect your wallet"); + return; + } + + if (!isAdmin) { + toast.error("Only admins can create events"); + return; + } + + setIsLoading({ ...isLoading, isCreatingEvent: true }); + try { + // Format the date and time for blockchain storage + + // const tx = await eventContract.methods + // .createEvent( + // formData.title, + // formData.description, + // formData.location, + // formData.maxAttendees, + // AztecAddress.fromString(formData.requiredNftAddress), + // BigInt(parseFloat(formData.eventPrice) * 1e18) // Convert ETH to Wei + // ) + // .send(); + + // console.log(`Sent create event transaction ${await tx.getTxHash()}`); + // toast.success("Event created successfully!"); + + // const receipt = await tx.wait(); + // console.log(`Transaction mined on block ${receipt.blockNumber}`); + + // Reset form after successful creation + const nftContract = await deployNFtToken( + currentWallet, + formData?.title || "Phantom Gate", + "PHOG" + ); + + setNftContract(nftContract as NFTContract); + toast.success("NFT Token deployed successfully!"); + setFormData({ + title: "", + description: "", + + location: "", + maxAttendees: 100, + // requiredNftAddress: "", + }); + } catch (error) { + console.error("Create event error:", error); + toast.error("Failed to create event"); + } finally { + setIsLoading({ ...isLoading, isCreatingEvent: false }); + } + }; + + if (!isAdmin) { + return ( +
+

Access Denied

+

Only administrators can access the event creation page.

+
+ ); + } + + return ( +
+

Create New Event

+ +
+
+ {/* Title Input */} +
+ + +
+ + {/* Description Input */} +
+ +